方法一:使用临时容器运行SQL命令

通过docker run启动一个临时MySQL容器,直接执行修改密码的SQL命令。示例命令如下(替换your_passwordroot为实际值):

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的机密管理功能。

更多推荐