在Ubuntu中有关IP和计算机名称的问题

我无法连接到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 localhost
 Ubuntu的Ubuntu.ubuntu-domain Ubuntu的127.0.1.1

 #对于支持IPv6的主机,以下几行是可取的
 :: 1 localhost ip6-localhost ip6-loopback
 fe00 :: 0 ip6-localnet
 ff00 :: 0 ip6-mcastprefix
 ff02 :: 1 ip6-allnodes
 ff02 :: 2 ip6-allrouters
 ff02 :: 3 ip6-allhosts

我不知道“root'@ubuntu.local”,它来自哪里。

“ubuntu.local”可能来自MySQL服务器机器,而不是您尝试连接的客户机。 检查该机器上的/ etc / hosts,以获取与192.168.1.102相关的条目(或者您的客户机的IP地址)。 它也可能(不太可能)从反向DNS获取这个名称(也许你的路由器?)。

访问被拒绝的声明只是MySQL拒绝主机/用户名/密码。 尝试

select * from mysql.users where user = 'root'; 

并查看是否有任何事情回来列出客户端机器的IP地址或主机名。 确保密码相同(root @ localhost可以使用不同于[email protected]的密码)。

使用localhost而不是192.168.1.101

实际上,为什么要指定呢?

您可能试图以root身份login到mysql,但是错误消息表明您也以root身份login到了Ubuntu。 这不是必须的。 这两个“根”用户是完全不同的。

以普通用户身份loginUbuntu。 然后以root用户身份login到mysql(是mysql root用户的正确密码吗?是否在安装mysql时分配了mysql root密码?如果没有,那么可能没有密码)。

然后为正常的Unbuntu用户分配权限(GRANT)来访问mysql。

https://help.ubuntu.com/community/ApacheMySQLPHP

如果你想从另一台机器(非本地)访问它,这个链接有你需要在ubuntu上configurationmysql的所有信息。

谢谢,
Mahesh Velaga。

错误的解决scheme是由运行MySQLd的远程服务器执行的。

如果您的GRANT指定了主机名,则正向和反向DNS需要匹配。 这似乎他们不一样。

检查你的GRANT并检查DNS。