美文网首页
2018-05-15关于docker4win对于类mysql部署

2018-05-15关于docker4win对于类mysql部署

作者: herohoy | 来源:发表于2018-05-15 16:59 被阅读0次

    无图慎入。

    问题1:本地挂载无效——由于工作环境原因,从macOS平台转回windows,于是需要使用docker4win,在将mariadb:latest拉来使用之后,发现-v挂载的本地目录不起作用,容器启动后产生的任何数据文件都不能同步保存到宿主机上,宿主机重启之后数据就丢失了,在网上查了各种资料都没能解决。后来的解决方案如下:右键-settings-reset-reset to factory defaults..恢复出厂设置,重新设置相关的配置(如shared drives和国内镜像),再次进行挂载,成功。

    问题2:类mysql启动失败——上面的问题解决后,发现用docker run命令建立的容器,首次启动后没过多久就自动停止,之后使用docker start启动也不能成功,使用 docker start -a查看输出日志,发现报InnoDB的一个错误,大概意思是挂载到物理机的ibdata1文件的问题,又是一通无用的百度,最后通过docker search mysql找到名为percona的镜像,pull下来替换掉之前使用的mariadb镜像,重新生成容器,发现除了生成容器命令后的首次启动会自动停止,使用docker start再次启动就可以正常运行了。

    问题3:无法通过外部客户端连接mysql服务——本人使用的SQLyog,连接docker中的mysql服务时报一个类似于“无法通过XX.XX.XX.XX(某个ip值,应该是为docker配置的虚拟以太网)连接”意思的错误,通过docker exec -it进入容器,输入mysql -uroot -p进入mysql并使用密码,失败,尝试在输入密码时不输任何字符直接回车,成功,看来percona镜像的root密码环境变量是无效的。进入mysql之后,使用update mysql.user set authentication_string=password('123456') where user="root";语句修改root密码,使用update user set host=‘%’ where user="root";语句修改root的准入路径为所有,使用flush privileges;语句使上面两个修改生效,完成所有上述操作之后,使用SQLyog连接数据库,成功。

    问题4:日期时间不对——有些镜像本身会带有这些问题,毕竟镜像是官方的,而官方在国外。截至2018-05-16,本人处理该问题有两种思路:1、修改容器时区。使用docker exec -it进入容器,输入命令TZ=/Asia/Shanghai回车修改时区,再输入export TZ使其生效,使用date命令查看时间,成功改为东八区北京时间。该方法治标不治本,重启宿主机之后,环境变量消失,时间又回到UTC时间。2、修改数据库的.cnf配置项。找到已挂载到本地的对应/etc/mysql/conf.d/docker.cnf(或有用的其他.cnf文件,如my.cnf),在[mysqld]之下加入配置项default-time_zone = '+8:00',然后docker restart重启容器,使用select sysdate() from dual;语句验证,时间转为东八区北京时间。该方法只对数据库进行转换,容器时间仍为UTC时间,但配置项持久化,可使数据库保持为正确时区。

    问题5:查询语句group by报错——因为sql_mode中包含了ONLY_FULL_GROUP_BY项,使用select @@global.sql_mode;语句可查询出当前的sql_mode都包含哪些配置项。解决方法:在已挂载到本地的对应/etc/mysql/conf.d/docker.cnf(或有用的其他.cnf文件,如my.cnf)中,在[mysqld]之下加入配置项 sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION 即可。

    以上问题是使用docker4win的类mysql数据库时碰到的一些奇葩问题,记录下来以备不时之需。

    相关文章

      网友评论

          本文标题:2018-05-15关于docker4win对于类mysql部署

          本文链接:https://www.haomeiwen.com/subject/dbfydftx.html