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

本文介绍了如何在Docker运行的MySQL容器中,通过映射目录来修改配置文件my.cnf,以删除sql_mode中的NO_ZERO_IN_DATE和NO_ZERO_DATE,允许timestamp字段设置0000-00-00 00:00:00默认值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近装了个虚拟机跑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默认值了.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值