我在远程服务器上安装了一个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