標籤:
以前學習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命令都必須以“;”結束,否則報錯,或質性不成功。
實現用戶端串連Mysql資料庫伺服器