MySQL8.0允許外部訪問


MySQL8.0允許外部訪問

版權聲明:本文為博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
本文鏈接: https://blog.csdn.net/h996666/article/details/80921913

一、前置條件:

按照https://blog.csdn.net/h996666/article/details/80917268安裝完MySQL之后。

二、開始修改配置:

1,登進MySQL之后,

2,輸入以下語句,進入mysql庫:

use mysql

3,更新域屬性,'%'表示允許外部訪問:

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

4,執行以上語句之后再執行:

FLUSH PRIVILEGES;

5,再執行授權語句:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'WITH GRANT OPTION;

然后外部就可以通過賬戶密碼訪問了。

6,其它說明:

FLUSH PRIVILEGES; 命令本質上的作用是:

將當前user和privilige表中的用戶信息/權限設置從mysql庫(MySQL數據庫的內置庫)中提取到內存里。

MySQL用戶數據和權限有修改后,希望在"不重啟MySQL服務"的情況下直接生效,那么就需要執行這個命令。

通常是在修改ROOT帳號的設置后,怕重啟后無法再登錄進來,那么直接flush之后就可以看權限設置是否生效。

而不必冒太大風險。

三、可能存在的其它問題:

執行完之后,再用Navicat連接mysql,報錯如下:

Client does not support authentication protocol requested by server;

報錯原因:

mysql8.0 引入了新特性 caching_sha2_password;這種密碼加密方式Navicat 12以下客戶端不支持;

Navicat 12以下客戶端支持的是mysql_native_password 這種加密方式;

解決方案:

1,用如下語句查看MySQL當前加密方式

select host,user,plugin from user;

查詢結果

  1.  
    +-----------+------------------+-----------------------+
  2.  
    | host | user | plugin |
  3.  
    +-----------+------------------+-----------------------+
  4.  
    | % | root | caching_sha2_password |
  5.  
    | localhost | mysql.infoschema | mysql_native_password |
  6.  
    | localhost | mysql.session | mysql_native_password |
  7.  
    | localhost | mysql.sys | mysql_native_password |
  8.  
    +-----------+------------------+-----------------------+

看第一行,root加密方式為caching_sha2_password。

2,使用命令將他修改成mysql_native_password加密模式:

update user set plugin='mysql_native_password' where user='root';

再次連接的時候,就成功了。

四、如果還連接不上

通過以上操作后,依然無法連接上,問題可能出在了防火牆上。

1,MySQL部署在實體服務器上解決方案如下:
a.開放MySQL的端口號,默認端口號是3306。
b.直接關閉防火牆(慎重操作,不建議。當然測試玩的話就隨意了。。。。)

2,MySQL部署在雲計算機上的方案如下:
a.以阿里雲為例,找到實例,設置安全組,開放端口號即可。


免責聲明!

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



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