mysql数据库不小心被删除的恢复方法

我的这个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用户访问数据库的情况)。

Tags: ,

One Response to “mysql数据库不小心被删除的恢复方法”

  1. 英国旅游说道:

    博主是犀利技术宅啊!

Leave a Reply