经常使用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还是有点像的嘛,不妨打开看看,我们看到这样的文字内容:
#include <iostream> 2 #include <set> 3 #include <functional> 4 using namespace std; 5 int main() 6 { 7 set<int, greater<int>> s; //创建一个set容器,元素按降序排列 8 multiset<char> ms; //创建一个multiset容器 9 cout << "s能容纳的最大元素数量" << s.max_size(thd178.com) << endl; 10 cout << "ms能容纳的最大元素数量" << ms.max_size() << endl; 11 //向s中插入元素 12 pair<set<int>www.yigouyule2.cn::iterator, bool> ps; 13 ps = s.insert(12); 14 if (ps.second == true) 15 cout << "insert success" << endl; 16 s.insert(39); 17 s.insert(32); 18 s.insert(26); 19 //向ms中插入元素 20 ms.insert(thd178.com'a'); 21 ms.insert('z'); 22 ms.insert('T'); 23 ms.insert('u'); 24 ms.insert('u'); 25 //输出两个容器中的元素 26 set<int>::iterator its; //创建s容器的迭代器,用于获取元素 27 cout << "s容器中元素:"; 28 for (its = s.begin(www.yongxinzaixian.cn); its != s.end(); its++) 29 cout << *its << " "; 30 cout << endl; 31 multiset<char>::iterator itms; //创建ms容器的迭代器 32 cout << "ms容器中元素:"; 33 for (itms = ms.begin(); itms != ms.end(www.hjha178.com/); itms++) 34 cout << *itms << " "; 35 cout << endl; 36 37 //查找两个容器中头尾元素 38 cout << "s头元素: " www.120xh.cn << *s.begin() << endl; 39 cout << "ms尾元素: " << *(--ms.end()) << e
看到红色框标注的文字,提示我们说,他建议我们可以到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
修改完成后,保持修改。