我在OpenSUSE 12.3上运行LAMP服务器。有时我需要恢复我的MySQL密码,我每次都会执行这些步骤:
service mysql stop
)vi /etc/my.cnf
)skip-grant-tables
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用户(因为它在分发中不存在)
我们都已经定下来了,现在又回来了
vi /etc/my.cnf
)skip-grant-tables
mysqladmin shutdown
service mysql start
mysqladmin -u root password XXXXXXXXXX
当我必须恢复MySQL密码时,我想自动完成此过程。
答案 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 ...
另外,请考虑将密码放在受适当保护的文件中,或将其作为参数传递给脚本。