我在遠程服務器上安裝了一個mysql數據庫(v5.5.41)安裝程序,應用程序從另一臺服務器連接到數據庫以運行一些查詢。它一直工作正常,但最近我的數據庫服務器有一個新的IP地址。我的應用程序無法連接到數據庫,連接超時。拒絕遠程MySQL連接請求的訪問
應用程序正在使用服務器的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變化只是巧合,也許還有其他一些問題。
app_user
的條目在select user, host from mysql.user
中顯示與上面的Access Denied
消息相同的IP地址。對於它的價值,我試着將DB用戶主機更改爲*
,並得到Host 'xxx.xxx.xxx.xxx' is not allowed to connect to this MySQL server
。
這可能與該用戶的連接嘗試所需的SSL有關嗎?
可能您的IP地址已更改(xxx.xxx.xxx.xxx部分)。您可以更改權限以允許名爲app_user @ *的用戶查看是否允許您連接。 – Giles
嘗試這裏一行這裏http://stackoverflow.com/a/31375124/1816093當然,改變數據庫名稱和用戶名,但不是'%' – Drew
你真的希望他打開所有的門,讓任何人無聊玩他的SQL -服務器?不是一個好主意德魯。更好的想法是使用Giles方法 - 如果他沒有靜態IP,他應該爲他的應用程序嘗試一個代理 - 也許他可以使用他自己的服務器作爲代理。 – SophieXLove64