MySQL 忘记 root 用户密码的解决办法

在 MySQL 的使用过程中,如果 root 用户密码丢失了,会造成很大的麻烦。但是,可以通过某种特殊的办法登陆到 root 用户下,然后设置新的密码。
下面记录下当忘记MySQL root 密码的解决办法:

使用 --skip-grant-tables 选项启动 MySQL 服务

skip-grant-tables 选项将使 MySQL 服务器停止权限判断,任何用户都有访问数据库的权力。这个命令选项是跟在 MySQL 服务的命令后面的。

for windows

Windows 操作系统中,使用 mysqld、mysqld-nt或者 net start mysql 命令来启动 MySQL 服务。

mysqld 命令

mysqld --skip-grant-tables

mysqld-nt命令

mysqld-nt --skip-grant-tables

net 命令

net start mysql --skip-grant-tables

for linux

Linux 操作系统中,使用 mysqld_safe 来启动 MySQL 服务,也可以使用 /etc/init.d/mysql 来启动 MySQL 服务。

mysqld_safe 命令

mysql_safe --skip-grant-tables user=mysql

使用 /etc/init/mysql 语句

/etc/init/mysql start --mysqld --skip-grant-tables
成功启动 MySQL 服务后,就可以使用 root 登陆数据库进行密码的修改了。

登陆 root 用户,设置新的密码

通过上述方式启动 MySQL 服务以后,可以使用 root 用户免密码登陆到 MySQL 控制台。登陆后使用 UPDATE 语句来修改密码。

登陆 MySQL

mysql -u root

修改密码

UPDATE mysql.user SET password=PASSWORD('somewords') WHERE User='root' AND Host='localhost';

这里必须使用 UPDATE 语句来更新 mysql 数据库的 user 表,不能使用 SET 语句。

加载权限表

修改完密码之后,必须使用 FLUSH PRIVILEGES 命令来加载权限表。加载权限表之后新密码才开始生效。

1
FLUSH PRIVILEGES

至此,root 用户的密码修改成功,可以使用新的密码来登陆 MySQL.