Mysql
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
也將使用者名作為使用者名?我需要修剪之前的值或類似的東西嗎?
看起來使用者名是空的,所以實際的命令看起來像
mysqldump --add-drop-table -u -p8zSkcRrgVad3F ...
(8zSkcRrgVad3F是您的密碼)
首先,在標誌和變數之間添加空格,其次 - 我認為錯誤只是你使用了錯誤的變數名。您提到測試
echo $DB_USER
哪個有效,但您$DB_USERNAME
在命令中使用。