準備數據庫
這裏準備一個一主多從的傳統架構數據庫:一主多從
Master | 172.18.0.13 | 3306 |
Slave1 | 172.18.0.14 | 3306 |
Slave2 | 172.18.0.30 | 3306 |
準備Mycat所需要的用戶
mycat需要兩個用戶用來執行用戶通過mycat執行的操作,當程序需要對錶進行查詢操作時,mycat將會使用mycat_r進行執行查詢,當然你肯定很疑惑,明明用mycat_w進行查詢不是更好嗎,先不要急,慢慢往下看
用戶名(名字可以DIY) | 權限 | 作用 |
mycat_r | SELECT,EXECUTE | mycat用來執行查詢數據 |
mycat_w | CREATE,DELECT,INSERT,SELECT,UPDATE,DROP | mycat用來執行增刪改查 |
創建用戶:
[root@DEPCDB01 ~]# mysql -uroot -S /mysql/3306/3306.sock mysql> GRANT CREATE,DELETE,INSERT,SELECT,UPDATE,DROP ON *.* TO 'mycat_w'@'%' IDENTIFIED BY 'mycat_w'; mysql> GRANT SELECT ON *.* TO 'mycat_r'@'%' IDENTIFIED BY 'mycat_r'; mysql> FLUSH PRIVILEGES;
創建完畢後查詢權限:
mysql> show grants for mycat_r@'%'; +------------------------------------------------------------------------------------------------------------------+ | Grants for mycat_r@% | +------------------------------------------------------------------------------------------------------------------+ | GRANT SELECT, EXECUTE ON *.* TO 'mycat_r'@'%' IDENTIFIED BY PASSWORD '*D725A7BAA54B53033B1ECB9C72130E1F1B9CFFBA' | +------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec) mysql> show grants for mycat_w@'%'; +-----------------------------------------------------------------------------------------------------------------+ | Grants for mycat_w@% | +-----------------------------------------------------------------------------------------------------------------+ | GRANT ALL PRIVILEGES ON *.* TO 'mycat_w'@'%' IDENTIFIED BY PASSWORD '*081A240A9BF3E6235C18EE43622D0FE948D4240F' | +-----------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec)
檢查兩臺從庫這個用戶有沒有同步過來:
[root@DEPCDB02 ~]# mysql -uroot -S /mysql/3306/3306.sock mysql> select user,host from mysql.user; +------------+---------------------+ | user | host | +------------+---------------------+ | mycat_r | % | | mycat_w | % | +------------+---------------------+ 9 rows in set (0.00 sec) [root@DEPCDB03 ~]# mysql -uroot -S /mysql/3306/3306.sock mysql> select user,host from mysql.user; +------------+---------------------+ | user | host | +------------+---------------------+ | mycat_r | % | | mycat_w | % | +------------+---------------------+ 9 rows in set (0.00 sec)
* 上面的步驟可能不太嚴謹,在生產環境中創建的用戶登陸上需要進行對IP段進行限制