我尝试使用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
登录时,它根本不起作用;似乎没有空密码,我试着检查输出。
是否可以获取密码或在安装过程中进行设置?
答案 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一样,你没有密码,你就可以开始做你的事了。 ...
干杯!