最近给开发人员配mysql,发现字符编码不对,应该改为utf8,google了很多案例,改来改去就是不成功,最后逐条检查my.cnf配置文件,注释一条启动一次,发现问题,最终解决。
1、首先中止MySQL服务(bin/mysqladmin -u root shutdown -p)
2、在/etc/下找到my.cnf,如果没有就把MySQL的安装目录下的support-files目录下的my-large.cnf复制到/etc/下并改名为my.cnf即可
3、打开my.cnf以后,修改以下,保存并关闭
找到客户端配置[client] 在下面添加
default-character-set=utf8 --默认字符集为utf8
在找到[mysqld] 添加
character_set_server = utf8 --默认字符集为utf8 注:网上有教程在这里也加default-character-set=utf8,我测试,就是这一条导致最后失败
init_connect='SET NAMES utf8' (设定连接mysql数据库时使用utf8编码,以让mysql数据库为utf8运行)
注意,my.cnf的权限是644,负责启动mysql时会警告,另my.cnf的属主和属组都是mysql,这点也让我吃了大亏!
4、启动MySQL服务(bin/mysqld_safe &),重新查看编码显示show variables like 'character%';
SHOW VARIABLES LIKE 'collation_%';
还有一种临时修改字符集的方法:
SET character_set_client = utf8 ;
SET character_set_connection = utf8 ;
SET character_set_database = utf8 ;
SET character_set_results = utf8 ;
SET character_set_server = utf8 ;
SET collation_connection = utf8_general_ci ;
SET collation_database = utf8_general_ci ;
SET collation_server = utf8_general_ci ;