我正在尝试导入一个文件夹中列出的gziped mysql数据库。
gziped文件位于 .mysqldumps/
. $NAME
尝试提取数据库名称(因为文件总是命名为 database_name.sql.gz
)把它传给 mysql
命令行。
另外,由于用户名和数据库名相同,因此传递相同的参数( $NAME
).
由于文件是gziped,我们尝试 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
未正确解析为数据库名称。
我做错了什么?
1条答案
按热度按时间kxe2p93d1#
经过一些调查,问题来自垃圾场,而不是脚本。
使用时
mysqldump
选择--databases
包括USE 'dbname';
导入时,使用该名称而不是$NAME
.问题解决了!