最近遇到不同終端顯示MySQL數(shù)據(jù)中文亂碼的問題篙挽,故記錄一下冲秽。
一舍咖、本機安裝MySQL
環(huán)境:windows 10
MySQL版本:5.7.18 MySQL Community Server (GPL) 解壓縮免安裝版
將文件解壓縮到某個文件目錄,如我的路徑為:E:\BigData\tools锉桑。
此時mysql的根目錄會有一個my-default.ini文件排霉,這是MySQL的配置文件,配置說明請參考MySQL配置文件-my.ini
1.1配置環(huán)境變量
MySQL_HOME E:\BigData\tools\mysql\bin民轴,如圖
1.2 my-default.ini文件中增加數(shù)據(jù)目錄配置
#Path to installation directory. All paths are usually resolved relative to this.
basedir="E:/BigData/tools/mysql"
#Path to the database root
datadir="E:/BigData/tools/mysql/data"
# The default character set that will be used when a new schema or table is
# created and no character set is defined
1.3 mysql 初始化
參見官方文檔MySQL初始化
進入命令行攻柠,輸入'mysqld --initialize-insecure --user=mysql --console'回車,如果提示mysqld命令不是內(nèi)部或外部命令后裸,說明環(huán)境變量未配置好瑰钮。
其中'mysqld --initialize-insecure'表示初始化為root賬號,無密碼微驶;如果沒有'-insecure'浪谴,則表示初始化為一個隨機密碼。
'--user=mysql ' 參數(shù)如果沒有因苹,則啟動的時候會報錯较店,缺少一個什么東西。
等待一會容燕,如果沒有報錯梁呈,說明初始化成功。
1.4 注冊MySQL服務蘸秘,并啟動
執(zhí)行命令'mysqld install'官卡,即注冊mysql服務;
執(zhí)行命令'net start mysql', 啟動mysql服務醋虏。
1.5遇到的問題
參見官方文檔MySQL默認配置
a: 初始化未加'--user=mysql'參數(shù)寻咒,導致install失敗,缺少組件颈嚼;
b: 網(wǎng)查資料毛秘,my-default.ini可以改為my.ini,還有些說my.ini放到\bin目錄下,我就遇到了錯誤叫挟。經(jīng)證實:my-default.ini可以改為my.ini艰匙,就放在安裝的根目錄;
c: 'mysql install' 不要帶參數(shù)抹恳,之前帶參數(shù)指定my-default.ini配置文件员凝,然后目錄下如果有my.ini就要報錯。my-default.ini可以改為my.ini奋献,install不帶指定參數(shù)即可健霹,官方文檔也說了會自動使用my.ini為配置文件。
二瓶蚂、MySQL編碼設置
連接上MySQL服務后糖埋,可通過show variables like 'char%';查看各個字符編碼的設置,如:
因my.ini中配置不同窃这,字符編碼可能不同阶捆。
2.1 編碼設置
這里僅以中文為例。
my.ini中
[mysqld]節(jié)點下配置character-set-server=utf8
對應character_set_database/character_set_server/character_set_system的編碼钦听。
[client]節(jié)點配置 default-character-set=gbk
對應character_set_client/character_set_connection/character_set_resuts的編碼洒试。
2.2 注意事項
my.ini中編碼設置后,執(zhí)行命令'sc delete mysql'刪除mysql服務朴上;
執(zhí)行命令'mysqld --initialize-insecure --user=mysql --console'初始化服務垒棋;
執(zhí)行命令'mysqld install'注冊服務;
執(zhí)行命令'net start mysql'啟動服務痪宰。
必須新建數(shù)據(jù)庫和表叼架,新建的數(shù)據(jù)庫和表的字符集才為配置中設置的字符集,如圖:
這樣命令行顯示中文就正常了衣撬。
三乖订、Navicat中文亂碼
先斷開連接,再編輯連接具练,編碼中選擇'自動'乍构,中文即正常了。
至此:Navicat扛点、Java代碼哥遮、MySQL命令行,三處的插入及顯示中文均正常陵究。