免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: Jedliu
打印 上一主题 下一主题

[已解决,求因中...]请教怪问题,mySQL可以用root登陆,可是root却没了权限?? [复制链接]

论坛徽章:
0
11 [报告]
发表于 2006-01-16 17:30 |只看该作者
ding

论坛徽章:
0
12 [报告]
发表于 2006-01-16 18:08 |只看该作者
原帖由 tchhyc 于 2006-1-16 17:09 发表

3.使用--skip-grant-tables参数启动MySQL Server
shell>mysqld_safe --user=mysql --skip-grants-tables &


使用这个命令时,我找不到mysqld_safe,
我使用mysqld来运行,但是,
提示Usage: /etc/rc.d/init.d/mysqld {start|stop|status|condrestart|restart}
这个时候加start等,都直接Exit 1了。

谢谢“tchhyc”,我在置顶贴中看见的是,
PATH_TO_MYSQL/bin/mysqld --skip-grant-tables &
需要加‘;’么?
谢谢!

[ 本帖最后由 Jedliu 于 2006-1-16 18:11 编辑 ]

论坛徽章:
0
13 [报告]
发表于 2006-01-16 18:09 |只看该作者
原帖由 rardge 于 2006-1-16 17:27 发表
因为我没有经历过类似的事情,所以完全是靠感觉来建议你如何做的。
除了FAQ里面那些方法,我也不知道是否还有其他方法了,如果你根本没有什么数据的话,不如把data目录下全部删除,然后重新 mysql_install_db 以 ...


这个data目录是在什么地方呢?
我的mysql是在安装linux的时候光盘安装的,
谢谢“rardge”!

论坛徽章:
0
14 [报告]
发表于 2006-01-16 19:02 |只看该作者
你用find / -name mysqld -print 找一下,可能在/usr/libexec下,你要先将mysql数据库关闭再重启.
然后启动的时候加--user=mysql --skip-grants-tables &启动,再修改密码,你说的加;指哪没看到?
如果要重新安装数据库的话,就参照置顶的一种方法进行安装,你说的data目录你可以进入mysql后
show variables看一下datadir变量的值就知道了,或者到/etc/my.cnf里看看datadir的值

论坛徽章:
0
15 [报告]
发表于 2006-01-16 19:17 |只看该作者
好的,谢谢“tchhyc ”,
我来试一下看看。

论坛徽章:
0
16 [报告]
发表于 2006-01-16 19:50 |只看该作者
按照“tchhyc ”方法找到默认datadir,
然后将下面的文件夹通过root权限重命名,
然后按照“rardge ”提示的使用mysql_install_db,相当于重装,
然后重新启动mySQL,root权限恢复,更改了密码,
谢谢各位的帮助。

论坛徽章:
0
17 [报告]
发表于 2006-01-16 19:51 |只看该作者
原帖由 tchhyc 于 2006-1-16 17:09 发表

一般安装好后user表中有两条user='root'的记录,你update user set host=' %' where user='root'
的时候两条就要一样了,user表是不允许相同的记录的,所以报错


问题解决了,可否麻烦"tchhyc"兄解释一下原因的?
谢谢....!!

论坛徽章:
0
18 [报告]
发表于 2006-01-16 20:02 |只看该作者

你改了2次,有没有用flush privileges?用grant了吗?

原帖由 Jedliu 于 2006-1-16 15:45 发表
遇到一件奇怪的问题,
就是MySQL可以使用root帐号,
可是root帐号没有办法修改密码,只能使用空密码,
而且root权限什么都没有了,
使用如下命令,提示如下:
[root@***]# mysql -uroot -p
Enter password: ...

密码更新以后,需要使用flush privileges更新数据库的。如果实在不行,就重新初始化数据库吧,把user表host表统统的删除。
#mysql_db。不知道你是不是用过grant这样的命令

论坛徽章:
0
19 [报告]
发表于 2006-01-17 09:08 |只看该作者
究其原因,应该是你的mysql系统中存在一个匿名用户,因此允许你以任何用户身份登陆mysql,尽管是一个不存在的用户都可以,不信你可以试试看。
如果你登录时指定host,并且mysql.user表中正好有一条相关的权限记录,那么就能以正确的权限身份登录,如:mysql -hlocalhost -uroot -pxx。
这个时候,只要把那条匿名用户的权限记录删除,重新flush privileges就可以了。

论坛徽章:
0
20 [报告]
发表于 2006-01-17 11:36 |只看该作者
原帖由 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删除掉就可以了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP