本博客不欢迎:各种镜像采集行为,请尊重知识产权法律法规。大家都是程序员,不要闹得不开心。

话说,苏南大叔在docker里面成功的配置好了第一个mysql实例。见这里:https://newsn.net/say/docker-mysql-image.html 。那么,下一个问题就来了,如何修改这个mysql实例的root密码?

经典方式

当然,连入到mysql,然后使用命令行修改密码是可以的。这也是本篇内容的唯一答案。请知晓。

set password for 用户名@localhost = password('新密码'); 
set password for root@localhost = password('123'); 

对于连接mysql的办法,你可以使用任何办法,客户端、命令行。或者通过docker exec进入docker,然后再进入mysql。看你喜欢。

修改docker参数

既然以及进步到了docker时代,我们要用docker的办法来解决问题。那么就是修改MYSQL_ROOT_PASSWORD这个参数了。点击保存后,mysql实例重启,验证新密码生效。

但是,实践发现,这样做,是有问题的。原因就是,这样修改后,整个mysql的实例,事实上都被重置了,原来建好的数据库也消失了,这显然不是我们想要的结果。这就涉及到了数据持久化的问题。

我们需要修改『settings=>volumes』里面的路径配置,把docker内部的路径/var/lib/mysql,映射到本地的目录上。这样,相关的数据也就持久化了。

苏南大叔:docker 的 mysql 实例,如何数据持久化及修改密码? - mysql-share-00
docker 的 mysql 实例,如何数据持久化及修改密码?(图4-1)

但是保存后,整个mysql实例都挂了,完全启动不起来,只有个红色的字,一闪而过。好吧,这个时候,就只能求助命令行模式了。

docker start some-mysql

然后得到了详细的报错信息,提示,我们设置的这个目录,docker并没有相关的权限,需要在docker里面进行设置。

苏南大叔:docker 的 mysql 实例,如何数据持久化及修改密码? - mysql-share-03
docker 的 mysql 实例,如何数据持久化及修改密码?(图4-2)

下面是设置的过程截图。

苏南大叔:docker 的 mysql 实例,如何数据持久化及修改密码? - mysql-share-04
docker 的 mysql 实例,如何数据持久化及修改密码?(图4-3)

苏南大叔:docker 的 mysql 实例,如何数据持久化及修改密码? - mysql-share-05
docker 的 mysql 实例,如何数据持久化及修改密码?(图4-4)

保存生效后,再怎么修改配置,数据库也不会丢失了。但是,通过这种修改配置MYSQL_ROOT_PASSWORD的方法,重置mysqlroot密码的办法,也失效了。

总结

大家就还是老老实实的先通过mysql命令行修改密码吧。经典有效!

set password for 用户名@localhost = password('新密码'); 

结语

欢迎关注苏南大叔的更多mysql精彩文章,https://newsn.net/tag/mysql/

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。