MySQL數(shù)據(jù)庫(kù)無(wú)法遠(yuǎn)程連接的問(wèn)題詳細(xì)解決過(guò)程
前言
在使用 MySQL 數(shù)據(jù)庫(kù)時(shí),遇到這樣的問(wèn)題:
本地可以連接 MySQL,但遠(yuǎn)程機(jī)器連接時(shí),總是報(bào)錯(cuò)
Host ... is not allowed to connect to this MySQL server。
這通常是因?yàn)?MySQL 的用戶權(quán)限或配置限制了遠(yuǎn)程訪問(wèn)。
1. 登錄 MySQL 數(shù)據(jù)庫(kù)
首先,使用本地命令行登錄 MySQL:
mysql -u root -p
輸入 root 用戶的密碼進(jìn)入數(shù)據(jù)庫(kù)。
2. 切換到 mysql 系統(tǒng)庫(kù)
MySQL 的用戶權(quán)限存放在 mysql 數(shù)據(jù)庫(kù)中,我們需要切換到它:
USE mysql;
3. 查看當(dāng)前用戶和主機(jī)權(quán)限
執(zhí)行以下命令查看當(dāng)前 MySQL 用戶的 host 設(shè)置:
SELECT User, Host FROM mysql.user;
你會(huì)看到一張表,例如:
+------------------+-----------+ | User | Host | +------------------+-----------+ | root | localhost | | mysql.session | localhost | | mysql.sys | localhost | +------------------+-----------+
注意到 root 用戶的 Host 是 localhost,這表示它 只能從本機(jī)連接,無(wú)法被遠(yuǎn)程機(jī)器連接。
4. 修改 root 用戶的 Host 為 %
要允許 root 用戶從任意主機(jī)連接,需要把它的 Host 改成 %(表示任意主機(jī)):
UPDATE mysql.user SET host='%' WHERE user='root' AND host='localhost';
5. 刷新權(quán)限生效
修改完權(quán)限后,需要刷新權(quán)限表才能生效:
FLUSH PRIVILEGES;
執(zhí)行以下命令查看當(dāng)前 MySQL 用戶的 host 設(shè)置:
SELECT User, Host FROM mysql.user;
你會(huì)看到一張表,root的host被設(shè)置為了%,表示可以接受遠(yuǎn)程連接
+------------------+-----------+ | User | Host | +------------------+-----------+ | root | % | | mysql.session | localhost | | mysql.sys | localhost | +------------------+-----------+
不出意外的話,現(xiàn)在你已經(jīng)可以進(jìn)行遠(yuǎn)程連接了,如果還有問(wèn)題可以進(jìn)行6-7的排查
6. 檢查 MySQL 配置文件
有時(shí)候,MySQL 的配置文件 my.cnf(或 my.ini)會(huì)限制綁定的地址,默認(rèn)只監(jiān)聽(tīng) 127.0.0.1。
打開(kāi)配置文件:
vim /etc/my.cnf
找到
[mysqld]部分,修改:bind-address = 0.0.0.0
這表示監(jiān)聽(tīng)所有 IP,而不僅是本機(jī)。
保存后,重啟 MySQL:
systemctl restart mysqld
7. 確認(rèn)防火墻是否開(kāi)放 3306 端口
MySQL 默認(rèn)端口是 3306,linux為例確保服務(wù)器防火墻允許遠(yuǎn)程訪問(wèn):
# 查看防火墻狀態(tài) firewall-cmd --list-all # 開(kāi)放 3306 端口(僅 firewalld 示例) firewall-cmd --add-port=3306/tcp --permanent firewall-cmd --reload
8. 總結(jié)
要解決 MySQL 無(wú)法遠(yuǎn)程連接的問(wèn)題,可以按照下面的步驟排查:
- 修改
mysql.user表,把 root 的Host改為% - 刷新權(quán)限
- 檢查是否可以鏈接,不可以的話需要檢查配置和端口防火墻
- 檢查
my.cnf配置,確保bind-address是0.0.0.0 - 檢查防火墻是否開(kāi)放 3306 端口
到此這篇關(guān)于MySQL數(shù)據(jù)庫(kù)無(wú)法遠(yuǎn)程連接問(wèn)題的文章就介紹到這了,更多相關(guān)MySQL數(shù)據(jù)庫(kù)無(wú)法遠(yuǎn)程連接內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- navicat無(wú)法遠(yuǎn)程連接mysql的解決方法
- 解決MySQL無(wú)法遠(yuǎn)程連接的方法
- Centos7下無(wú)法遠(yuǎn)程連接mysql數(shù)據(jù)庫(kù)的原因與解決
- Navicat出現(xiàn)無(wú)法遠(yuǎn)程連接MySql服務(wù)器問(wèn)題的解決辦法
- mysql8.0數(shù)據(jù)庫(kù)無(wú)法被遠(yuǎn)程連接問(wèn)題排查小結(jié)
- MySQL8.0無(wú)法遠(yuǎn)程連接訪問(wèn)的解決方法
- 解決阿里云ECS服務(wù)器下安裝MySQL無(wú)法遠(yuǎn)程連接的問(wèn)題
相關(guān)文章
MYSQL同步 Slave_IO_Running: No 或者Slave_SQL_Running: No的解決方法[已測(cè)
為了服務(wù)器更好的安全特將mysql服務(wù)器同步一下,show slave status\G出現(xiàn)了Slave_IO_Running: No 錯(cuò)誤,特整理了下,方便以后配置2011-06-06
mysql 無(wú)法聯(lián)接常見(jiàn)故障及原因分析
這篇文章主要介紹了mysql 無(wú)法聯(lián)接常見(jiàn)故障及原因分析,本文是小編日常收集整理的,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-11-11
mysql和oracle默認(rèn)排序的方法 - 不指定order by
這篇文章主要介紹了mysql和oracle默認(rèn)排序的方法 - 不指定order by。具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07
MySQL 8.0 之索引跳躍掃描(Index Skip Scan)
這篇文章主要介紹了MySQL 8.0 之索引跳躍掃描(Index Skip Scan)的相關(guān)資料,幫助大家學(xué)習(xí)MySQL8.0的新特性,感興趣的朋友可以了解下2020-10-10
MySQL數(shù)據(jù)表索引命名規(guī)范的實(shí)現(xiàn)示例
索引是提高查詢性能的重要工具,本文主要介紹了MySQL數(shù)據(jù)表索引命名規(guī)范的實(shí)現(xiàn)示例,包括不同類型索引的命名方法,具有一定的參考價(jià)值,感興趣的可以了解一下2024-05-05

