最近筆者遇到了一個(gè)奇怪的問(wèn)題,在使用 mysql 8.0 版本時(shí),無(wú)法遠(yuǎn)程連接到服務(wù)器。在本地連接正常的情況下,經(jīng)過(guò)一番排查,終于找到了解決方法。
首先,我們需要確保 mysql 服務(wù)已經(jīng)正確配置了遠(yuǎn)程連接。
# 在 my.cnf (mysql配置文件) 中加入以下內(nèi)容
[mysqld]
...
bind-address = 0.0.0.0
...
然后,我們需要在 mysql 數(shù)據(jù)庫(kù)中授權(quán)遠(yuǎn)程訪問(wèn)權(quán)限。
# 登錄 mysql 數(shù)據(jù)庫(kù)
$ mysql -u root -p
# 然后輸入密碼即可
Enter password:
# 授權(quán)遠(yuǎn)程訪問(wèn)權(quán)限
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
mysql>FLUSH PRIVILEGES;
mysql>EXIT
此時(shí),我們似乎已經(jīng)能夠遠(yuǎn)程連接上 mysql 服務(wù)器了,但是實(shí)際運(yùn)行時(shí)卻發(fā)現(xiàn)仍然無(wú)法連接,錯(cuò)誤信息如下:
$ mysql -h xxx.xxx.xxx.xxx -u root -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'xxx.xxx.xxx.xxx' (using password: YES)
解決方法是,我們需要重新創(chuàng)建一個(gè)用戶,并且注意使用 mysql_native_password 進(jìn)行認(rèn)證。
# 登錄 mysql 數(shù)據(jù)庫(kù)
$ mysql -u root -p
# 然后輸入密碼即可
Enter password:
# 創(chuàng)建一個(gè)新用戶
mysql>CREATE USER 'new_user'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
mysql>GRANT ALL PRIVILEGES ON *.* TO 'new_user'@'%' WITH GRANT OPTION;
mysql>FLUSH PRIVILEGES;
mysql>EXIT
以上就是筆者遇到的 mysql 8.0 遠(yuǎn)程連接問(wèn)題的解決方法。相信如果您也遇到了同樣的問(wèn)題,在按照以上方法配置后,您也能夠順利連接上 mysql 服務(wù)器。