我的这个WordPress建的数据库名叫mydb,而mysql默认建有一个管理用的数据库名叫mysql,昨晚我本来想删除博客的数据库再恢复的(整体替换些内容),结果不小心删除掉了mysql的数据库,都是以my开头的,所以很容易就搞错了,其结果就是所有数据库都连接失败。
但是昨天VPS的网络异常经常连接不上,刚才找了一下之前安装php+mysql+nginx的lnmp0.9脚本,摘取了一部分内容进行测试,已成功恢复数据库。
重新建库的脚本是:
[bash]
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
#set mysql root password
echo “===========================”
mysqlrootpwd=”root”
echo “Please input the root password of mysql:”
read -p “(Default password: root):” mysqlrootpwd
if [ “$mysqlrootpwd” = “” ]; then
mysqlrootpwd=”root”
fi
echo “===========================”
echo mysqlrootpwd=”$mysqlrootpwd”
echo “===========================”
/etc/init.d/mysql start
/usr/local/mysql/bin/mysql_install_db –user=mysql
/usr/local/mysql/bin/mysqladmin -u root password $mysqlrootpwd
cat > /tmp/mysql_sec_script<<EOF
use mysql;
update user set password=password(‘$mysqlrootpwd’) where user=’root’;
delete from user where not (user=’root’) ;
delete from user where user=’root’ and password=”;
drop database test;
DROP USER ”@’%’;
flush privileges;
EOF
/usr/local/mysql/bin/mysql -u root -p$mysqlrootpwd -h localhost < /tmp/mysql_sec_script
rm -f /tmp/mysql_sec_script
/etc/init.d/mysql restart
[/bash]
只有在mysql数据库里所有数据表被删除时调用才不会出错。
恢复好数据库后再登录phpmyadmin控制台,逐一给各个数据库建各自的用户(如果不是用root用户访问数据库的情况)。
博主是犀利技术宅啊!