我已经创建了一个用户并授予该用户完全访问权限,但 MySQL 仍然拒绝该用户访问 - 为什么?
创建用户:
create user 'myUser'@'Mikes-MacBook-Air.local' identified by 'account_password'
授予所有数据库权限:
grant all privileges on *.* to 'myUser'@'Mikes-MacBook-Air.local' identified by 'account_password' with grant option
已验证的授权:
show grants for 'myUser'@'Mikes-MacBook-Air.local'
MySQL 在 IP 为 192.168.0.2 的机器上运行(已验证),客户端从 IP 为 192.168.0.3 的机器连接。我甚至创建了一个以 IP 为域的用户帐户:
创建用户:
create user 'myUser'@'192.168.0.3' identified by 'account_password'
授予所有数据库权限:
grant all privileges on *.* to 'myUser'@'192.168.0.3' identified by 'account_password' with grant option
已验证的授权:
show grants for 'myUser'@'192.168.0.3'
我已重启两台机器,并确认 IP 地址没有改变,MySQL 正在运行。我可以从同一台客户端机器(尽管凭据不同)毫无问题地从 Workbench 访问此 MySQL 服务器。我还可以从另一台远程客户端机器访问此 MySQL 实例,其中用户在其他计算机域中拥有类似的 MySQL 帐户。
经过这一切,我仍然收到异常:
Exception: Access denied for user 'myUser'@'Mikes-MacBook-Air.local' (using password: YES)
为什么 MySQL 拒绝访问?
答案1
它尝试使用用户名“Mikes-MacBook-Air.local”而不是“myUser”进行连接。当您收到错误消息时,您用于连接的确切命令是什么?
答案2
您的 my.cnf 中是否有 skip-resolv ?如果是,MySQL 将不会使用主机名检查 ACL。
一般情况下,避免在 MySQL ACL 中使用主机名,始终使用 IP 或网络。然后在配置中添加 skip-resolv,您将获得更好的连接性能。