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

我的这个WordPress建的数据库名叫mydb,而mysql默认建有一个管理用的数据库名叫mysql,昨晚我本来想删除博客的数据库再恢复的(整体替换些内容),结果不小心删除掉了mysql的数据库,都是以my开头的,所以很容易就搞错了,其结果就是所有数据库都连接失败。

但是昨天VPS的网络异常经常连接不上,刚才找了一下之前安装php+mysql+nginx的lnmp0.9脚本,摘取了一部分内容进行测试,已成功恢复数据库。

重新建库的脚本是:

#!/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

只有在mysql数据库里所有数据表被删除时调用才不会出错。

恢复好数据库后再登录phpmyadmin控制台,逐一给各个数据库建各自的用户(如果不是用root用户访问数据库的情况)。

Tags: ,

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

  1. 英国旅游说道:

    博主是犀利技术宅啊!

Leave a Reply


提醒: 评论者允许使用'@user空格'的方式将自己的评论通知另外评论者。例如, ABC是本文的评论者之一,则使用'@ABC '(不包括单引号)将会自动将您的评论发送给ABC。请务必注意user必须和评论者名相匹配(大小写一致)。