Bootstrap

macOSX下,如何永久更改Mysql的字符编码格式

经常使用mysql的程序猿(媛)深知,在windows环境搭建mysql环境还是比较简单的,安装完成后,就可以启动配置功能,进行配置,所以,mysql的密码和mysql的编码格式可以很方便的一次性解决。但是,mac用户,尤其是mysql新手,在安装mysql的过程中,便会遇到各种拦路虎。诸如:无法修改登录密码,无法永久修改字符串编码格式等等。

现在我们就一起来彻底解决字符串编码的问题。

mysql安装完成后,输入如下命令查看当前mysql的编码格式:


很显然character_set_database和character_set_server依然是latin1的字符集,也就是说mysql后续创建的表都是latin1字符集的,不是utf8,会造成一些麻烦。所以有必要修改my.cnf。下面正式开始我们的工作。

工作目的:修改mysql的默认编码方式:

1,关闭mysql服务

在对mysql的配置文件手动进行修改前,请确保关闭mysql服务。不然会遇到mysql的sock不能连接的问题

在mac下,打开“系统偏好设置”->选择“mysql”->“stop MySQL server”

如下图所示:



2,准备my.cnf文件

很多童鞋会说,我可以直接在mysql的命令行模式下,直接输入命令来修改字符编码啊,可是你是否发现,下次再使用的时候,字符编码还是变成latin1了呢?众所周知,mysql的全局配置文件在my.cnf文件里面,可是问题来了,网上说mac下把mysql目录里的support-files中的my-medium.cnf拷贝到/etc下并改名my.cnf并进行修改,可是你没发现mysql5.6或者5.7安装目录下已经没有这个文件了吗?但是有一个my-defalut.cnf的文件,和我们期待的my.cnf还是有点像的嘛,不妨打开看看,我们看到这样的文字内容:


看到红色框标注的文字,提示我们说,他建议我们可以到http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html去查看详细配置说明,我们不应该直接修改这个文件,这仅仅是在安装过程中生成的一个模板文件而已,如果你升级到新版本的mysql,这个文件会被替换掉。



大概就是说my-default.cnf是作为模版文件来生成my.cnf的,所以我们就直接复制一份,使用命令:

sudo cp my-default.cnf my.cnf 得到一份my.cnf文件。

3,修改my.cnf文件

按网上说的

在[client]部分加入:

default-character-set=utf8

在[mysqld]部分加入:

character-set-server=utf8

其中[client]和[mysqld]就是option groups,没有就自己编写,保存退出。可能在编辑过程中会遇到提示说该文件为只读文件,那么使用那个命令修改读写权限:

sudo chmod  +w my.cnf

修改完成后,保持修改。

4,正确存放my.cnf文件

这是比较关键的一部,很多童鞋反映,修改后,还是不能生效,如何破呢?
这里有两个细节,首先,我们怎么知道my.cnf文件究竟应该存放在哪里呢?
打开终端工具,输入:mysql --help

接着一直往下看:看到我红色标注的部分。

mysql的帮助信息提示我们,my.cnf文件的应用优先次序如下,那么为了简单,我们就直接把我们修改好的my.cnf文件直接拷贝到/etc文件夹下面,换言之,我们让/etc/my.cnf文件作为我们mysql的全局配置文件生效。

到这里位置,很多童鞋就按照很多教程说的那样,直接重启mysql服务器,并迫不及待的去查看字符编码格式,那么问题来了结果还是这样:

究竟是为什么呢,其实,这个时候,如果你在命令行使用mysql,你应该会得到一个警告信息:
Warning: World-writable config file '/etc/my.cnf' is ignored ,提示说,/etc/my.cnf文件为可读写,仔细查看mysql文档,得知,为了安全,该文件的权限只能是只读,因此,修改权限:
sudo chmod 644 my.cnf。
再打开命令提示符窗口,查看:


OK,一切搞定!

总结:经过本次摸索,得出的结论是,多查看官方文档才是硬道理!相信权威,拒绝盲目!


;