美文网首页
docker运行MySQL如何修改配置文件

docker运行MySQL如何修改配置文件

作者: 我杀猪的 | 来源:发表于2019-10-30 10:31 被阅读0次

    最近装了个虚拟机跑mysql

    从docker上下载了latest的mysql镜像

    (文中的命令均在root下执行的)

    使用如下命令创建并运行容器

    docker run --name my_mysql -p 3306:3306 -v ~/conf:/etc/mysql/conf.d -v ~/logs:/logs -v ~/data:/var/lib/mysql -e MYSQL\_ROOT\_PASSWORD=123 -d mysql

    映射3306端口,映射了conf.d,logs,data三个共享目录,root账号密码为123,容器名称为my_mysql

    运行成功后创建表,发现timestamp类型的字段无法将默认值设置为0000-00-00 00:00:00

    查询sql_mode

    select @@sql_mode;

    结果为:

    ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

    发现有NO_ZERO_IN_DATE,NO_ZERO_DATE两个mode

    为了永远删掉它们,需要修改my.cnf配置,但是在docker容器中又不能直接改文件

    于是查看了容器中my.cnf文件的位置

    mysql --help | grep my.cnf

    返回结果

    /etc/my.cnf   /etc/mysql/my.cnf   ~/.my.cnf

    挨个位置去找

    发现/etc/mysql/my.cnf目录是有文件的,输出一下文件内容

    mysql --help | grep my.cnf

    发现在文件末尾有这么两行

    # Custom config should go here

    !includedir /etc/mysql/conf.d/

    诶!  /etc/mysql/conf.d/目录不是正好被我映射出去了吗?

    于是退出容器

    到~/conf目录下

    创建一个my.cnf文件

    加入两行配置

    [mysqld]

    sql-mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

    重启mysql容器

    愉快的发现配置生效了,现在可以为timestamp类型设置0000-00-00 00:00:00默认值了.

    相关文章

      网友评论

          本文标题:docker运行MySQL如何修改配置文件

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