Я снабдил свой сервер Ansible playbook. Я использовал пьесу root / bedrock-Ansible .
Одной из задач было настроить сервер MySQL вместе с паролем пользователя root MySQL.
Теперь мне нужно срочно сменить этот пароль. Шаги, которые я предпринял:
- Я обновил переменные для Ansible ролей
- Я выполнил команду
ansible-playbook -i hosts/staging server.yml
для повторной подготовки сервера
Все задачи были выполнены, как и ожидалось (без изменений), но скрипт завершился неудачно
[mariadb | Set root user password]
с этим сообщением:
msg: unable to connect to database, check login_user and login_password are correct or ~/.my.cnf has the credentials
Я предполагаю, что после того, как пароль root MySQL был установлен, повторная настройка сервера не может изменить этот пароль.
Можно ли вообще изменить пароль root MySQL, повторно предоставив сервер Ansible? Какие у меня варианты?
mysqladmin
- но это было до того, как я увидел ваш ответВы можете неправильно использовать ~ / .my.cnf для возможности изменения пароля mysql-root.
Хитрость заключается в том, чтобы иметь задачу «Установить пароль root» (номер 1), которая будет устанавливать пароль. После этого у вас есть задача, которая создает ~ / .my.cnf с правильными учетными данными (номер 2).
В новой системе ~ / .my.cnf отсутствует. Задача №1 создаст пользователя mysql-root с заданными учетными данными. В существующей системе учетные данные из ~ / .my.cnf используются для входа в систему и установки пароля для mysql_root_password . Задача №2 создаст ~ / .my.cnf или перезапишет существующие старые учетные данные ~ / .my.cnf новыми.
Большим преимуществом этого подхода является наличие только одной переменной «mysql_root_password», которая всегда является правильной с точки зрения playbook. В существующих системах ~ / .my.cnf является своего рода хранилищем текущих локальных учетных данных mysql.
с client.my.cnf.j2:
дальнейшее чтение
Соответствующие заметки из ansible-mysql_user_module-Documentation :
Note1:
Заметка 2:
источник
mysql --database mysql --execute "select host from user where user = 'root';"
. Этот пост аналогичен этому ответу, но содержит код для установки всех паролей.Для следующего человека, который приходит искать ответы здесь. Хотя принятый ответ верен, вы должны быть очень усердными, если вы используете MySQL 5.7, потому что в mysqld не разрешен анонимный вход в демонизированный режим (сервис). Вместо этого вы ДОЛЖНЫ очистить /var/log/mysqld.log для ВРЕМЕННОГО пароля, который кто-то решил создать, и использовать его в login_password = ydaetskcoR. Эту функцию они решили реализовать в версии 5.7 репозитория dev, поэтому, если вы хотите избежать этого, используйте более старую версию (5.6).
Документация здесь: https://dev.mysql.com/doc/refman/5.7/en/server-options.html#option_mysqld_initialize-insecure
http://mysqlserverteam.com/initialize-your-mysql-5-7-instances-with-ease/
источник
Существует Ansible playbook, используемый для укрепления MySQL.
https://github.com/dev-sec/ansible-mysql-hardening
Это не только изменило пароль root, но также выполняет некоторые дополнительные действия по усилению защиты сервера.
Посмотрите на файл readme.
источник