标题更改MariaDB默认字符编码,解决中文乱码问题!!!
#进入数据库控制台
mysql -uroot -p
#status;查看运行状态,以及默认字符编码
MariaDB [(none)]> status;
--------------
mysql Ver 15.1 Distrib 5.5.44-MariaDB, for Linux (x86_64) using readline 5.1
Connection id: 21
Current database:
Current user: root@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server: MariaDB
Server version: 5.5.44-MariaDB MariaDB Server
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: latin1
Db characterset: latin1
Client characterset: utf8
Conn. characterset: utf8
UNIX socket: /var/lib/mysql/mysql.sock
Uptime: 2 hours 19 min 42 sec
Threads: 1 Questions: 111 Slow queries: 0 Opens: 4 Flush tables: 2 Open tables: 29 Queries per second avg: 0.013
--------------
Server characterset: latin1
Db characterset: latin1
Client characterset: utf8
Conn. characterset: utf8
默认客户端和服务器端都用了latin1编码,所以会出现乱码。
#修改mysql配置文件
[root@localhost mnt]# vim /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
#############################添加内容
default-storage-engine=INNODB
character-set-server=utf8
collation-server=utf8_general_ci
##########################################
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d
"/etc/my.cnf" 22L, 659C written
##############################重启服务
[root@localhost mnt]# systemctl restart mariadb.service
[root@localhost mnt]#
####################################再次进入MySQL控制台查看
MariaDB [(none)]> status;
--------------
mysql Ver 15.1 Distrib 5.5.44-MariaDB, for Linux (x86_64) using readline 5.1
Connection id: 2
Current database:
Current user: root@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server: MariaDB
Server version: 5.5.44-MariaDB MariaDB Server
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: utf8
Db characterset: utf8
Client characterset: utf8
Conn. characterset: utf8
UNIX socket: /var/lib/mysql/mysql.sock
Uptime: 16 sec
Threads: 1 Questions: 4 Slow queries: 0 Opens: 0 Flush tables: 2 Open tables: 26 Queries per second avg: 0.250
--------------
####查看MySQL字符集
show variables like 'character_set_%';
MariaDB [(none)]> show variables like 'character_set_%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
参数说明:
character_set_client:客户端请求数据的字符集。
character_set_connection:从客户端接收到数据,然后传输的字符集。
character_set_database:
默认数据库的字符集,无论默认数据库如何改变,都是这个字符集;如果没有默认数据库,
使character_set_server指定的字符集,此参数无需设置。
character_set_filesystem:
把操作系统上文件名转化成此字符集,即把character_set_client转换character_set_filesystem,默认binary即可。
character_set_results:结果集的字符集。
character_set_server:数据库服务器的默认字符集。
character_set_system:这个值总是utf8,不需要设置,存储系统元数据的字符集。
备注:
MySQL 5.5之前的版本设置办法:
在[client]段下添加
default-character-set=utf8
在[mysqld]段下添加
default-character-set=utf8
注意,如果修改后不能启动报错,把[mysqld]段下default-character-set=utf8改为character_set_server=utf8,取消[client]段的设置。
创建数据库的命令:
Create DATABASE IF NOT EXISTS mydata default charset utf8 COLLATE utf8_general_ci;
######结束