如何在不删除Docker Volume的情况下更新MariaDB密码?
无需删除Docker Volume更新MariaDB密码的方法
直接修改docker-compose.yml中的MYSQL_ROOT_PASSWORD不会生效——因为MariaDB容器首次启动后,会检测到数据目录已存在,自动跳过初始化流程。要保留数据卷更新密码,需按以下步骤操作:
步骤1:进入运行中的MariaDB容器
先通过docker ps找到MariaDB容器的名称或ID,执行命令进入容器的MySQL命令行:
docker exec -it [容器名/ID] mysql -uroot -p
输入当前的root密码(比如你配置里的root),进入MySQL交互界面。
步骤2:在数据库内部修改root密码
根据你的MariaDB版本选择对应命令:
- MariaDB 10.4及以上:
ALTER USER 'root'@'%' IDENTIFIED BY '你的新密码';
- MariaDB 10.3及以下:
SET PASSWORD FOR 'root'@'%' = PASSWORD('你的新密码');
执行完密码修改后,刷新权限:
FLUSH PRIVILEGES;
输入exit;退出MySQL命令行,再输入exit退出容器。
步骤3:更新docker-compose配置
打开docker-compose.yml,将mariadb服务下的MYSQL_ROOT_PASSWORD值改为你刚设置的新密码。
步骤4:重启MariaDB容器
执行命令重启容器,让新配置生效:
docker-compose up -d --force-recreate mariadb
注意事项
- 必须先修改数据库内部密码,再更新docker-compose配置,否则容器重启后环境变量与数据库实际密码不一致会导致连接失败。
- 同步更新所有依赖该MariaDB服务的应用配置(比如你的PHP项目、若phpMyAdmin有密码配置也需同步修改)。
内容的提问来源于stack exchange,提问作者LuR
相关产品推荐
相关产品推荐

