我有一个在 OpenSUSE 12.3 上运行的 LAMP 服务器。有时我需要恢复我的 MySQL 密码,我每次都执行以下步骤:
- 停止 mysql (
service mysql stop
) - 编辑 /etc/my.cnf (
vi /etc/my.cnf
) - 在服务器部分添加
skip-grant-tables
- 启动 Mysql (
service mysql start
)
在这个阶段你就可以正常登录mysql了(不会提示密码)
现在在控制台中:
mysql
use mysql;
insert into user (Host, User, Password) values ('localhost','root','');
update user set Select_priv='Y',Insert_priv='Y',Update_priv='Y',Delete_priv='Y',Crea Event_priv='Y', Trigger_priv='Y', Create_tablespace_priv='Y' where user='root'; quit;
(所有这些命令都在 mysql 控制台或通过 phpmyadmin 运行)
现在上面的命令告诉 mysql 创建 root 用户(因为它在发行版中不存在)
我们都准备好了,现在恢复
- 编辑 my.cnf (
vi /etc/my.cnf
) - 消除:
skip-grant-tables
mysqladmin shutdown
service mysql start
mysqladmin -u root password XXXXXXXXXX
当我必须恢复我的 MySQL 密码时,我想自动化这个过程。