docker mysql 中文亂碼

在使用docker容器部署mysql數據庫時,有時會出現中文亂碼的情況。這是因為mysql默認字符集為latin1,而中文字符需要使用utf-8編碼。本文將介紹如何解決docker mysql中文亂碼問題。

一、查看當前MySQL字符集

首先,我們需要查看當前MySQL的字符集。可以通過登錄到MySQL后使用以下命令:

mysql> show variables like '%char%';

其中,字符集相關的變量有:

  • character_set_client:客戶端字符集,也就是連接MySQL的客戶端所使用的字符集;
  • character_set_connection:連接字符集,也就是服務器與客戶端之間的字符集;
  • character_set_database:數據庫字符集,新創建的數據庫會按此字符集創建;
  • character_set_results:結果字符集,select查詢返回的結果所使用的字符集;
  • character_set_server:服務器字符集,MySQL服務器本身所使用的字符集。

二、修改MySQL字符集為UTF-8

查看到當前MySQL字符集為Latin1后,我們需要修改為UTF-8。可以通過以下兩種方式實現:

  1. 修改MySQL配置文件

在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
  1. 連接MySQL后修改字符集

如果無法修改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,避免中文亂碼的問題。當然,如果需要處理多語言字符集,還需根據具體情況進行調整。希望該文章能對大家有所幫助。

? 版權聲明
THE END
喜歡就支持一下吧
點贊11 分享