You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在不覆盖MySQL模块配置文件的前提下用Hiera eyaml加密密码

实现加密MySQL用户密码且不修改模块自带Hiera文件的方法

核心原理

Puppet Hiera的查找优先级是环境级数据 > 模块级数据,直接在生产环境的data目录下定义加密变量,即可覆盖模块默认配置,无需修改MySQL模块自带的hiera.yaml和common.yaml。


步骤1:加密目标用户的密码

使用eyaml命令加密需要设置的MySQL用户密码(以创建dbuser@localhost为例):

eyaml encrypt -l 'mysql::server::users::dbuser@localhost::password' -s 'your_dbuser_password'

执行后会生成类似ENC[PKCS7,...==]格式的密文,复制保存该密文。

步骤2:在生产环境的data文件中添加加密用户配置

编辑生产环境的common.yaml(路径:/etc/puppetlabs/code/environments/production/data/common.yaml),添加MySQL用户的加密密码及相关配置,示例如下:

---
# 已有的root密码配置
mysql::server::root_password: >
  ENC[PKCS7,...==]

# 新增加密的用户配置(按MySQL模块参数格式定义)
mysql::server::users:
  dbuser@localhost:
    password: >
      ENC[PKCS7,...==]  # 这里粘贴步骤1生成的密文
    ensure: present
    privileges:
      'mydb.*': 'ALL'  # 按需配置用户权限

如果需要针对特定节点配置,可将上述内容写入对应节点的yaml文件(nodes/%{::trusted.certname}.yaml),优先级会高于common.yaml。

步骤3:验证配置生效

在Puppet Agent主机上执行:

puppet agent -t

执行完成后,登录MySQL验证用户是否创建成功,且密码为解密后的明文密码:

mysql -u root -p
SELECT user, host FROM mysql.user;

内容的提问来源于stack exchange,提问作者Confounder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 03:34:53