第1步:停止MySQL进程的运行
[root@mysql-2 mysql]# service mysqld stop
Shutting down MySQL.. SUCCESS!
第2步:修改配置文件
[root@mysql mysql]# vim /etc/my.cnf
[mysqld]
user=mysql #指定启动MySQL进程的用户
skip-grant-tables #跳过密码验证
第3步:启动MySQL进程
[root@mysql mysql]# service mysqld start 启动MySQL进程
Starting MySQL. SUCCESS!
第4步:登录MySQL,不接密码直接登录
[root@mysql-2 mysql]# mysql -uroot -p
Enter password:
mysql> alter user 'root'@'localhost' identified by '123456'; --》会报错
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
mysql> flush privileges; 刷新权限(会加载原来没有加载的权限表--》用户名和密码所在的表user等)
当配置 skip-grant-tables 时,MySQL 会跳过用户权限验证,此时权限表(如 mysql.user)并未被加载到内存中。因此,直接执行 alter user 修改密码会失败(提示无法在该模式下执行)。
mysql>alter user 'root'@'localhost' identified by '123456';
Query OK, 0 rows affected (0.00 sec)
mysql> quit
Bye
第5步:重新修改mysql的配置文件
[mysqld]
socket=/data/mysql/mysql.sock
#skip-grant-tables --》注释掉
第6步:刷新服务
[root@mysql-2 mysql]# service mysqld restart #重新刷新服务
第7步:验证修改密码是否成功
[root@mysql-2 mysql]# mysql -uroot -p'123456'
mysql>
另外一种方式:
就是使用其他的管理员账号给别的用户重新设置密码
可以在SQLyog里操作
SET PASSWORD FOR 'root'@'localhost' = '123456';
alter user 'root'@'localhost' identified by '123456';