如何通过SaltStack为10.4及以上版本MariaDB设置默认root密码
正确配置方案
核心原因说明
你原有配置失败的原因是使用127.0.0.1走TCP连接访问MariaDB,无法触发unix_socket的操作系统用户认证逻辑,无密码访问直接被拒绝。
方案1:优先推荐,走Unix Socket认证(适用于Salt Minion默认以root运行的绝大多数场景)
直接调整mysql_user的连接参数,指定使用本地Unix socket文件连接,此时操作系统root身份运行的Salt Minion可以直接通过unix_socket认证登录,无需初始密码:
Set MariaDB Root Password: mysql_user.present: - name: root - password: {{ root_mariadb_password }} - connection_user: root # 走本地socket连接,不要用127.0.0.1 - connection_host: localhost # 填写你的MariaDB实际socket路径,默认一般为/run/mysqld/mysqld.sock - connection_unix_socket: /run/mysqld/mysqld.sock - connection_password: '' - connection_charset: utf8
方案2:适用于Salt Minion非root运行的特殊场景
如果你的Salt Minion确实没有使用操作系统root身份运行,可以通过提权调用系统root执行mysql命令行完成初始密码设置:
Set MariaDB Root Password: cmd.run: - name: | mysql -e "SET PASSWORD FOR root@localhost = PASSWORD('{{ root_mariadb_password }}'); FLUSH PRIVILEGES;" - runas: root - unless: mysql -u root -p'{{ root_mariadb_password }}' -e "SELECT 1" >/dev/null 2>&1
后续使用说明
完成root密码设置后,后续所有MariaDB相关的Salt State配置,直接填写connection_password: {{ root_mariadb_password }}即可正常认证。
内容的提问来源于stack exchange,提问作者vpseg
相关产品推荐
相关产品推荐

