首页 >> 工具知识
4.2 在脚本中使用
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星 |
最新文章
mysql分页问题2025-08-04
千万数据先insert和先建索引哪个快2025-08-04
MySQL 中大小表关联查询如何优化2025-08-04
sql技巧-每个班年龄排前两名的人2025-08-03
MySQL 导致 cpu 飙升的话,要怎么处理呢?2025-07-29
MySQL 中为千万级大表添加字段2025-07-29
mysql中百万级别以上的数据如何删除2025-07-29
分库分表带来的问题2025-07-29
mysql中常用的分库分表中间件有哪些2025-07-29
mysql不停机扩容2025-07-29