Установка MySQL через Ansible (Debian)

Я пытаюсь использовать Ansible для установки MySQL на сервер Debian, но у меня возникают проблемы, несмотря на то, что я прочитал несколько руководств по этому поводу и рассмотрел некоторые вопросы здесь. Кроме того, я написал тестовый пример и, конечно же, отлично работает, и я не могу понять эффективную разницу.

Моя предполагаемая версия - это отдельная задача mysql.yml, которая включена в более крупную роль. Я бы предпочел не использовать файл .my.cnf, и я не понимаю, является ли это строго необходимым (я не использую его в своих обычных установках, я ввожу пароли другими способами), но в любом случае, он не работает по-другому. Начальная часть этой задачи выглядит так (то, что запущено заранее, очевидно, не имеет значения - установка ключей SSH, выборка нескольких файлов и т. д.):

- name: include variable file for MySQL
  include_vars:
      file: mysql.yml

- name: Set MySQL root password before installing
  debconf: name='mysql-server' question='mysql-server/root_password' value='{{MySQL_root_pass | quote}}' vtype='password'
  become: yes

- name: Confirm MySQL root password before installing
  debconf: name='mysql-server' question='mysql-server/root_password_again' value='{{MySQL_root_pass | quote}}' vtype='password'
  become: yes

- name: Install MySQL packages.
  apt: name = "{{item}}" state=present
  become: yes
  with_items:
     - default-mysql-server
     - default-mysql-client
     - python3-mysqldb
     - python-mysqldb
     - libdbd-mysql-perl

- name: Create a user for the 'library' db
  mysql_user:
    login_user: root
    login_password: '{{ MySQL_root_pass | quote }}'
    name: '{{ library_login_user }}'
    password: '{{ library_login_pw }}'
    priv: 'library.*:ALL,GRANT'
    state: present

Это приводит к следующему выводу:

TASK [common : include variable file for MySQL] ********************************
ok: [localhost]

TASK [common : Set MySQL root password before installing] **********************
changed: [localhost]

TASK [common : Confirm MySQL root password before installing] ******************
changed: [localhost]

TASK [common : Install MySQL packages.] ****************************************
ok: [localhost] => (item=[u'default-mysql-server', u'default-mysql-client', u'python3-mysqldb', u'python-mysqldb', u'libdbd-mysql-perl'])

TASK [common : Create a user for the 'library' db] *****************************
fatal: [localhost]: FAILED! => {"changed": false, "failed": true, "msg": "unable to connect to database, check login_user and login_password are correct or /home/testuser/.my.cnf has the credentials. Exception message: (1698, \"Access denied for user 'root'@'localhost'\")"}

Я не понимаю, что когда я пытаюсь вручную войти на сервер MySQL как root, это не позволяет мне - я получаю ошибку «Доступ запрещен для пользователя 'root' @ 'localhost'», независимо от того, использую ли я пароль, который у меня есть в файле переменных, или пустой пароль. Итак, я застрял с установкой MySQL, которую на самом деле не могу использовать.

С другой стороны, я написал изолированную тестовую книгу с почти идентичным кодом, но просто установил пакеты MySQL (а не несколько других), и когда я запустил это, я являюсь смог войти в систему как root на сервере, используя пароль, установленный в playbook:

- name: install MySQL (only)
  hosts: localhost
  connection: local
  vars:
    MySQL_root_pass: foobar
  tasks:

    - name: Set MySQL root password before installing
      debconf: name='mysql-server' question='mysql-server/root_password' value='{{MySQL_root_pass | quote}}' vtype='password'
      become: yes

    - name: Confirm MySQL root password before installing
      debconf: name='mysql-server' question='mysql-server/root_password_again' value='{{MySQL_root_pass | quote}}' vtype='password'
      become: yes

    - name: Install MySQL packages.
      apt: name = "{{item}}" state=present
      become: yes
      with_items:
         - default-mysql-server
         - default-mysql-client

(Эта версия может работать точно так, как написано.)

Как правильно это сделать? Любое, почему моя исходная версия не работает так, как версия тестового случая? Во всех случаях я устанавливаю на виртуальную машину, для которой я сбрасываю ее на момент первоначальной установки перед запуском Ansible, поэтому от предыдущего запуска ничего не осталось.

«когда я пытаюсь вручную войти на сервер MySQL как root, это не позволяет мне» - «Я могу войти на сервер как root» показывают это вместо описания. Все работает, если запускать из учетной записи root.

techraf 03.07.2018 09:53

Можете ли вы показать результат при запуске с подробным выводом? Нужно ли запускать службу MySQL после установки? (Я не использую Debian). Можете ли вы протестировать с использованием простого пароля, который не нужно указывать (например, 1234_Ab-Cd), или жестко запрограммировать его в playbook для тестирования, а затем перейти к переменным в более поздняя доработка.

dan_linder 09.07.2018 04:04
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
2
1 529
1

Ответы 1

При использовании пакетов debian с Stretch учтите, что аутентификация проходит через пользователя ОС:

https://wiki.debian.org/MySql

С уважением,

Другие вопросы по теме