Problema:
Após uma nova instalação do mariadb 10.4, a senha do root não pôde ser definida usando o ansible.
Ao instalar o mariadb dos pacotes debian pelo mariadb (não os pacotes oficiais do debian), a senha de root
está vazia e um login sem senha é possível a partir do localhost.
Ainda assim, o ansible mysql_user
lançou o seguinte erro:
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'\")"}
Solução:
Precisamos adicionar
login_unix_socket: /var/run/mysqld/mysqld.sock
à tarefa:Explicação:
O login sem senha não é possível ao conectar pela rede (isso é o que o ansible faz), apenas ao conectar usando o soquete unix (a
mysql
CLI faz isso ao conectar aolocalhost
). Portanto, precisamos forçar o ansible a se conectar ao soquete.Espero que este post economize tempo para alguém descobrir isso.