前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。
為了方便閱讀,我在原文基礎上加了一些批注,說明我自己的情況,用紅色標示。
這篇文章記錄了我在使用 Docker 的 MySQL 官方鏡像的時候碰到的一個問題。MySQL 的版本是 5.7。
(我的是5.7.21 版本。)
問題描述
我使用的是MySQL的Docker鏡像。先創建并啟動鏡像:
# docker run --name mysql-b \
> -p 33002:3306 -v /zc/mysql/datadir-b:/var/lib/mysql \
> -e MYSQL_ROOT_PASSWORD='123456' -d mysql:latest
參數說明:--name 取名;
????????????????????-p : 設置端口號; -v : 設置掛載路徑;
?????????-e : 設置環境變量; -d:?后臺運行容器,并返回容器ID ;
?
正常啟動,沒有問題。通常我們使用MySQL的時候,需要設置參數。要設置參數,我們先得進入容器的bash,進行操作:
docker exec -it mysql-b bash
MySQL的默認配置文件是 /etc/mysql/my.cnf 文件。如果想要自定義配置,建議向 /etc/mysql/conf.d 目錄中創建 .cnf 文件。新建的文件可以任意起名,只要保證后綴名是 cnf 即可。新建的文件中的配置項可以覆蓋 /etc/mysql/my.cnf 中的配置項。因為 MySQL 的 Docker 官方鏡像沒有提供 vim 編輯器,所以我用cat命令生成文件并添加內容:
# cat >test.cnf <<EOF
[mysqldump]
user=root
password='123456'
[mysqld]
max_allowed_packet=8M
lower_case_table_names=1
character_set_server=utf8
max_connections=900
max_connect_errors=600
default-character-set=utf8
EOF
cat > test.cnf : 把輸入內容寫入到文件?test.cnf 中。
<<EOF :遇到 EOF 結束輸入并退出。
?
退出后,停止容器,再重新啟動容器,發現容器無法啟動。
解決方法
刪除原來那個不能啟動的容器。重新創建一個新的容器。問題的關鍵在于原來的 test.cnf 文件有錯誤。找到原來配置文件的最后一行:
default-character-set=utf8
把這一行刪除。添加配置文件的時候保證沒有這一行就可以了。
問題原因
MySQL 的官方 Docker 鏡像里面,在標簽 latest 下,[mysqld] 這一配置段上并沒有 default-character-set 這一配置項。?
如果你要查看所有的配置項,可以使用如下命令,利用管道將輸出的幫助都放到 help.txt 文件里面:
docker run -it --rm mysql:tag --verbose --help > help.txt
其中 tag 表示鏡像的標簽,比如 latest 和 5.6。
?
轉自:https://blog.csdn.net/zhangchao19890805/article/details/52744054
?