docker運(yùn)行MySQL如何修改配置文件

最近裝了個(gè)虛擬機(jī)跑mysql

從docker上下載了latest的mysql鏡像

(文中的命令均在root下執(zhí)行的)

使用如下命令創(chuàng)建并運(yùn)行容器

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三個(gè)共享目錄,root賬號密碼為123,容器名稱為my_mysql

運(yùn)行成功后創(chuàng)建表,發(fā)現(xiàn)timestamp類型的字段無法將默認(rèn)值設(shè)置為0000-00-00 00:00:00

查詢sql_mode

select @@sql_mode;

結(jié)果為:

ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

發(fā)現(xiàn)有NO_ZERO_IN_DATE,NO_ZERO_DATE兩個(gè)mode

為了永遠(yuǎn)刪掉它們,需要修改my.cnf配置,但是在docker容器中又不能直接改文件

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

mysql --help | grep my.cnf

返回結(jié)果

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

挨個(gè)位置去找

發(fā)現(xiàn)/etc/mysql/my.cnf目錄是有文件的,輸出一下文件內(nèi)容

mysql --help | grep my.cnf

發(fā)現(xiàn)在文件末尾有這么兩行

# Custom config should go here

!includedir /etc/mysql/conf.d/

誒!? /etc/mysql/conf.d/目錄不是正好被我映射出去了嗎?

于是退出容器

到~/conf目錄下

創(chuàng)建一個(gè)my.cnf文件

加入兩行配置

[mysqld]

sql-mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

重啟mysql容器

愉快的發(fā)現(xiàn)配置生效了,現(xiàn)在可以為timestamp類型設(shè)置0000-00-00 00:00:00默認(rèn)值了.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容