最近在使用MySQL時遇到了多賬號遠程連接不上的問題,癥狀為通過命令行或者Navicat等客戶端工具連接均報錯,無法連接到數據庫。
首先,我們需要確認遠程連接是否被允許。在MySQL的配置文件my.ini或my.cnf中,找到bind-address一項。如果是默認值0.0.0.0,則表示允許任何地址的主機連接。如果設置為127.0.0.1,則只允許本地連接。
# MySQL的配置文件my.ini或my.cnf [mysqld] ... # 默認允許任何地址的主機連接 # bind-address=0.0.0.0 # 只允許本地連接 # bind-address=127.0.0.1 ...
其次,需要檢查遠程連接的用戶名和密碼是否正確。可以通過命令行登錄MySQL,然后使用SHOW GRANTS FOR 'username'@'%'查看該用戶的權限。如果沒有權限,則需要通過GRANT命令授權。
# 授權指定IP的賬號,允許從任意IP登錄 GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' IDENTIFIED BY 'password' # 授權指定IP的賬號,只允許從指定IP登錄 # GRANT ALL PRIVILEGES ON *.* TO 'username'@'192.168.1.100' IDENTIFIED BY 'password'
還需要注意的是,MySQL的認證方式有多種,例如mysql_native_password、caching_sha2_password等。如果客戶端使用的是mysql_native_password方式,而MySQL的用戶使用了caching_sha2_password,則會無法連接。需要將MySQL的方式改成mysql_native_password。
# 修改MySQL的認證方式 ALTER USER 'username'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
綜上,如果使用MySQL遇到多賬號遠程連接不上的情況,可以通過以上的方法依次排查。
上一篇mysql多項篩選
下一篇mysql多路徑配置