一. 背景
今天在win 10上安装MySQL5.6时因修改字符编码一直采坑,故记录此笔记。
二. 安装
MySQL5.6社区版下载地址: https://dev.mysql.com/downloads/windows/installer/5.6.html
下载安装即可。
下面所说的是默认安装目录,即C:Program FilesMySQLMySQL Server 5.6
三. 设置编码
MySQL装完后的默认编码不是utf-8,我们需要自己设置。网上查了很多资料,也试过很多方法,但是配置硬是不生效。
网上大多数说在MySQL安装目录下将my-default.ini复制一份命名为my.ini,然后在这个文件修改编码。虽然character_set_client、
character_set_connection、character_set_results可以修改过来,但是character_set_server却一直改不过来。
后来发现是因为Mysql服务启动时默认加载的配置是C:ProgramDataMySQLMySQL Server 5.6my.ini这个文件。
所以在MySQL的安装目录怎么修改都会无济于事。
所以可以得出结论:
mysql服务(mysqld)默认加载的配置文件是C:ProgramDataMySQLMySQL Server 5.6my.ini
mysql客户端(mysql -u root -p)启动时加载的配置文件(如果存在)是C:Program FilesMySQLMySQL Server 5.6my.ini
具体修改办法(C:ProgramDataMySQLMySQL Server 5.6my.ini文件有介绍):
1. 将文件C:ProgramDataMySQLMySQL Server 5.6my.ini复制一份到MySQL安装目录下,并且把my-default.ini文件删掉(以免影响)
2. 设置[mysql] default-character-set=utf8
3. 设置[mysqld] character-set-server=utf8
4. 删除原来的MySQL服务,重新安装将配置文件改成MySQL安装目录下的my.ini文件
以管理员身份运行cmd(普通身份运行可能会删除失败,权限不够)
sc delete MySQL56(MySQL服务名) #删除旧的Mysql服务
安装时切换到bin目录再安装,否则启动服务时报找不到文件错误而失败。
mysqld --install MySQL56 --defaults-file="C:Program FilesMySQLMySQL Server 5.6my.ini"
或者 mysqld --install MySQL56(默认安装目录下的my.ini文件)
这样mysql服务端以及mysql客户端都加载的都是安装目录下的my.ini配置文件了。
四. 查看编码
show variables like '%character%';