mysql的root怎么样都无法重置密码

从来没有设置过密码,但是登陆的时候提示:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

vim /etc/my.cnf 在 [mysqld]添加了skip-grant   

/etc/init.d/mysqld restart

mysql 

use mysql

update user set password=password ('frank.com')  where user='root';

syntax ok


select * from user where user='root'\G;

不显示内容。

以安全模式免密码登陆时没有问题(mysql的库是在),然后在mysql里面重置了密码后提示 rows match没有变化change没有变化,不知道什么原因,应该是没有重置成功。

spacer.gifmysql的root怎么样都无法重置密码_第1张图片

后退出,将刚才在/etc/my.cnf的配置去掉后重启mysql服务,用重置了的正确密码一直提示密码不正确

思路:像是你在做 “忘记root密码怎么办”实验的时候,把mysql库里面的user表给损坏了,数据丢失了。 解决这个问题的办法是,先把mysql库重命名,然后重新初始化一下。

测试一:(不确定)

mysql> use mysql;
Database changed
mysql> update user set password=password ('12345')  where user='root';
Query OK, 2 rows affected (0.16 sec)
Rows matched: 3  Changed: 2  Warnings: 0

mysql> flush privileges;                           有可能是因为没有刷新权限的问题。
Query OK, 0 rows affected (0.05 sec)

mysql> quit
Bye


测试二:(经过测试可能是这个原因)

先/etc/init.d/mysqld stop停掉mysql

在编译安装指定datadir目录(这就是mysql的数据库)是/data/mysql,cd进去看到的目录就是各种数据库里的database,mv来重命名mysql的库 ,然后进去你的mysql的安装目录/usr/local/mysql里目录下执行:./mysql_install_db --user=mysql --datadir=/data/mysql,进行初始化设置。

初始化完成后 /etc/init.d/mysqld start    开启mysql

mysql  不需要密码可以登陆了。

mysql 

use mysql

select * from user where user='root'\G;

显示里面的内容了。


你可能感兴趣的:(mysql,localhost,change,password,安全模式)