通过bash脚本导入sql转储

1u4esq0p  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(409)

我正在尝试导入一个文件夹中列出的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 未正确解析为数据库名称。
我做错了什么?

kxe2p93d

kxe2p93d1#

经过一些调查,问题来自垃圾场,而不是脚本。
使用时 mysqldump 选择 --databases 包括 USE 'dbname'; 导入时,使用该名称而不是 $NAME .
问题解决了!

相关问题