Ansible配置MariaDB 10.1.47后root免密登录异常及解决办法
MySQL root@localhost免密登录与unix_socket_plugin冲突问题
我原本运行了下面这段Ansible脚本,期望实现MySQL服务器的root@localhost账号无需输入密码即可直接通过CLI登录(执行命令无异常):
- name: "Set the root password" mysql_user: login_user: root login_password: '' name: root password: "{{ mysql_root_password }}" priv: "*.*:ALL,GRANT" check_implicit_admin: yes host: localhost login_unix_socket: /var/run/mysqld/mysqld.sock - name: "Remove all anonymous user accounts" mysql_user: name: '' host_all: yes state: absent login_user: root login_password: "{{ mysql_root_password }}" login_unix_socket: /var/run/mysqld/mysqld.sock #mysql_secure_installation - name: "Remove MySQL test database" mysql_db: name: test state: absent login_unix_socket: /var/run/mysqld/mysqld.sock - name: "Creates db" mysql_db: name: "{{ db_name }}" state: present login_user: root login_password: "{{ mysql_root_password }}" login_unix_socket: /var/run/mysqld/mysqld.sock
但实际没达到预期效果,后来我用了下面的变通方案才让脚本正常运行:
- name: "Set database password" command: mysql --user=root --password={{ mysql_root_password }} --execute="SET PASSWORD FOR 'root'@'localhost' = PASSWORD('{{ mysql_root_password }}')"; - name: "Grant all to root" command: mysql --user=root --password={{ mysql_root_password }} mysql --execute="GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost';"; - name: "Disable socket plugin" command: mysql --user=root --password={{ mysql_root_password }} mysql --execute="update user set Plugin='' where User='root';"; - name: "Flush privileges" command: mysql --user=root --password={{ mysql_root_password }} mysql --execute="flush privileges";
现在发现问题似乎和unix_socket_plugin有关,但禁用这个插件后,即使我在.my.cnf文件里指定了mysql-client的密码,也无法正常连接MySQL了。
内容的提问来源于stack exchange,提问作者Green
相关产品推荐
相关产品推荐

