mysql为什么默认有那么多root用户,还有用户名为空的用户?
迷茫
迷茫 2017-04-17 11:20:50
[MySQL讨论组]
select Host,User from mysql.user;

+-----------+------+
| Host      | User |
+-----------+------+
| 127.0.0.1 | root |
| ::1       | root |
| ArchLinux |      |
| ArchLinux | root |
| localhost |      |
| localhost | root |
+-----------+------+

如上, 其中ArchLinux是我的主机名。
1. ::1 表示什么呢,任意IP吗?
2. 用户名为空是表示匿名用户吗?
3. 从 localhost 或是从 127.0.0.1 或是从 ArchLinux 发起的连接不都是指我自己的电脑吗?为什么要区分开?
4. 如果局域网内另有一台主机名为 ArchLinux 的电脑,它是不是就可以匿名或是用 root 登陆我的mysql服务器?
5. 我用 mysql -h 127.0.0.1 -u root -p 或是 mysql -h ArchLinux -u root -p 都提示无法连接到服务器,只有用 mysql -h localhost -u root -p 才可以登陆,为什么呢?

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(3)
高洛峰

1、::1应该是表示本地的v6地址
2、没有用户名的话,应该是匿名用户了
3、对于mysql来讲,127.0.0.1和localhost应该不一样的;举个例子,你在linux的/etc/hosts文件中将localhost映射127.0.0.1 这一行注释,那么linux主机已经无法ping通localhost了,但是你用mysql登录命令,指定-h localhost你依然能登录成功
4、局域网内的 ArchLinux主机,我觉得应该登录不了,因为主机名在网络中最终还是要映射成IP地址的。如果局域网内的那台主机的IP地址没有登录权限,那肯定是登录不了的;
5、这个问题,我也无法回答,mysql -h localhost -u root -p这样个命令,我试了一下,也不能登录,奇怪!

高洛峰

IPv6的本地环回地址,类似127.0.0.1

不大确定,应该是匿名用户

用 localhost 连,会使用本地的 unix sockst, 一般在 /var/run/mysqld.sock
而用 IP 就是从 TCP socket 连

主机名是自己在 hosts 里定义的,它自己说了不算

PHPz

mysql的用户来说, host+username才是一个基本单位,所以可以认为root在不同用户名下是不同的用户

具体的可以参考 http://techblog.yuexue.com/localhost_mysql_access_denied.html

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号