您好,登錄后才能下訂單哦!
Docker中MySql5.7中only_full_group_by問題的解決方法,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
MySql的鏡像,默認情況下,MySql5.7中的sql_mode含有only_full_group_by,group by語句有時候會報錯。通過手動修改sql_mode,那么如果刪除容器或者新建容器,就會導致我們手動設置的sql_mode失效,所以自己制作一個基于mysql鏡像的鏡像,解決sql_mode含有only_full_group_by的問題。
運行容器
List-1
mjduan@mjduan:/opt % docker run -d -p 3306:3306 -e MYSQL_ALLOW_EMPTY_PASSWORD --name mysql1 mysql:5.7.9 5514c31a4e0bc524cee3cdcb962ac73b4fdeb1b5b32d70fa2840e9029b203a8c
進入容器安裝vim
List-2
mjduan@mjduan:/opt % docker exec -ti mysql1 /bin/bash #在容器內執行如下命令 root@44504961189a:/opt % apt-get update ...... root@44504961189a:/opt % apt-get install vim ......
在容器內,/etc/mysql/conf.d/下,新建.cnf文件,將配置寫入到里面,我們新建custom.cnf文件,寫入如下內容:
List-3
root@44504961189a:/# more /etc/mysql/conf.d/custom.cnf [mysqld] sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
退出容器,用docker commit命令由容器制作鏡像,
List-4
mjduan@mjduan:/opt % docker commit mysql1 mysql_custom:1.0
之后docker images就可以看到鏡像mysql_custom:1.0了。
mysql_custom:1.0就是我們需要的,用它來啟動容器,如下List-5
List-5
mjduan@mjduan:/opt % docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=新密碼 --name mysql_mjduan2 mysql_custom:1.0 44504961189a45442a6b33e5945778b73bc3dd058ab9e794c56b0bbfc3e603bf
之后進入容器mysql_mjduan2,用mysql命令進入mysql命令行時就會提示要root密碼了。再次查看sql_mode,就會看到sql_mode沒有only_full_group_by了。
注意,不要讓別人拿到你的鏡像,否則通過docker inspect命令就可以看到你設置的root密碼。不過可以在創建容器的時候用MYSQL_ROOT_PASSWORD來設置新的root密碼。
注:
也可以直接用Dockerfile基于mysql的鏡像進行制作。
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。