我正在尝试导入文件夹中列出的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/