mysql命令-mysql_config_editor
以下是关于 mysql_config_editor 工具的全面中文详解,这是 MySQL 官方提供的凭据安全管理工具(MySQL 5.6+ 支持):
1. 核心功能
-
安全存储认证信息:将 MySQL 登录凭据加密保存在
~/.mylogin.cnf文件(Windows 为%APPDATA%\MySQL\.mylogin.cnf) -
消除密码明文暴露:避免在命令行/脚本中直接使用
-p密码的安全风险 -
多环境配置管理:支持配置多个不同服务器/角色的登录路径(login path)
2. 核心优势
传统方式风险
mysql_config_editor 解决方案
命令历史记录密码泄露 (mysql -uroot -p123)
密码加密存储,命令行无需输入密码
脚本中硬编码密码风险
脚本调用时只需指定登录路径名
多环境切换需修改脚本
预定义多个登录路径,一键切换环境
.my.cnf 文件密码明文存储
.mylogin.cnf 使用 AES 加密存储
3. 基础使用命令
3.1 添加登录路径(会提示输入密码)
mysql_config_editor set --login-path=prod \
--host=db1.example.com --user=admin --port=3306 --password
3.2 查看所有登录路径
mysql_config_editor print --all
3.3 使用登录路径连接
mysql --login-path=prod# 或指定数据库
mysql --login-path=prod -D sales_db
3.4 删除登录路径
mysql_config_editor remove --login-path=prod
4. 高级用法
4.1 多环境配置示例
# 生产环境
mysql_config_editor set --login-path=prod \
--host=prod-db.example.com --user=prod_admin
# 开发环境
mysql_config_editor set --login-path=dev \
--host=localhost --user=dev_user
# 只读监控账户
mysql_config_editor set --login-path=monitor \
--host=db-replica.example.com --user=readonly_user
4.2 在脚本中使用
#!/bin/bash
# 备份生产数据库
mysqldump --login-path=prod --all-databases > full_backup.sql
# 同步开发数据
mysql --login-path=dev -e "CREATE DATABASE IF NOT EXISTS test"
mysqlpump --login-path=prod --databases sales | mysql --login-path=dev
4.3 与其他工具集成
# mysqldump
mysqldump --login-path=prod db_name > dump.sql
# mysqladmin
mysqladmin --login-path=prod status
# mysqlcheck
mysqlcheck --login-path=prod --all-databases
5. 安全机制详解
安全特性
说明
AES 加密
使用 .mylogin.cnf 文件密钥加密(非系统级密钥)
文件权限
自动设置为 600 (-rw-------),仅属主可读
内存安全
密码仅在内存中解密,不写入临时文件
密码显示保护
print 命令始终显示 *****,无法查看真实密码
密钥绑定
加密密钥与用户账户绑定,不同用户无法解密
6. 实际应用场景
场景 1:自动化脚本
#!/bin/bash
# 无需硬编码密码的备份脚本
mysqldump --login-path=backup_user \
--all-databases | gzip > /backups/db_$(date +%F).sql.gz
场景 2:多角色切换
# DBA 管理操作
mysql --login-path=root_admin -e "SHOW ENGINE INNODB STATUS"
# 应用连接
mysql --login-path=app_user -D app_db -e "SELECT COUNT(*) FROM users"
# 监控系统
mysqladmin --login-path=monitor ping
场景 3:临时访问授权
# 创建临时访问路径(有效期内)
mysql_config_editor set --login-path=temp_access \
--host=db.example.com --user=temp_user
# 使用后立即删除
mysql_config_editor remove --login-path=temp_access
7. 注意事项与最佳实践
-
密钥安全:
-
.mylogin.cnf文件不可复制到其他机器使用(密钥绑定用户) -
重装系统或迁移用户时需要重新配置
-
权限管理:
-
chmod 600 ~/.mylogin.cnf # 确保权限正确 -
密码更新:
-
# 密码变更后更新 mysql_config_editor reset --login-path=prod -
企业级增强:
-
结合 MySQL Enterprise 的 Vault 插件实现硬件级密钥管理
-
通过
mysql_config_editor set --use-vault启用 -
故障排查:
-
# 查看文件状态 ls -l ~/.mylogin.cnf # 测试连接 mysql --login-path=prod --connect-timeout=5 -e "SELECT 1"
8. 与类似工具对比
工具
密码存储方式
多环境支持
安全性
易用性
mysql_config_editor
AES 加密文件
支持
5星
4星
环境变量 (MYSQL_PWD)
进程内存
单一
2星
4星
.my.cnf 文件
明文文本
支持
1星
5星
命令行参数
命令历史
单一
不安全
5星

发表评论
所有评论