以前學習mysql的時候,都是部署在本機,這樣不存在客戶端主機與服務器主機連接的問題,都是直接用localhost登錄就行。
今天因項目需要,我們把mysql部署在服務器上,然后客戶端裝了client,這樣就遇到客戶端連接數據庫服務器的問題。折騰了蠻久,發現即使是默認的root賬戶也沒能連上服務器。把今天的解決過程記錄如下:
1、在服務器上安裝好mysql server 后,在公司內網開通3306端口(mysql的默認端口);同時,服務器也要支持外網的訪問,又增加外網端口的訪問權限。最后,在客戶端主機,通過"telnet"命令,檢查3306端口已經可以通過客戶端主機連接了。
2、客戶端裝好mysql client,發現root用戶無法連接,也就是客戶端無法用workbench實現數據庫、用戶、數據表等的操作。這里有兩個辦法,一個是直接先授權root用戶,可以在任何主機訪問,然后再新建數據庫、添加表等;另一種方法,是通過服務器端mysql指令,添加新數據庫,新的用戶,然后賦予用戶所有主機的連接權限,算是一步到位。
方法一: 將root用戶的權限改成任何主機都能訪問:
在服務器上,運行MySQL 5.7 Command Line Client,然后執行以下命令:
(1)use mysql; 進入mysql數據庫
(2)select host,user,password from user; 查詢數據庫的用戶信息
(3)update user set host='%' where host='localhost'; 將上表中root的訪問主機改為所有
(4)flush privileges; 刷新權限
(5)exit; 退出mysql
完成以上步驟,在客戶端主機workbench中,用root/password,即可登陸了。
方法二:直接通過mysql命令,創建數據庫,用戶信息,以及客戶端主機訪問權限設置。
在服務器上,運行MySQL 5.7 Command Line Client,然后執行以下命令:
(1)show databases; 查看mysql服務器上已經存在的數據庫。下面新建時,避免建重復的數據庫
(2)create database SZY; 創建數據庫“SZY”
(3)create user szy identified by "szy"; 創建szy用戶,設定密碼szy
(4)grant all privileges on SZY.*to'szy'@'%'identified by 'szy' with grant option; 給用戶賦予指定數據庫的所有權限,並允許任何客戶端主機連接
(5)flush privileges; 刷新上面權限設置
(6)exit; 退出mysql
完成以上命令,在客戶端嘗試連接,如下:

注意:關於sql命令直接在服務器上的mysql命令管理器質性就行;每個sql命令都必須以“;”結束,否則報錯,或質性不成功。
