Я установил MySql, nginx и PHP, используя следующую книгу:
---
- hosts: all
become: true
tasks:
- name: Make Sure we can connect to hosts
ping:
- name: Install PHP
yum: name={{item}} state=present update_cache=yes
with_items:
- php
- php-fpm
- php-mysql
- php-xml
- name: add repository nginx-release (CentOS6/CentOS7)
yum: name="http://nginx.org/packages/centos/{{ansible_distribution_major_version}}/noarch/RPMS/nginx-release-centos-{{ansible_distribution_major_version}}-0.el{{ansible_distribution_major_version}}.ngx.noarch.rpm"
- name: Install nginx
yum: name=nginx state=installed enablerepo=nginx
- name: Download MySQL Community Repo
command: /usr/bin/rpm -ivh /tmp/mysql-community-release-el7-7.noarch.rpm
- name: Install MySql
yum: name={{item}} state=installed
with_items:
- mysql-server
- MySQL-python
Я пытаюсь настроить mysql с помощью ansible, используя следующую книгу:
---
- hosts: ansible-ctl
become: true
tasks:
- name: Make Sure we can connect to hosts
ping:
- name: Start MySQL Server and enable it
service: name=mysqld state=started enabled=yes
- name: Generate new root password
command: openssl rand -hex 7 creates=/root/.my.cnf
register: mysql_new_root_pass
- name: Create my.cnf
template: src=templates/mysql/my.cnf dest=/root/.my.cnf
when: mysql_new_root_pass.changed
- name: Remove anonymous users
mysql_user: name='' host_all=yes state=absent
when: mysql_new_root_pass.changed
- name: Remove test database
mysql_db: name=test state=absent
when: mysql_new_root_pass.changed
- name: Output new root password
debug: msg="New root password is {{mysql_new_root_pass.stdout}}"
when: mysql_new_root_pass.changed
- name: Update root password
mysql_user: name=root host={{item}} password={{mysql_new_root_pass.stdout}}
with_items:
- "{{ ansible_hostname }}"
- 127.0.0.1
- ::1
- localhost
when: mysql_new_root_pass.changed
Файл шаблона my.cnf находится в папке /templates/mysql/:
[client]
user=root
password={{ mysql_new_root_pass.stdout }}
Файл /root/.my.cnf
создается с паролем.
Сначала я запускаю службу mysql. Затем с помощью openssl создайте новый пароль и сохраните его в mysql_new_root_pass
. Затем, основываясь на существовании файла /root/.my.cnf
, я пытаюсь выполнить такие задачи, как удаление анонимных пользователей, удаление тестовой базы данных и обновление пароля root. Но мой playbook выдает ошибку на шаге Remove Anonymous Users
. Ниже приведена ошибка, которую я получаю:
fatal: [ansible-ctl]: FAILED! => {"changed": false, "msg": "unable to connect to database, check login_user and login_password are correct or /root/.my.cnf has the credentials. Exception message: (1045, \"Access denied for user 'root'@'localhost' (using password: YES)\")"}
Я следую книге Apress - Ansible Beginner to Pro, а также следующей ссылке Установка MySQL на сервер Centos 7 с помощью Ansible. Мой контроллер ansible — это Macbook Pro с Centos 7 Minimal, работающий на виртуальной машине.
Сгенерированный .my.cnf :
[client]
user=root
password=<generated password>
Может ли кто-нибудь объяснить, что здесь происходит и как я могу удалить анонимных пользователей?
/root/.my.cnf
(заменить конфиденциальную информацию) - person Baptiste Mille-Mathias   schedule 09.07.2018