[英]Access denied to remote MySQL connection request
我在遠程服務器上安裝了mysql數據庫(v5.5.41),一個應用程序從另一台服務器連接到數據庫以運行一些查詢。 一切正常,但是最近我的數據庫服務器有了一個新的IP地址。 我的應用程序無法再連接到數據庫,連接超時。
該應用程序使用的是服務器的DNS名稱,而不是硬編碼的IP,因此應該沒有問題。 無論如何,如果我從應用程序服務器運行此命令:
mysql -u app_user -h mydb.myhost.com -p
然后我得到
ERROR 1045 (28000): Access denied for user 'app_user'@'xxx.xxx.xxx.xxx' (using password: YES)
如果在查找新IP時遇到問題,那么該命令可能只是掛起並超時,因此似乎是身份驗證問題。 我的密碼絕對正確,但是該應用程序使用的密碼與該應用程序成功連接時使用的密碼相同,因此這不是誤輸入密碼的問題。
我嘗試從數據庫中刪除用戶app_user
並重新創建,就像開始時一樣:
CREATE USER 'app_user'@'xxx.xxx.xxx.xxx' IDENTIFIED BY 'mypassword';
GRANT SELECT ON mydb.* TO 'app_user'@'xxx.xxx.xxx.xxx' IDENTIFIED BY 'mypassword' REQUIRE SSL;
FLUSH PRIVILEGES;
我不確定DB服務器IP更改是否只是一個巧合,也許還有其他問題。
select user, host from mysql.user
中的select user, host from mysql.user
app_user
條目顯示的IP地址與上面的Access Denied
消息相同。 對於它的價值,我嘗試將數據庫用戶主機更改為*
並且Host 'xxx.xxx.xxx.xxx' is not allowed to connect to this MySQL server
。
這可能與該用戶的連接嘗試所需的SSL有關嗎?
問題與我的用戶權限中的REQUIRE SSL有關。 沒有它,我就可以正常連接。 通過將我的client-cert.pem和client-key.pem文件放在應用服務器上,並通過添加以下內容更新了my.cnf
,我再次使工作正常:
ssl-cert = /path/to/client-cert.pem
ssl-key = /path/to/client-key.pem
...在[client]
部分下,並重新啟動了mysql服務器。
但是,我仍然不明白為什么我在沒有做任何這些事情之前就能成功連接。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.