我们重新启动了一台运行mysql的机器,现在出现了一些奇怪的问题。来自其他机器的大多数进程都能够正常连接,如果我们通过显式地连接回环地址来本地连接也是可以的。
以下内容可正常工作:
当我们运行以下命令时:
我们有以下用户:
我们已经通过添加以下用户解决了此问题:
以下内容可正常工作:
mysql -hlocalhost -utest_user -psecret_password
当我们运行以下命令时:
mysql -h192.168.1.10 -utest_user -psecret_password
在本地机器上,我们会得到以下错误:
ERROR 1045 (28000): Access denied for user `test_user`@`SERVER_123`
我们有以下用户:
test_user@localhost
test_user@%
我们已经通过添加以下用户解决了此问题:
test_user@SERVER_123
其中SERVER_123是机器的未经过资格认证的名称。
我们不知道为什么必须添加该附加用户,也不想保留它,但我们也不知道为什么添加它会解决问题。
为什么通过IP从本地机器连接(即mysql -ha.b.c.d -utest_user -ppsswd)无法匹配test_user@%用户,但可以匹配test_user@machine_name,其中machine_name是机器的未经过资格认证的名称?
这是用户表:
anonymous % anonymous SERVER_123 anonymous localhost test_user_2 % test_user_3 % root ::1 root 127.0.0.1 root SERVER_123 root localhost
注意:找到了问题所在。某种方式重启机器必须改变192.168.1.10的解析方式,使其解析为SERVER_123。这样就导致来自192.168.1.10的登录与test_user@SERVER_123匹配。