- 论坛徽章:
- 0
|
原帖由 yejr 于 2006-1-17 09:08 发表
究其原因,应该是你的mysql系统中存在一个匿名用户,因此允许你以任何用户身份登陆mysql,尽管是一个不存在的用户都可以,不信你可以试试看。
如果你登录时指定host,并且mysql.user表中正好有一条相关的权限记录 ...
原因就是版主所说的,比如你在/etc/hosts中有
127.0.0.1 user1 localhost
那在mysql安装好后user应该有四条记录
Host User Password
1 localhost root
2 user1 root
3 localhost
4 user1
后面两条权限不能操作mysql数据库的,1,2两条权限一样的
你执行
#/usr/local/mysql/bin/mysqladmin -u root -p password ******
就把1的Password update为******
再执行
update user set password=password(‘你的密码’) where user=’root’;
将1,2的密码都update为你的密码了,这时1,2两条记录除了Host不同外其它的都一样了
你再做
update user set host=' %' where user='root';
那就是要1,2两条记录一模一样了,所以报错误,这时1条的Host应该已经换成%了
Host User Password
1 % root *****
2 user1 root *****
3 localhost
4 user1
你重启后进入mysql的时候,默认去找的是Host为localhost的记录(3的记录),其它的都不管的,可以用任意的
用户进入mysql,3的记录权限不能操作mysql的,所以会出现你所说的情况.
你只要启动的时候加--skip-grant-tables 然后把3跟4删除掉就可以了 |
|