народ,
Я пытаюсь автоматизировать MySQL root временную смену пароля пользователя.
Сведения:
ОС Centos7, mysql Вер. 8.0.19-10 для Linux на x86_64 (Percona Server (GPL), выпуск 10, редакция f446c04)
Мой скрипт:
#!/bin/sh
PSW=$1
MYPASS = `grep 'temporary password' /var/log/mysqld.log|awk '{print $13}'`
echo $MYPASS
sleep 3
echo "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '$PSW';" >> /root/my.sql
echo "GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;" >> /root/my.sql
sleep 3
mysql --connect-expired-password -u root --password='$MYPASS' mysql < /root/my.sql
sleep 5
Логотипы скрипта c
Я выполняю скрипт, который называется prepare_db. sh, из оболочки с помощью команды и передаю переменную PSW (хочу изменить temp PSW к этому)
sh prepare_db.sh Pass123
он захватывает temp mysql root PSW присваивает его переменной MYPASS создает мой. sql файл, который выглядит так:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Pass123';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
когда sql файл создан, скрипт автоматически пытается выполнить его с помощью команды:
mysql --connect-expired-password -u root --password='$MYPASS' mysql < /root/my.sql
Проблема
Каждый раз, когда я получаю сообщение о том, что доступ запрещен:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
Странная вещь
Если я пытаюсь запустить ту же команду из оболочки, я не получаю ошибки и пароль не меняется ..
mysql --connect-expired-password -u root --password='e=F4D4N7<-gp' mysql < /root/my.sql
Пожалуйста, помогите мне найти ошибку, или решение, как мне достичь своей цели - автоматизировать сброс пароля root к временному пользователю
Заранее спасибо!