Нам необходимо установить MySQL 5.7 с помощью сценария оболочки (через SSH), а затем установить пароль в том же сценарии без ручного вмешательства.Наш текущий скрипт оболочки устанавливает MySQL 5.7 на сервер Ubuntu, используя следующие команды:
export DEBIAN_FRONTEND=noninteractive
sudo -E apt-get -q -y install mysql-server-5.7
Это позволяет устанавливать MySQL без запросов.Тем не менее, он также создает пользователя root без пароля.Таким образом, в скрипте мы пытаемся установить пароль, используя:
sudo mysqladmin -u root password abc123
Это приводит к следующему сообщению об ошибке и не устанавливает пароль:
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.
Скрипт запускается(безопасное) соединение SSH, но пароль не установлен.Мы также безуспешно пытались вызвать несколько вариантов следующей команды, используя MySQL CLI:
sudo mysql -u root -e "use mysql;update user set authentication_string=password('abc123') where user='root';flush privileges;
решено
Я нашел объяснение проблемы и решение здесь: https://www.percona.com/blog/2016/03/16/change-user-password-in-mysql-5-7-with-plugin-auth_socket/
Вот решение:
sudo mysql -u root -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'newPassword';"
Это можно использовать в скрипте для автоматической установки.