2008年10月13日星期一

MySQL 忘记 root 密码时的处理

如果把 MySQL 的密码忘掉的话,不用太紧张。MySQL 的开发者们早就想到了出现这种情况的可能性。可以通过如下步骤进行处理:终止 MySQL 服务,然后使用 skip_grant_tables 重新启动它。这样做的结果是没有加载具有访问权限的数据表。这时可以删除经过加密的 root 密码,终止 MySQL 服务,然后不使用这个选项再一次启动它,这时 root 就没有密码了,可以重新给 root 一个新的密码。

在处理这种情况的时候,必须要有 MySQL 所运行其上的操作系统的系统管理员权限。

首先终止 MySQL 的运用。在 Windows 的服务管理器中结束 MySQL 的服务。

随后,在 MySQL 的配置文件[mysqld]部分中,输入选项skip_grant_tables。Windows 环境下的 MySQL 配置文件是 MySQL 的安装目录下的 my.ini 文件,而 Unix/Linux 下则是 my.cnf 文件。

然后,重新启动 MySQL 服务器,这时使用mysql来为主机名 localname 和实际的计算机名(仅在 Unix/Linux 下)重新设置密码:

root# mysql -u root
Welcome to MySQL monitor.
mysql> USE mysql;
Database changed.
mysql> UPDATE user SET password=PASSWORD('new password')
     > WHERE user='root' AND host='localhost';
Query OK, 1 row affected (0.00 sec)
mysql> UPDATE user SET password=PASSWORD('new password'wort')
     > WHERE user='root' AND host='computername';
Query OK, 1 row affected (0.00 sec)

在 mysql.user 数据表中做出这些改变之后,再一次如前面所说的那样停止 MySQL 服务。再从 MySQL 的配置中删除选项skip_grant_tables最后再次启动 MySQL 服务就可以了。

没有评论: