2016-05-30 3 views
0

Я пытаюсь установить MySQL 5.7 автоматически на Ubuntu Trusty64 с помощью Vagrant. Это как моя установка выглядит как:Как установить MySQL 5.7 с помощью Ansible and Vagrant?

- name: Install new APT package repository 
    apt: deb=mysql-apt-config_0.7.2-1_all.deb 
    sudo: yes 
- name: Updating the cache 
    apt: update_cache=yes 
    sudo: yes 
- name: Install mysql server 
    sudo: yes 
    apt: pkg={{ item }} state=latest 
    with_items: 
    - mysql-server 
    - mysql-client 
    - python-mysqldb 

Это устанавливает MySQL 5.7 на экземпляре Vagrant, но когда я пытаюсь войти в систему, используя mysql -p -u root он просто не работает; похоже, у вас больше нет пустого пароля, я пытался проверить вывод.

Есть ли способ получить пароль или установить его во время установки?

+1

Помогла ли вам задача 'mysql_user'? http://docs.ansible.com/ansible/mysql_user_module.html – halfer

ответ

0

Это, как настроить MySQL после установки в бродягу:

- name: Configure mysql step 1 
    shell: echo mysql-server mysql-server/root_password password vagrant | debconf-set-selections 
    become: true 

- name: Configure mysql step 2 
    shell: echo mysql-server mysql-server/root_password_again password vagrant | debconf-set-selections 
    become: true 

- name: Create mysql client configuration file 
    blockinfile: 
    dest: ~/.my.cnf 
    create: yes 
    block: | 
     [client] 
     user=root 
     password=vagrant 

Я не помню, как я добрался до этого, это было давненько. Возможно, некоторые ссылки и эксперименты. Попробуйте.

0

Мне было интересно, что с пользователем брандмауэр mysql -p -u root или просто mysql -u root не работает ... но если вы делаете то же самое, что и root, у вас нет пароля, и вы можете начать делать свое дело ....

Приветствия!

+1

Проверьте в домашнем каталоге пользователя root файл '.my.cnf', чтобы узнать, почему это так. Вы можете отредактировать этот ответ, чтобы более подробно объяснить, почему это работает, и как вы можете продолжить свою роль/игру Ansible с использованием этой информации, чтобы установить учетные данные пользователя root или создать больше пользователей и т. Д. – ydaetskcoR

1

Начиная с версии 5.7 MySQL устанавливается с не только пустым паролем для root, но и с аутентификационным плагином auth_socket, установленным для учетной записи root, поэтому вы можете запустить mysql как пользователь root без пароля, но та же команда не позволит вам, когда его запускает другой пользователь. Это очень приятно, но удивительно многих из нас. Для достижения старого поведения стиля мы привыкли к вам нужно изменить плагин аутентификации и установить пароль на один раз, используя команду:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'test'; 

Я нашел, что это хорошо объяснено здесь: Change user password in MySQL 5.7 with “plugin: auth_socket” (и кредиты туда)

А вот мой анзибль кусок, чтобы сделать это:

- name: Set MySQL root password 
    command: /usr/bin/mysql -e "alter user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'yourrootpassword';" 
    ignore_errors: yes 
    become: yes 

Я использовал ignore_errors, чтобы избежать остановок моего сборника пьес, когда он снова запустить - эта команда не будет работать после установки пароля.

+0

Я читал, что вы можете это сделать с помощью модуля 'debconf', но он, похоже, не работает на Ubuntu 14.04 и MySQL 5.7 и ansible 2.3.0.0-1 – SomethingOn

Смежные вопросы