Mysql

mysqldump - 使用者名也採用“-p”

  • May 14, 2022

我使用以下腳本從 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也將使用者名作為使用者名?我需要修剪之前的值或類似的東西嗎?

看起來使用者名是空的,所以實際的命令看起來像

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

8zSkcRrgVad3F是您的密碼)

首先,在標誌和變數之間添加空格,其次 - 我認為錯誤只是你使用了錯誤的變數名。您提到測試echo $DB_USER哪個有效,但您$DB_USERNAME在命令中使用。

引用自:https://serverfault.com/questions/1100935