如何在Docker容器中执行SQL脚本来修改密码?
·
方法一:使用临时容器运行SQL命令
通过docker run启动一个临时MySQL容器,直接执行修改密码的SQL命令。示例命令如下(替换your_password和root为实际值):
docker run --rm -e MYSQL_ROOT_PASSWORD=old_password mysql:tag \
mysql -u root -pold_password -e "ALTER USER 'root'@'%' IDENTIFIED BY 'your_password';"
方法二:在运行中的容器内执行SQL文件
若需修改已运行容器的密码,可将SQL脚本挂载到容器内执行。假设脚本文件为change_password.sql,内容如下:
ALTER USER 'root'@'%' IDENTIFIED BY 'new_password';
通过以下命令执行:
docker cp change_password.sql container_name:/tmp/
docker exec -i container_name mysql -u root -pold_password < /tmp/change_password.sql
方法三:通过环境变量初始化密码
对于MySQL官方镜像,可通过环境变量直接设置新密码:
docker run -d --name mysql_container \
-e MYSQL_ROOT_PASSWORD=new_password \
-e MYSQL_ROOT_HOST=% \
mysql:tag
注意事项
- 确保MySQL服务在容器内已启动,执行前可用
docker exec container_name service mysql status检查。 - 密码特殊字符需用引号包裹,例如
'P@ssw0rd'。 - 修改后验证新密码是否生效:
docker exec -it container_name mysql -u root -pnew_password
安全建议
避免在命令行直接暴露密码,可使用--init-file加载SQL文件或通过Docker Secrets管理敏感信息。生产环境建议结合Kubernetes或Docker Swarm的机密管理功能。
更多推荐
所有评论(0)