Linux中Mysql字符集问题

本文详细介绍了如何解决在迁移数据库至服务器后出现的乱码问题,通过修改/etc/my.cnf文件,确保MySQL编码与界面交互编码一致,从而避免乱码现象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一:问题描述:

之前做的一个小网站放在阿里云ECS CentOS服务器上,数据库是mysql放在阿里云RDS上,界面和数据库都采用UTF8编码没有任何问题,近日将数据库搬到服务器的mysql上,可是访问网站写入数据时出现乱码,记得mysql明明也是UTF8编码,怎么会乱码?

这是本地机器通过Navicat连接到服务器mysql


进入服务器mysql命令行:SHOW VARIABLES LIKE 'character%';

可以看到character_set_server的编码是latin1,说明mysql与界面交互式的编码不正确,下面将其编码修改为UTF8即可


二:解决方法,修改/etc/my.cnf文件

1、vim /etc/my.cnf

若/etc目录下没有这个文件,则通过进入根目录cd /,通过find -name *.cnf找到一个配置文件复制到/etc目录下,如下图所示


2、在[client]下添加:default-character-set=utf8


3、在[mysqld]下添加:character-set-server=utf8 

注意:这里的设置与mysql的版本有关,我的msyql版本是5.5.40,可能低版本还是使用default-character-set=utf8,(若是重启mysql服务时报错,极可能是这里的问题,尝试一下即可)


4、在[mysql]下添加default-character-set=utf8


5、重启mysql服务:service mysql restart   或者 /etc/init.d/mysql restart ,然后再进入mysql命令行查看编码已修改成功!


三:总结

找到原因后在修改的过程中走了一些弯路,比如

1、在mysql命令行下修改编码:set character_set_server=utf8,这种虽然执行成功且接着查看编码的确显示utf8但是不是真正的修改,退出mysql后重新登录查看还是没有修改。

2、设置my.cnf后重启mysql服务总是报错,检查写的并没有错误,网上的回答也是多种多样,其实就是上面的第3点强调的内容。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值