如何使用Ansible和Vagrant安装MySQL 5.7?

时间:2016-05-30 21:07:51

标签: mysql vagrant ansible

我尝试使用Vagrant在Ubuntu Trusty64上自动安装MySQL 5.7。这就是我的安装方式:

- 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

这会在Vagrant实例上安装MySQL 5.7,但是当我尝试使用mysql -p -u root登录时,它根本不起作用;似乎没有空密码,我试着检查输出。

是否可以获取密码或在安装过程中进行设置?

3 个答案:

答案 0 :(得分:2)

从版本5.7安装MySQL不只是root的空密码,而是为root帐户设置了身份验证插件auth_socket,因此您可以以root用户身份启动mysql而无需密码,但同样的命令赢得了' t让你进入其他用户启动时。它非常好,但令我们很多人感到惊讶。为了实现旧式行为,我们习惯于您需要更改身份验证插件并使用以下命令立即设置密码:

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

我在这里很好地解释了这一点:Change user password in MySQL 5.7 with “plugin: auth_socket”(并且积分去那里)

这是我的Ansible文章:

  - 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来避免在再次运行时停止我的剧本 - 设置密码后该命令无法正常工作。

答案 1 :(得分:0)

这是我在vagrant中安装后配置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

我不记得我是如何达到这个目标的,已经有一段时间了。可能是一些链接和实验。试一试。

答案 2 :(得分:0)

我觉得有趣的是,用户流浪汉mysql -p -u root或者只是mysql -u root不起作用....但是如果你和root一样,你没有密码,你就可以开始做你的事了。 ...

干杯!