使用ansible全新安装mariadb后无法设置root密码

toy*_*ian 2 mariadb password debian

问题:
全新安装 mariadb 10.4 后,无法使用 ansible 设置 root 密码。
当 mariadb 从 debian 软件包(不是官方 debian 软件包)安装 mariadb 时,密码为root空,并且可以从 localhost 进行无密码登录。

尽管如此,ansiblemysql_user还是抛出了以下错误:
failed: [XXX] (item=localhost) => {"ansible_loop_var": "item", "changed": false, "item": "localhost", "msg": "unable to connect to database, check login_user and login_password are correct or /root/.my.cnf has the credentials. Exception message: (1698, \"Access denied for user 'root'@'localhost'\")"}

toy*_*ian 6

解决方案:

我们需要login_unix_socket: /var/run/mysqld/mysqld.sock在任务中添加:

- name: update mysql root password for root account
  mysql_user:
    name: root
    login_unix_socket: /var/run/mysqld/mysqld.sock
    host: 'localhost'
    password: '{{ mysql_root_password }}'
    priv: "*.*:ALL,GRANT"
    check_implicit_admin: true
Run Code Online (Sandbox Code Playgroud)

说明:
通过网络连接时无法进行无密码登录(这是 ansible 的作用),只有在使用 unix 套接字连接时才可能进行无密码登录(CLImysql在连接到 时会进行此操作localhost)。所以我们需要强制ansible连接到socket。

我希望这篇文章可以节省人们解决这个问题的时间。