mysql在命令窗口下改了root密码后就登陆不了

netpanda 2006-11-17 10:35:56
操作步骤如下:
1、用mysql原密码登陆mysql -uroot -p原密码
2、mysql>use mysql
mysql>UPDATE user SET Password=('新密码') WHERE user='root';
mysql>flush privileges;
mysql>exit

退出后再用mysql -uroot -p新密码就登陆不了,提示
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

请高手指点一下,谢谢!
...全文
266 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
netpanda 2006-11-19
  • 打赏
  • 举报
回复
谢谢楼上的,不会kill只好重装mysql了,这回记住了改密码一定加上password()函数了。
仰望星空WU 2006-11-18
  • 打赏
  • 举报
回复
root密码要重置,然后 要用到UPDATE user SET Password=PASSWORD('新密码') WHERE user='root';


重置方法:
通过发送一个kill(不是kill -9)到mysqld服务器来关闭mysqld服务器。pid 被保存在一个.pid文件中,通常在MySQL数据库目录中:
kill `cat /mysql-data-directory/hostname.pid`

你必须是一个UNIX root用户或运行服务器的相同用户做这个。

使用--skip-grant-tables选项重启mysqld。
用mysql -h hostname mysql连接mysqld服务器并且用一条GRANT命令改变口令。见7.26 GRANT和REVOKE句法。你也可以用mysqladmin -h hostname -u user password 'new password' 进行。
用mysqladmin -h hostname flush-privileges或用SQL命令FLUSH PRIVILEGES来装载权限表。


6.12 怎样设置口令
在前面小节的例子里说明了一个重要的原则:当你使用INSERT或UPDATE语句存储一个非空的口令时,你必须使用PASSWORD()函数加密它。这是因为在user表中以加密形式存储口令,而不是作为纯文本。如果你忘记这个事实,你可能像这样试图设置口令:

shell> mysql -u root mysql
mysql> INSERT INTO user (Host,User,Password) VALUES('%','jeffrey','biscuit');
mysql> FLUSH PRIVILEGES

结果是纯文本值'biscuit'作为口令被存储在user表中。在用户jeffrey试图用这个口令连接服务器时,mysql客户用PASSWORD()加密它并且将结果送给服务器,服务器比较在user表中的值(它是纯文本值'biscuit')和加密的口令(而不是 'biscuit'),比较失败并且服务器拒绝连接:

shell> mysql -u jeffrey -pbiscuit test
Access denied

因为当他们被插入user表时,口令必须被加密,相反,INSERT语句应该象这样被指定:

mysql> INSERT INTO user (Host,User,Password)
VALUES('%','jeffrey',PASSWORD('biscuit'));

当你使用SET PASSWORD语句时,你也必须使用PASSWORD()函数:

mysql> SET PASSWORD FOR jeffrey@"%" = PASSWORD('biscuit');

如果你使用GRANT ... IDENTIFIED BY语句或mysqladmin password命令设置口令,PASSWORD()函数是不必要的。他们都考虑到为你加密口令,多以你可像这样指定一个口令'biscuit':

mysql> GRANT USAGE ON *.* TO jeffrey@"%" IDENTIFIED BY 'biscuit';



shell> mysqladmin -u jeffrey password biscuit
注意: PASSWORD()不是以在Unix口令加密的同样方法施行口令加密。你不应该假定如果你的Unix口令和你的MySQL口令是一样的,PASSWORD()将导致与在Unix口令文件被存储的同样的加密值。见6.2 MySQL 用户名和口令。

lidui 2006-11-18
  • 打赏
  • 举报
回复
我也是同样的问题!
netpanda 2006-11-18
  • 打赏
  • 举报
回复
应该是UPDATE user SET Password=PASSWORD('新密码') WHERE user='root';-------------------------------但现在问题是我无论用原密码还是新密码均登陆不了
懒得去死 2006-11-18
  • 打赏
  • 举报
回复
UPDATE user SET Password=PASSWORD('新密码') WHERE User='root';
Siramizu 2006-11-17
  • 打赏
  • 举报
回复
应该是UPDATE user SET Password=PASSWORD('新密码') WHERE user='root';

56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧