我使用以下脚本从 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
在命令中使用了。