docker官方mysql镜像自定义配置详解
之前为了节省安装时间,所以用官方mysqldocker镜像启动mysql。
通过
$dockerrun--namesome-mysql-eMYSQL_ROOT_PASSWORD=my-secret-pw-ddaocloud.io/mysql:tag
some-mysql指定了该容器的名字,my-secret-pw指定了root用户的密码,tag参数指定了你想要的MySQL版本
这样数据是没有持久化的所以在启动参数中需要挂载本地目录
于是这样数据库一直跑着,但是由于最近程序需要支持emoji表情,不得不将mysql的字符集更改。
$dockerrun--namesome-mysql-v/my/own/datadir:/var/lib/mysql-eMYSQL_ROOT_PASSWORD=my-secret-pw-ddaocloud.io/mysql:tag
这时候就可以挂载自定义配置文件,官方文档说明
当MySQL服务启动时会以/etc/mysql/my.cnf为配置文件,本文件会导入/etc/mysql/conf.d目录中所有以.cnf为后缀的文件。这些文件会拓展或覆盖/etc/mysql/my.cnf文件中的配置。因此你可以创建你自己需要的配置文件并挂载至MySQL容器中的/etc/mysql/conf.d目录。
所以最简单改变数据库配置的方式就是在宿主机上新建配置文件,改成utf8mb4
[client] default-character-set=utf8mb4 [mysqld] character-set-client-handshake=FALSE character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci [mysql] default-character-set=utf8mb4
随后将文件复制到相应docker容器文件夹下
dockercp/home/my.cnf(宿主机文件路径)[容器id]:/etc/mysql/mysql.conf.d
最后使用dockerstop和start命令重启容器就实现了加载自定义配置。
由Docker的MySQL官方镜像配置的容器无法启动问题
我使用的是MySQL的Docker镜像。先创建并启动镜像:
#dockerrun--namemysql-b\ >-p33002:3306-v/zc/mysql/datadir-b:/var/lib/mysql\ >-eMYSQL_ROOT_PASSWORD='123456'-dmysql:latest
正常启动,没有问题。通常我们使用MySQL的时候,需要设置参数。要设置参数,我们先得进入容器的bash,进行操作:
dockerexec-itmysql-bbash
MySQL的默认配置文件是/etc/mysql/my.cnf文件。如果想要自定义配置,建议向/etc/mysql/conf.d目录中创建.cnf文件。新建的文件可以任意起名,只要保证后缀名是cnf即可。新建的文件中的配置项可以覆盖/etc/mysql/my.cnf中的配置项。因为MySQL的Docker官方镜像没有提供vim编辑器,所以我用cat命令生成文件并添加内容:
#cat>test.cnf<退出后,停止容器,再重新启动容器,发现容器无法启动。
解决方法
删除原来那个不能启动的容器。重新创建一个新的容器。问题的关键在于原来的test.cnf文件有错误。找到原来配置文件的最后一行:
default-character-set=utf8把这一行删除。添加配置文件的时候保证没有这一行就可以了。
问题原因
MySQL的官方Docker镜像里面,在标签latest下,[mysqld]这一配置段上并没有default-character-set这一配置项。
如果你要查看所有的配置项,可以使用如下命令,利用管道将输出的帮助都放到help.txt文件里面:dockerrun-it--rmmysql:tag--verbose--help>help.txt其中tag表示镜像的标签,比如latest和5.6。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。