mysqldump - 用户名也采用“-p”

mysqldump - 用户名也采用“-p”

我使用以下脚本从 Wordpress 安装中读取数据库凭据:

DB_NAME=$(sed -n "s/define( *'DB_NAME', *'\([^']*\)'.*/\1/p" wp-config.php)
DB_USER=$(sed -n "s/define( *'DB_USER', *'\([^']*\)'.*/\1/p" wp-config.php)
DB_PASSWORD=$(sed -n "s/define( *'DB_PASSWORD', *'\([^']*\)'.*/\1/p" wp-config.php)
DB_HOST=$(sed -n "s/define( *'DB_HOST', *'\([^']*\)'.*/\1/p" wp-config.php)

当我像这样回应变量时:

echo $DB_NAME;
echo $DB_USER;
echo $DB_PASSWORD;
echo $DB_HOST;

一切都很好。当我在语句中使用它们时mysqldump

mysqldump --add-drop-table -u${DB_USERNAME} -p${DB_PASSWORD} ${DB_NAME} > ../backups/${SQL_BACKUP} 2>&1

或者

mysqldump --add-drop-table -u$DB_USERNAME -p$DB_PASSWORD $DB_NAME > ../backups/$SQL_BACKUP 2>&1

我收到此错误信息:

mysqldump: Got error: 1045: Access denied for user '-8zSkcRrgVad3F'@'localhost' (using password: NO) when trying to connect

当我使用如下语句时:

mysqldump --add-drop-table -udatabaseuser -p8zSkcRrgVad3F database > ../backups/test.sql 2>&1

一切正常。我的用户/数据库/密码中没有特殊字符,但命令-p8zSkcRrgVad3F也将作为用户名?我需要先修剪一下这些值还是类似这样?

答案1

看起来用户名是空的,所以实际的命令看起来像

mysqldump --add-drop-table -u -p8zSkcRrgVad3F ...

8zSkcRrgVad3F是你的密码)

首先,在标志和变量之间添加空格,其次 - 我认为错误只是你使用了错误的变量名。你提到测试echo $DB_USER哪个有效,但你$DB_USERNAME在命令中使用了。

相关内容