MySQL备份所有数据库脚本
直接导出所有数据库
这个是直接使用mysqldump命令导出MySQL所有数据库的命令,包括MySQL本身的一些库,例如用户等信息也一并导出。
优点:备份完整,用户名和密码也一并备份
缺点:导入之后可能会改动原有的数据库用户信息(覆盖/重复/修改密码)
#备份数据库 mysqldump -u用户名 -p密码 --lock-all-tables --all-databases > all.sql #导入数据库 mysql -u用户名 -p密码 < all.sql |
想要导出所有数据表,一般来说是需要root权限的,具体的信息可以在~/.my.cnf下找到。
分别导出数据库
这个脚本来自于stackoverflow,将网站数据库分别导出到各自的文件。
优点:不影响MySQL本身的信息,不会改动原有数据库的用户名和密码
缺点:导入之后需要手动建立用户名并赋予权限,需重新修改网站配置文件
#!/bin/bash USER= "用户名" PASSWORD= "密码" databases=`mysql -u $USER -p$PASSWORD -e "SHOW DATABASES;" | tr -d "| " | grep - v Database` for db in $databases; do if [[ "$db" != "information_schema" ]] && [[ "$db" != "performance_schema" ]] && [[ "$db" != "mysql" ]] && [[ "$db" != _* ]] ; then echo "Dumping database: $db" mysqldump -u $USER -p$PASSWORD --databases $db > ` date +%Y%m%d`.$db.sql # gzip $OUTPUT/`date +%Y%m%d`.$db.sql fi done |
想要导出所有数据表,一般来说是需要root权限的,具体的信息可以在~/.my.cnf下找到。
参考链接:MySQL Dump All Databases and Create (or Recreate) them on Import
备份所有用户名密码
mysql -BNe "select concat('\'',user,'\'@\'',host,'\'') from mysql.user where user != 'root'" | \ while read uh; do mysql -BNe "show grants for $uh" | sed 's/$/;/; s/\\\\/\\/g' ; done > grants.sql |
参考链接:http://stackoverflow.com/questions/597732/backup-mysql-users
[MySQL导出所有数据库命令和脚本 – 古博](https://www.gubo.org/script-dump-all-mysql-databases/)