用于自动恢复MySQL密码的脚本

时间:2013-06-18 05:56:44

标签: shell

我在OpenSUSE 12.3上运行LAMP服务器。有时我需要恢复我的MySQL密码,我每次都会执行这些步骤:

  1. 停止mysql(service mysql stop
  2. 修改/etc/my.cnf( vi /etc/my.cnf
  3. 在服务器部分添加skip-grant-tables
  4. 启动Mysql(service mysql start
  5. 在这个阶段你可以很好地登录mysql(不会提示密码)

    现在在控制台中:

    1. mysql
    2. use mysql;
    3. insert into user (Host, User, Password) values ('localhost','root','');
    4. 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;
    5. (所有这些命令都在mysql控制台或phpmyadmin中运行)

      现在上面的命令告诉mysql创建root用户(因为它在分发中不存在)

      我们都已经定下来了,现在又回来了

      1. 编辑my.cnf(vi /etc/my.cnf
      2. 删除:skip-grant-tables
      3. mysqladmin shutdown
      4. service mysql start
      5. mysqladmin -u root password XXXXXXXXXX
      6. 当我必须恢复MySQL密码时,我想自动完成此过程。

1 个答案:

答案 0 :(得分:0)

这是一个开始:

service mysql stop
vi /etc/my.cnf
# In the server section add skip-grant-tables
service mysql start

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',Create_Event_priv='Y', Trigger_priv='Y', Create_tablespace_priv='Y' where user='root';
quit;

vi /etc/my.cnf
# remove skip-grant-tables
mysqladmin shutdown
service mysql start
mysqladmin -u root password XXXXXXXXXX

你应该认识到代码,这几乎就是你所要求的。缺少的部分是您将MySQL命令与shell命令分开,或者将它们包装为mysql的调用:

mysql -D mysql ...

另外,请考虑将密码放在受适当保护的文件中,或将其作为参数传递给脚本。