linux 系统下修改Mysql默认字符集
linux系统版本Ubuntu 14.04.1 Mysql版本5.7.15
这几天在做管理系统时,做完之后放到前一段购买的腾讯云上测试,发现请求数据发送后显示为乱码,但是在本地测试时却没有发生这种情况,所以我感觉是Linux上Mysql数据库的字符集问题,打开数据库后发现果然是这样。
在Mysql中使用下面代码查看字符集
show variables like ‘char%’
会发现
database 的编码方式是latin1 并且server的编码方式也是latin1
database的编码方式如果没有指定,默认使用的就是server 的编码方式所以你会发现这两个字符集是一样的。
然后在Mysql中进行了对database和server的编码方式的修改
set character_set_database=utf8;set character_set_server=utf8; 结果重启Mysql后发现字符集依然是原来的lantin1
后来在网上搜集了一些资料,才知道如果想让Mysql默认字符集改变需要配置文件,查看了一些文章发现大多数方法都是Mysql5.7.15之前的版本才适用,最后总结了一下,才测试正确,下面是配置方法。
1.首先查看etc安装目录下有没有my.cnf文件
cd /etcls -l | grep my.cnf 如果存在可以跳过第二步
2.my.cnf不存在需要到Mysql配置文件路径下复制一个文件过来,配置文件路径在/usr/share/mysql下
我复制的是my-default.cnf文件,在/etc中复制文件过来,将文件改名为my.cnf ,执行以下命令
cd /etccp /usr/share/mysql/my-default.cnf my.cnf
修改前文件内容 3.使用vi编辑器打开my.cnf加入下面几段话
建议先对文件进行备份,不过因为文件本来就是从/usr/share/mysql中复制过来的,也可以不用备份,然后打开
cp my.cnf my.cnf.baksudo vi my.cnf
在[mysqld]上面加入下面两句话
[client] default-character-set=utf8
在[mysqld]最下面加入下面几句话
default-storage-engine=INNODB character-set-server=utf8 collation-server=utf8_general_ci
然后保存退出
加入后文件内容
4.重启Mysql,再查看字符集
sudo service mysql restart
发现database和server的字符集都变成了utf8,无论怎么修改,重启后字符集都是utf8,证明你成功了。
如果设置到这里还不行,再进入一下/etc/mysql/mysql.conf.d找到mysqld.cnf文件
cd /etc/mysql/mysql.conf.d
sudo vi mysqld.cnf
然后在mysqld.cnf中[mysqld]下面加入这句话
character-set-server=utf8然后再重启下Mysql
在查阅资料的过程中可能在这些配置后还会发生一些其他问题,目前我还没有遇见,欢迎留言交流。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
