免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 10363 | 回复: 10
打印 上一主题 下一主题

mysql.user表怎么有两个root?密码怎么改? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-05-02 20:21 |只看该作者 |倒序浏览
host列分别是localhost和127.0.0.1,我改了localhost的password列,127.0.0.1的仍为空。不知为何要两个root,安不安全?我在dos不用密码也能登录,用户名为ODBC@localhost,user表里没有,怎么回事,安全吗?

论坛徽章:
0
2 [报告]
发表于 2009-05-02 21:36 |只看该作者
MySQL用户名是什么样?
MySQL的用户名有两部分组成: 用户名@主机名

用户名:一般用字母组成。
主机名:可以是机器IP也可以机器名。
反应到user表中,用户名对应user,机器名对应于host,密码对应于password

更改密码:
set  password for '用户名'@'主机名‘=password('yourpassword');

所以你见到的两个Root不能算是一个用户名的。

论坛徽章:
0
3 [报告]
发表于 2009-05-02 23:26 |只看该作者
在dos不用密码也能登录,用户名为ODBC@localhost,user表里没有,怎么回事,安全吗?
==========================================================
这个可能是以测试用户登录的.

两个,你删掉一个即可.

论坛徽章:
0
4 [报告]
发表于 2009-05-03 00:05 |只看该作者
原帖由 wildlily980 于 2009-5-2 23:26 发表
在dos不用密码也能登录,用户名为ODBC@localhost,user表里没有,怎么回事,安全吗?
==========================================================
这个可能是以测试用户登录的.

两个,你删掉一个即可.



如果是linux应该是程序以root身份运行,然后那个127.0.0.1 没有密码。所以可以直接认证进去了。

如果是Windows了,都不知道是什么情况了。Windows不孰悉。

论坛徽章:
9
每日论坛发贴之星
日期:2016-01-04 06:20:00数据库技术版块每日发帖之星
日期:2016-01-04 06:20:00每日论坛发贴之星
日期:2016-01-04 06:20:00数据库技术版块每日发帖之星
日期:2016-01-04 06:20:00IT运维版块每日发帖之星
日期:2016-01-04 06:20:00IT运维版块每日发帖之星
日期:2016-01-04 06:20:00综合交流区版块每日发帖之星
日期:2016-01-04 06:20:00综合交流区版块每日发帖之星
日期:2016-01-04 06:20:00数据库技术版块每周发帖之星
日期:2016-03-07 16:30:25
5 [报告]
发表于 2009-05-03 14:25 |只看该作者
刚刚测试了一下:

mysql.user里有两条记录,如下
User: root
Host: localhost
Password: XXXXXXX

User:root
Host:127.0.0.1
Password:


结果:
> mysql -uroot -hlocalhost -p
> mysql -uroot -h127.0.0.1 -p
都可以登陆,但是即使host指明为127.0.0.1也需要输入第一条记录中的密码才能登陆。
即:
> mysql -uroot -h127.0.0.1 不能登录


原因:
因为mysql在验证用户时先对user表进行排序:
1. specified的host排在pattern的host前面。
2. 相同host的条目,specified的user排在anonymous的前面。
3. 其他按默认存储顺序。
排序结束后,从第一条开始匹配,如果匹配符合则忽略剩下所有。



所以:
即使第二条记录的密码为空,从理论上来说无论什么情况下都无法匹配到(mysql认为localhost=127.0.0.1,所以总是存储靠前的那条记录起作用)。
当然如果为了安全,可以把这条记录删除,或者为他设置密码,但并不影响root在localhost上的登录。

论坛徽章:
224
2022北京冬奥会纪念版徽章
日期:2015-08-10 16:30:32操作系统版块每日发帖之星
日期:2016-02-18 06:20:00操作系统版块每日发帖之星
日期:2016-03-01 06:20:00操作系统版块每日发帖之星
日期:2016-03-02 06:20:0015-16赛季CBA联赛之上海
日期:2019-09-20 12:29:3219周年集字徽章-周
日期:2019-10-01 20:47:4815-16赛季CBA联赛之八一
日期:2020-10-23 18:30:5320周年集字徽章-20	
日期:2020-10-28 14:14:2615-16赛季CBA联赛之广夏
日期:2023-02-25 16:26:26CU十四周年纪念徽章
日期:2023-04-13 12:23:1015-16赛季CBA联赛之四川
日期:2023-07-25 16:53:45操作系统版块每日发帖之星
日期:2016-05-10 19:22:58
6 [报告]
发表于 2009-05-05 11:54 |只看该作者

回复 #5 cenalulu 的帖子

原来是因为排序啊

---

我以前还以为mysql在127.0.0.1与localhost之间选择一个最安全的呢,,

大呼,MYSQL真TM安全,还晓得智能匹配更安全的

论坛徽章:
0
7 [报告]
发表于 2009-05-05 13:10 |只看该作者
根据我的网络知识判断,
localhost 不等于 127.0.0.1

只不过很多系统默认 localhost 的ip是127.0.0.1

论坛徽章:
9
每日论坛发贴之星
日期:2016-01-04 06:20:00数据库技术版块每日发帖之星
日期:2016-01-04 06:20:00每日论坛发贴之星
日期:2016-01-04 06:20:00数据库技术版块每日发帖之星
日期:2016-01-04 06:20:00IT运维版块每日发帖之星
日期:2016-01-04 06:20:00IT运维版块每日发帖之星
日期:2016-01-04 06:20:00综合交流区版块每日发帖之星
日期:2016-01-04 06:20:00综合交流区版块每日发帖之星
日期:2016-01-04 06:20:00数据库技术版块每周发帖之星
日期:2016-03-07 16:30:25
8 [报告]
发表于 2009-05-05 13:28 |只看该作者

回复 #7 net_robber 的帖子

我的意思是,mysql对每一条权限记录都进行域名和ip的匹配,命中其一就算命中。
而一般localhost解析的地址就是127.0.0.1
之前说的不太严密。。。。

论坛徽章:
8
综合交流区版块每周发帖之星
日期:2015-12-02 15:03:53数据库技术版块每日发帖之星
日期:2015-10-02 06:20:00IT运维版块每日发帖之星
日期:2015-10-02 06:20:00IT运维版块每日发帖之星
日期:2015-09-14 06:20:00金牛座
日期:2014-10-10 11:23:34CU十二周年纪念徽章
日期:2013-10-24 15:41:34酉鸡
日期:2013-10-19 10:17:1315-16赛季CBA联赛之北京
日期:2017-03-06 15:12:44
9 [报告]
发表于 2009-05-06 09:36 |只看该作者
手册上有关于登录验证的部分
写的非常好

建议楼主看看

论坛徽章:
0
10 [报告]
发表于 2009-05-06 09:53 |只看该作者
在unix里localhost使用的是socket连接,127.0.0.1使用的是tcp ip的连接方式,是不同的连接方式,所以会有2个root,windows下貌似没有什么区别,mysql本来就是在unix下用的,所以用户表的格式也是按unix的格式来做的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP