创建新数据库用户(推荐) 在数据库中创建一个新用户(如 app_user_v2),赋予与旧用户相同的权限,避免直接修改原凭据:CREATE USER 'app_user_v2'@'%' IDENTIFIED BY 'new_secure_password'; GRANT ALL PRIVILEGES ON db_name.* TO 'app_user_v2'@'%'; FLUSH PRIVILEGES;
或重置原用户密码(需谨慎) 如果必须复用原用户名,直接修改密码(需确保所有服务能及时感知变更):ALTER USER 'app_user'@'%' IDENTIFIED BY 'new_secure_password';
双凭据并行期 在轮换窗口内,让新旧凭据同时有效(需数据库支持多用户访问同一资源):-- 确保新旧用户均可访问 GRANT ALL PRIVILEGES ON db_name.* TO 'app_user'@'%'; GRANT ALL PRIVILEGES ON db_name.* TO 'app_user_v2'@'%';
服务逐步更新 分批次重启服务,优先更新非核心服务,验证新凭据可用性后再更新核心服务。
(5) 验证与清理
验证连接 通过日志或监控确认所有服务已切换至新凭据,旧凭据不再被使用。
清理旧凭据 确认无服务依赖后,删除旧用户或密码:DROP USER 'app_user'@'%';
2. 关键技术与工具
(1) 动态 Secret 管理
HashiCorp Vault 通过 Database Secrets Engine 动态生成和管理数据库凭据,支持自动轮换:vault write database/roles/app_role \ db_name=mysql \ creation_statements="CREATE USER '{{name}}'@'%' IDENTIFIED BY '{{password}}'; GRANT ALL ON db_name.* TO '{{name}}'@'%';" \ default_ttl="1h" \ max_ttl="24h"