Я использую следующий сценарий для чтения учетных данных базы данных из установки 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)
Когда я повторяю такие переменные:
эхо $DB_NAME;
эхо $DB_USER;
эхо $DB_PASSWORD;
эхо $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: ошибка: 1045: доступ запрещен для пользователя '-8zSkcRrgVad3F'@'localhost' (с использованием пароля: НЕТ) при попытке подключения
Когда я использую выражение следующим образом:
mysqldump --add-drop-table -udatabaseuser -p8zSkcRrgVad3F база данных > ../backups/test.sql 2>&1
Все работает нормально. У меня нет специальных символов в моем пользователе/базе данных/пароле, но команда принимает -p8zSkcRrgVad3F
как и имя пользователя? Нужно ли мне обрезать значения раньше или что-то в этом роде?