linux 系統下修改Mysql預設字符集
阿新 • • 發佈:2019-01-03
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
在查閱資料的過程中可能在這些配置後還會發生一些其他問題,目前我還沒有遇見,歡迎留言交流。