docker的mysql实例,如何数据持久化及修改密码?
发布于 作者:苏南大叔 来源:程序如此灵动~
话说,苏南大叔在docker里面成功的配置好了第一个mysql实例。见这里:

那么,下一个问题就来了,如何修改这个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,映射到本地的目录上。这样,相关的数据也就持久化了。

但是保存后,整个mysql实例都挂了,完全启动不起来,只有个红色的字,一闪而过。好吧,这个时候,就只能求助命令行模式了。
docker start some-mysql然后得到了详细的报错信息,提示,我们设置的这个目录,docker并没有相关的权限,需要在docker里面进行设置。

下面是设置的过程截图。


保存生效后,再怎么修改配置,数据库也不会丢失了。但是,通过这种修改配置MYSQL_ROOT_PASSWORD的方法,重置mysql的root密码的办法,也失效了。
总结
大家就还是老老实实的先通过mysql命令行修改密码吧。经典有效!
set password for 用户名@localhost = password('新密码'); 结语
欢迎关注苏南大叔的更多mysql精彩文章,https://newsn.net/tag/mysql/ 。
set password for root@localhost = password('admin');
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'password('admin')' at line 1
mysql8吧?