1. 程式人生 > >linux 系統下修改Mysql預設字符集

linux 系統下修改Mysql預設字符集

      linux系統版本Ubuntu 14.04.1   Mysql版本5.7.15

     這幾天在做管理系統時,做完之後放到前一段購買的騰訊雲上測試,發現請求資料傳送後顯示為亂碼,但是在本地測試時卻沒有發生這種情況,所以我感覺是Linux上Mysql資料庫的字符集問題,開啟資料庫後發現果然是這樣。

     在Mysql中使用下面程式碼檢視字符集

 show variables like ‘char%’
        會發現  database 的編碼方式是latin1 並且server的編碼方式也是latin1

     database的編碼方式如果沒有指定,預設使用的就是server 的編碼方式所以你會發現這兩個字符集是一樣的。

     然後在Mysql中進行了對database和server的編碼方式的修改

  set character_set_database=utf8;
  set character_set_server=utf8;
    結果重啟Mysql後發現字符集依然是原來的lantin1
    後來在網上搜集了一些資料,才知道如果想讓Mysql預設字符集改變需要配置檔案,查看了一些文章發現大多數方法都是Mysql5.7.15之前的版本才適用,最後總結了一下,才測試正確,下面是配置方法。

    1.首先檢視etc安裝目錄下有沒有my.cnf檔案

  cd /etc
  ls -l | grep my.cnf
    如果存在可以跳過第二步

    2.my.cnf不存在需要到Mysql配置檔案路徑下複製一個檔案過來,配置檔案路徑在/usr/share/mysql下

我複製的是my-default.cnf檔案,在/etc中複製檔案過來,將檔案改名為my.cnf ,執行以下命令

 cd /etc
 cp /usr/share/mysql/my-default.cnf my.cnf

修改前檔案內容

  3.使用vi編輯器開啟my.cnf加入下面幾段話

建議先對檔案進行備份,不過因為檔案本來就是從/usr/share/mysql中複製過來的,也可以不用備份,然後開啟

  cp my.cnf my.cnf.bak
  sudo vi my.cnf

在[mysqld]上面加入下面兩句話

  [client]  
  default-character-set=utf8 
在[mysqld]最下面加入下面幾句話
  default-storage-engine=INNODB  
  character-set-server=utf8 
  collation-server=utf8_general_ci
然後儲存退出

加入後文件內容


 4.重啟Mysql,再檢視字符集

 sudo service mysql restart

發現database和server的字符集都變成了utf8,無論怎麼修改,重啟後字符集都是utf8,證明你成功了。

如果設定到這裡還不行,再進入一下/etc/mysql/mysql.conf.d找到mysqld.cnf檔案

cd /etc/mysql/mysql.conf.d
sudo vi mysqld.cnf

然後在mysqld.cnf中[mysqld]下面加入這句話

character-set-server=utf8
然後再重啟下Mysql

在查閱資料的過程中可能在這些配置後還會發生一些其他問題,目前我還沒有遇見,歡迎留言交流。