我在远程服务器上设置了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;
我不确定数据库服务器IP更改是否只是巧合,可能还有其他一些问题。
app_user
中select user, host from mysql.user
的条目显示的IP地址与上面Access Denied
消息中的IP地址相同。对于它的价值,我尝试将数据库用户主机更改为*
并获得Host 'xxx.xxx.xxx.xxx' is not allowed to connect to this MySQL server
。
这可能与此用户的连接尝试需要SSL有关吗?
答案 0 :(得分:0)
问题与我的用户权限中的REQUIRE SSL有关。没有它,我可以连接得很好。通过将我的client-cert.pem和client-key.pem文件放在应用程序服务器上,通过添加:{/ p>更新my.cnf
,我的工作再次
ssl-cert = /path/to/client-cert.pem
ssl-key = /path/to/client-key.pem
...在[client]
部分下,重新启动了mysql服务器。
但是,我仍然不明白为什么我在之前能够成功连接,而我没有做过这些事情。