这是我完整的bash脚本:
#!/bin/bash
logs="$HOME/sitedb_backups/log"
mysql_user="user"
mysql_password="pass"
mysql=/usr/bin/mysql
mysqldump=/usr/bin/mysqldump
tbackups="$HOME/sitedb_backups/today"
ybackups="$HOME/sitedb_backups/yesterday"
echo "`date`" > $logs/backups.log
rm $ybackups/* >> $logs/backups.log
mv $tbackups/* $ybackups/ >> $logs/backups.log
databases=`$mysql --user=$mysql_user -p$mysql_password -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema)"`
for db in $databases ; do
$mysqldump --force --opt --user=$mysql_user -p$mysql_password --databases $db | gzip > "$tbackups/$db.gz"
echo -e "\r\nBackup of $db successfull" >> $logs/backups.log
done
mail -s "Your DB backups is ready!" yourmail@gmail.com <<< "Today: "`date`"
DB backups of every site is ready."
exit 0
问题是当我尝试用mysql导入它时,我是gettint错误1044错误,连接到oldname_db。当我打开sql文件时,我已经在第一行
CREATE
命令中注意到了,因此它尝试使用旧名称创建该数据库。我该如何解决这个问题?解决了。
在我的情况下,不必使用
--databases
参数,并且由于--databases
它在sql文件的开头生成了CREATE和USE操作,希望对其他人有所帮助。 最佳答案
使用--no-create-db
的mysqldump
选项。
来自man mysqldump
:
--no-create-db,-n
此选项禁止显示以下内容的CREATE DATABASE语句:
否则,如果--databases或--all-databases包含在输出中
选项给出。