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吧?