我正在尝试导入文件夹中列出的GZiped MySQL数据库。

GZiped文件位于.mysqldumps/

$NAME尝试提取数据库名称(因为文件始终命名为database_name.sql.gz)并将其传递给mysql命令行。

另外,由于用户名和数据库名称相同,因此传递相同的参数($NAME)。

由于文件已压缩,因此在将它们通过管道传输到zcat之前,我们尝试先gunzip -c(即mysql)它们。

完整的脚本是:

#!/bin/bash
FILES='.mysqldumps/*'
PASSWORD='MyPassword'

for f in $FILES
do
    NAME=dbprefix_`basename $f .sql.gz`
    echo "Processing $f"
    set -x
    zcat $f | mysql -u "$NAME" -p$PASSWORD "$NAME"
done


但是,当我运行脚本时,它输出:

./.mysqlimport
Processing .mysqldumps/first_database.sql.gz
+ mysql -u dbprefix_first_database -pMyPassword dbprefix_first_database
+ zcat .mysqldumps/first_database.sql.gz
ERROR 1044 (42000) at line 22: Access denied for user 'dbprefix_first_database'@'localhost' to database 'first_database'


如您所见,选定的数据库是'first_database'而不是'dbprefix_first_database',这只是一个错误提示,我只是不明白为什么$NAME不能正确地解析为数据库名称。

我做错了什么?

最佳答案

经过调查后,问题出在DUMP,而不是脚本。

使用mysqldump时,使用了包含--databases的选项USE 'dbname';,并且在导入时使用了该名称而不是$NAME

问题解决了!

关于mysql - 导入SQL转储槽bash脚本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50471110/

10-09 20:11
查看更多