配置mysql允許遠程鏈接


默認情況下,mysql帳號不允許從遠程登陸,只能在localhost登錄。本文提供了二種方法設置mysql可以通過遠程主機進行連接。

修改用戶表的數據

登入mysql后,更改 mysql 數據庫里的 user 表里的 host 項,將localhost改稱%

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

修改授權

例如: 你想myuser使用mypassword(密碼)從任何主機連接到mysql服務器的話。

mysql>GRANT ALL PRIVILEGES ON . TO ‘myuser’@’%’IDENTIFIED BY ‘mypassword’ WITH GRANT OPTION;
mysql>FLUSH PRIVILEGES

例如:如果你想允許用戶myuser從ip為192.168.1.6的主機連接到mysql服務器,並使用mypassword作為密碼

mysql>GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.3'IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
mysql>FLUSH PRIVILEGES

檢查防火牆

如果還不能連接,就可能是防火牆的鍋了。

#通過systemctl status firewalld查看firewalld狀態
#FirewallD is not running
systemctl unmask firewalld            

systemctl start firewalld
#再次通過systemctl status firewalld查看firewalld狀態,顯示running即已開啟了。
#再次執行執行firewall-cmd --permanent --zone=public --add-port=3306/tcp,提示success,表示設置成功,這樣就可以繼續后面的設置了。
firewall-cmd --reload


systemctl stop firewalld.service   #關閉防火牆

修改mysql配置文件

如果檢查了防火牆還是不行,那就用最后一招,修改配置文件(博主用了最后一招才解決遠程訪問的問題)

my.cnf配置文件的位置,一般在/etc/my.cnf,有些版本在/etc/mysql/my.cnf

在配置文件中,增加2行代碼

[mysqld]
bind-address = 0.0.0.0

重啟服務,遠程訪問,發現可以正常訪問了

p.s.

mysql8.0版本配置方法不同,按照上述方法配置之后,Navicat可以正常連接,但是nodejs代碼連接報錯

Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client

解決辦法(修改加密規則為普通模式,默認是嚴格加密模式):

依次輸入以下語句

mysql>ALTER USER 'root'@'%' IDENTIFIED BY 'xxxxxxxx' PASSWORD EXPIRE NEVER
mysql>ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'xxxxxxxx';
mysql>FLUSH PRIVILEGES;

nodejs測試數據庫連接,應該就可以使用了


免責聲明!

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



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