在使用Docker容器部署MySQL資料庫時,有時會出現中文亂碼的情況。這是因為MySQL預設字元集為Latin1,而中文字元需要使用UTF-8編碼。本文將介紹如何解決docker mysql中文亂碼問題。
一、檢視目前MySQL字元集
首先,我們要先查看目前MySQL的字元集。可以透過登入MySQL後使用以下指令:
mysql> show variables like '%char%';
其中,字元集相關的變數有:
二、修改MySQL字元集為UTF-8
查看到目前MySQL字元集為Latin1後,我們需要修改為UTF-8。可以透過以下兩種方式實現:
#在MySQL設定檔中(通常是/etc/my.cnf或/etc/mysql/ my.cnf),新增以下兩行內容:
[client] default-character-set=utf8 [mysqld] character-set-server=utf8
其中,[client]用於設定客戶端字元集為UTF-8,[mysqld]用於設定伺服器字元集為UTF-8。修改完成後重新啟動MySQL服務:
sudo service mysql restart
如果無法修改MySQL設定文件,可以在連接MySQL後手動修改字元集。可以透過以下命令連接到MySQL:
mysql --default-character-set=utf8 -u用户名 -p密码 数据库名
連接成功後,依序執行以下命令修改字元集:
SET character_set_client = utf8; SET character_set_connection = utf8; SET character_set_database = utf8; SET character_set_results = utf8; SET character_set_server = utf8;
修改完成後,登出MySQL,再次登入即可生效。
三、在Docker容器中使用UTF-8字元集
由於Docker容器中的MySQL是基於映像運行的,因此我們需要在映像中設定UTF-8字元集。可以透過以下Dockerfile來建構MySQL映像:
FROM mysql:latest ENV MYSQL_ROOT_PASSWORD=root ENV MYSQL_DATABASE=test ENV MYSQL_CHARSET=utf8 ENV MYSQL_COLLATION=utf8_general_ci COPY ./init.sql /docker-entrypoint-initdb.d/
其中,ENV指令用於設定環境變量,MYSQL_CHARSET用於設定MySQL字元集為UTF-8,MYSQL_COLLATION用於設定排序規則為utf8_general_ci。這裡也透過COPY指令將初始化腳本init.sql複製到鏡像中,用於在啟動容器時自動執行。
四、總結
透過以上三個步驟,我們可以在Docker容器中使用MySQL,並且設定字元集為UTF-8,避免中文亂碼的問題。當然,如果需要處理多語言字元集,還需根據具體情況進行調整。希望該文章能對大家有幫助。
以上是docker mysql 中文亂碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!