遠程連接MySQL服務器


在CentOS虛擬機上安裝好了MySQL服務以后,在windows上用Workbench客戶端去連接時碰到很多問題,現在把解決過程記錄一下。

1.在Windows上ping CentOS IP是可以ping通的,在Workbench上配置好后出現如下提示,

在Windows命令行里輸入 telnet 192.168.199.129 3306 執行,也得到:could not open connection to the host, on port 3306 這樣的提示。

在網上查了一下,覺得可能是3306端口沒有打開,先檢查一下3306端口的使用情況,

3306這個端口沒有被別的進程占用。然后看看防火牆的情況,CentOS7中防火牆改成了firewall,查看firewall的服務狀態,

firewall防火牆正在運行。接下來查詢3306端口是否開放,輸入 firewall-cmd --query-port=3306/tcp,如果顯示的是no,則輸入 firewall-cmd --permanent --add-port=3306/tcp 開放3306端口,

重啟防火牆,輸入 firewall-cmd --reload。

 

2.完成以上步驟后,再次在Windows命令行中輸入 telnet 192.168.199.129 3306 執行,得到類似:host is not allowed to connect mysql 這樣的提示。

在網上查了一下,似乎是權限的問題,一般有兩個途徑,

第一個方法,可能是你的帳號不允許從遠程登陸,只能在localhost。這個時候只要在localhost的那台電腦,登入mysql后,更改 "mysql" 數據庫里的 "user" 表里的 "host" 項,從"localhost"改稱"%",

在CentOS虛擬機中進去MySQL,用下面的語句,

mysql>use mysql;

mysql>update user set host = '%' where user = 'root';

mysql>select host, user from user;

但是改完了后,還是不行,還是提示 host is not allowed to connect mysql。

試第二個方法,授權,例如你想myuser使用mypassword從任何主機連接到MySQL服務器的話,用下面的語句,

mysql>grant all privileges on *.* to 'myuser'@'%' identified by 'mypassword' with grant option;

mysql>flush privileges;

執行完后成功了,可以用workbench連接上MySQL服務了。

 

===============================================7月4號添加

有時在上述操作都完成后,連接服務器時還是會報錯: Authentication plugin 'caching_sha2_password' cannot be loaded, 這是因為mysql 8.0 默認使用 caching_sha2_password 身份驗證機制 —— 從原來的 mysql_native_password 更改為 caching_sha2_password。 
從 5.7 升級 8.0 版本的不會改變現有用戶的身份驗證方法,但新用戶會默認使用新的 caching_sha2_password 。

方法之一,修改用戶的密碼和加密方式

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';

這里的用戶名和密碼根據實際情況來輸入。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM