首页 >> 工具知识

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. 注意事项与最佳实践

  1. 密钥安全:

  2. .mylogin.cnf 文件不可复制到其他机器使用(密钥绑定用户)

  3. 重装系统或迁移用户时需要重新配置

  4. 权限管理:

  5. chmod 600 ~/.mylogin.cnf  # 确保权限正确
    
  6. 密码更新:

  7. # 密码变更后更新
    mysql_config_editor reset --login-path=prod
    
  8. 企业级增强:

  9. 结合 MySQL Enterprise 的 Vault 插件实现硬件级密钥管理

  10. 通过 mysql_config_editor set --use-vault 启用

  11. 故障排查:

  12. # 查看文件状态
    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星

所有评论

最新文章
20.5 性能优化建议2026-05-08
20.4 复杂查询实现2026-05-08
20.3 表创建与数据初始化2026-05-08
20.2 数据库设计2026-05-08
20.1 项目需求分析:博客系统2026-05-08
19.4 自动化备份策略2026-05-08
19.3 导出和导入数据2026-05-08
19.2 恢复备份数据2026-05-05
19.1 使用mysqldump备份数据2026-05-05
18.4 实战:开发简单的学生管理系统2026-05-05
关于我 备案号:蜀ICP备2023042032号-1