我无法连接到 mysql 数据库,因为它总是将 192.168.1.101 更改为 ubuntu.local。
$ mysql -uroot -padmin1234 -h192.168.1.101 错误 1045(28000):拒绝用户“root”@“ubuntu.local”访问(使用密码:是)
我该如何解决这个问题。
文件:本机的 /etc/hosts
127.0.0.1 本地主机 127.0.1.1 ubuntu.ubuntu-域 ubuntu # 对于支持 IPv6 的主机,以下几行是理想的 ::1 本地主机 ip6-本地主机 ip6-环回 fe00::0 ip6-本地网络 ff00::0 ip6-mcast前缀 ff02::1 ip6-所有节点 ff02::2 ip6-所有路由器 ff02::3 ip6-所有主机
我不知道“root'@'ubuntu.local”是从哪里来的。
答案1
“ubuntu.local” 可能来自 MySQL 服务器,而不是您尝试连接的客户端。检查该机器上的 /etc/hosts 是否有与 192.168.1.102(或您的客户端机器的 IP)相关的条目。它也可能(不太可能)从某处设置的反向 DNS(可能是您的路由器?)获取该名称。
拒绝访问语句只是 MySQL 拒绝主机/用户名/密码。尝试
select * from mysql.users where user = 'root';
并查看是否有任何返回内容列出客户端计算机的 IP 地址或主机名。确保密码相同(root@localhost 的密码可以与[电子邮件保护])。
答案2
localhost
代替 192.168.1.101使用
事实上,为什么要特别指定它呢?
您可能尝试以 root 身份登录 mysql,但错误消息表明您也以 root 身份登录 Ubuntu。这没有必要。这两个“root”用户完全不同。
以普通用户身份登录 Ubuntu。然后以 root 身份登录 mysql(这是 mysql root 用户的正确密码吗?安装 mysql 时是否指定了 mysql root 密码?如果没有,那么可能没有密码)。
然后为普通Unbuntu用户分配访问mysql的权限(GRANT)。
答案3
https://help.ubuntu.com/community/ApacheMySQLPHP
如果您尝试从另一台机器(非本地)访问 mysql,此链接包含在 ubuntu 上配置 mysql 所需的所有信息。
谢谢,
马赫什·维拉加。
答案4
错误中的解决正在由运行 MySQLd 的远程服务器执行。
如果您GRANT
指定了主机名,则正向和反向 DNS 需要匹配。但似乎无论如何它们都不匹配。
检查您的GRANT
并检查 DNS。