我想为 mysql root 用户设置强密码。但是有一个蛋鸡问题。我有空服务器。我加盐。root 密码为空(安装后默认)。
如果我使用
root:
mysql_user.present:
- name: root
- password: $ecur3h4x0r
- host: %
然后我将无法调用任何其他 mysql 状态,因为它们需要密码。但是下次我做 highstate 时这个调用将不起作用,因为 state 尝试使用空密码进行连接。
我想为 mysql root 用户设置强密码。但是有一个蛋鸡问题。我有空服务器。我加盐。root 密码为空(安装后默认)。
如果我使用
root:
mysql_user.present:
- name: root
- password: $ecur3h4x0r
- host: %
然后我将无法调用任何其他 mysql 状态,因为它们需要密码。但是下次我做 highstate 时这个调用将不起作用,因为 state 尝试使用空密码进行连接。
是的,我们将添加一个“default_user”和“default_pass”设置,以便您处理这种情况。它应该在 0.17.0
以防有人在开始使用 saltstack 管理 mysql 时偶然发现这个问题。
以下是它在当前 salt 版本(salt 2015.5.0 (Lithium))中的工作方式。请注意,mysql_user.present-state 足够聪明,可以在没有密码的情况下尝试它。在随后的运行中,该状态将使用 root 密码进行连接,并意识到 root 的密码处于正确状态。
root:
mysql_user.present:
- host: localhost
- password: s3cure_root_password
another_user:
mysql_user.present:
- host: localhost
- password: anoth3r_user_password
- connection_user: root
- connection_pass: s3cure_root_password
我想指出在 ubuntu 18.04 下的 master / minion 版本“2019.2.0”中对我有用的两件事:
mysql_user.present:
- name: root
- host: localhost
- password: pillar['mysql']['mysqlrootpassword']
- connection_charset: utf8
- saltenv:
- LC_ALL: "en_US.utf8"
之后,无论 root 密码的值如何,该命令都将始终成功。User root@localhost is already present with the desired password
root
时才允许登录sudo