Linux下修改MySQL字符集等配置

Posted 程序员小默

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux下修改MySQL字符集等配置相关的知识,希望对你有一定的参考价值。

如下图所示,分别使用不同命令查看当前数据库字符集:

show variables like %char%;

show global variables like %char%;

Linux下修改MySQL字符集等配置_字符集


编辑/etc/my.cnf

[mysql]
default-character-set=utf8

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
character_set_server = utf8
init_connect=SET NAMES utf8
#lower_case_table_names=1 忽略大小写

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
default-character-set = utf8

[mysql.server]
default-character-set = utf8

[client]
default-character-set = utf8

它相当于以下命令:

SET character_set_client = utf8;
SET character_set_server=utf8;
SET character_set_results = utf8;
SET character_set_connection = utf8;

试试下面的命令:

SET GLOBAL character_set_clinet=utf8;//客户端需要的
SET GLOBAL character_set_connection=utf8;//查询连接中的文本编码
SET GLOBAL character_set_results=utf8;//mysql返回结果的编码
SET GLOBAL character_set_server=utf8;//mysql服务器存储文本的格式
SET GLOBAL character_set_database=utf8;//数据库

重启mysql服务,查看字符集:


Linux下修改MySQL字符集等配置_字符集_02

如果脚本文件保存时使用了DOS格式,Linux中可能会看到这样的错误:​​/bin/sh^M​​:损坏的解释器: 没有那个文件或目录。使用VIM命令,进入命令行模式,执行如下操作即可。

:set ff=unix
:wq

MySQL的8个字符集说明

  • character_set_client
      主要用来设置客户端使用的字符集。
  • character_set_connection
      主要用来设置连接数据库时的字符集,如果程序中没有指明连接数据库使用的字符集类型则按照这个字符集设置。
  • character_set_database
      主要用来设置默认创建数据库的编码格式,如果在创建数据库时没有设置编码格式,就按照这个格式设置。
  • character_set_filesystem
      文件系统的编码格式,把操作系统上的文件名转化成此字符集,即把 character_set_client转换character_set_filesystem, 默认binary是不做任何转换的。
  • character_set_results
      数据库给客户端返回时使用的编码格式,如果没有指明,使用服务器默认的编码格式。
  • character_set_server
      服务器安装时指定的默认编码格式,这个变量建议由系统自己管理,不要人为定义。
  • character_set_system
      数据库系统使用的编码格式,这个值一直是utf8(有时可以看到是utf8mb3其实就是utf8),不需要设置,它是为存储系统元数据的编码格式。
  • character_sets_dir
      这个变量是字符集安装的目录。

在启动mysql后,我们只关注下列变量是否符合我们的要求

character_set_client
character_set_connection
character_set_database
character_set_results
character_set_server

下列三个系统变量我们不需要关心,不会影响乱码等问题

character_set_filesystem
character_set_system
character_sets_dir


以上是关于Linux下修改MySQL字符集等配置的主要内容,如果未能解决你的问题,请参考以下文章

mysql的配置文件my.cnf 或者 my.ini在哪啊? 想修改它,怎么修改啊?

Ubuntu 16.04.1下修改MySQL默认编码

linux下修改mysql字符集为utf8

linux怎么设置mysql 的编码格式

mysql基础认识1

Linux下安装配置与使用MySQL数据库