Zaopatrzyłem mój serwer w poradnik Ansible. Korzystałem z poradnika root / bedrock-Ansible .
Jednym z zadań było skonfigurowanie serwera mysql wraz z hasłem użytkownika root mysql.
Teraz muszę pilnie zmienić to hasło. Kroki, które podjąłem:
- Zaktualizowałem zmienne dla Roli Ansible
ansible-playbook -i hosts/staging server.yml
Wykonałem polecenie w celu ponownego uruchomienia serwera
Wszystkie zadania zostały wykonane zgodnie z oczekiwaniami (bez zmian), ale skrypt nie powiódł się przy
[mariadb | Set root user password]
tym komunikacie:
msg: unable to connect to database, check login_user and login_password are correct or ~/.my.cnf has the credentials
Domyślam się, że po ustawieniu hasła root MySQL, zmiana serwera nie może go zmienić.
Czy w ogóle można zmienić hasło roota MySQL, ponownie konfigurując serwer za pomocą Ansible? Jakie są moje opcje?
mysqladmin
- ale to było zanim zobaczyłem twoją odpowiedźMożesz użyć ~ / .my.cnf do zmiany hasła root-mysql.
Sztuką jest mieć zadanie „Ustaw hasło roota” (nr.1), które ustawi hasło. Następnie masz zadanie, które tworzy ~ / .my.cnf z prawidłowymi poświadczeniami (nr.2).
W nowym systemie ~ / .my.cnf nie jest obecny. Zadanie nr.1 utworzy użytkownika root-mysql z podanymi poświadczeniami. W obecnym systemie poświadczenia z ~ / .my.cnf są używane do logowania i ustawiania hasła na hasło_mysql_root_passot . Zadanie nr.2 utworzy ~ / .my.cnf lub zastąpi istniejące stare poświadczenia ~ / .my.cnf nowymi.
Dużą zaletą tego podejścia jest posiadanie tylko jednej zmiennej „mysql_root_password”, która jest zawsze poprawna z punktu widzenia podręcznika. W obecnych systemach ~ / .my.cnf jest rodzajem pamięci dla bieżących lokalnych poświadczeń mysql.
za pomocą client.my.cnf.j2:
Dalsza lektura
Ważne uwagi z dokumentacji ansible-mysql_user_module :
Notatka 1:
Uwaga 2:
źródło
mysql --database mysql --execute "select host from user where user = 'root';"
. Ten post działa tak samo jak ta odpowiedź, ale zawiera kod do ustawiania wszystkich haseł.Dla następnej osoby, która szuka tu odpowiedzi. Chociaż zaakceptowana odpowiedź jest prawdziwa, musisz być bardzo dokładny, jeśli używasz MySQL 5.7, ponieważ anonimowe logowanie w mysqld w trybie demonizowanym (usługa) jest niedozwolone. Zamiast tego MUSISZ zeskrobać plik /var/log/mysqld.log w celu uzyskania TYMCZASOWEGO hasła, które ktoś postanowił utworzyć, i użyj go na login_password = ydaetskcoR. To była funkcja, którą postanowili wdrożyć w wersji 5.7 repozytorium deweloperów, więc jeśli chcesz tego uniknąć, użyj starszej wersji (5.6).
Dokumentacja tutaj: 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/
źródło
Istnieje podręcznik Ansible służący do hartowania MySQL.
https://github.com/dev-sec/ansible-mysql-hardening
To nie tylko zmieniło hasło roota, ale także wykonuje dodatkowe kroki w celu wzmocnienia serwera.
Spójrz na plik readme.
źródło