mysql数据库是一个开源的轻量级数据库,简便的操作拥有许多的使用者,是学习数据库,搭建小型服务器数据库的好选择。在安装mysql数据库时,经常遇到一个问题,就是中文出现乱码,这是由于mysql的默认字符编码不支持中文造成的,所以需要修改mysql字符编码以支持中文字符。这里展示在linux系统下安装与修改字符编码为utf-8。
1、安装mysql数据库
可以直接使用命令安装开源的mysql数据库,安装时注意安装到中间会出现提示输入mysql的root权限的登录密码。
sudo apt-get install mysql-server
安装结束后进入管理员权限,因为修改mysql的配置文件在/etc/文件夹下,这个文件夹只有在管理员模式下才能写
sudo su
登录数据库
mysql -u root -p
查看当前数据库的字符编码,可以发现,有latin1字符编码,这个字符编码就是造成乱码的原因。binary是二进制编码,是文件系统的编码,这并不需要修改。utf8编码是可以支持中文的,因此需要把字符编码修改为utf8,当然也可以修改为其它支持中文字符的编码。
mysql> show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.55 sec)
2、修改字符编码
通过apt-get命令安装的mysql数据库的配置文件在/etc/mysql/下所以进入这个文件夹
cd /etc/mysql
进入mysql的配置文件夹后发现有几个文件,我们需要关注的是my.cnf配置文件,建议使用vi修改这个配置文件,因为一些服务器的配置没有图形化页面。
vi my.cnf
打开文件,在文件的末尾可以看到如下的注释,Additional settings that can override those from this file!,意思是在这个文件添加的设置将覆盖所有设置,也就是这个文件的配置优先级是最高的。在文件的后面添加如下的绿色语句。注意[mysql]和[mysqld]的不同。还要就是不要遗漏配置文件末尾本来就有的两句。
#
# * IMPORTANT: Additional settings that can override those from this file!
# The files must end with '.cnf', otherwise they'll be ignored.
#
[client]
;password = your_password
default-character-set=utf8
[mysql]
no-auto-rehash
[mysqld]
character_set_server = utf8
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/
修改完成重启mysql数据库,注意如果其它终端有在使用mysql数据库,先将其退出数据库才能成功重启数据库
service mysql restart
再次登录数据库查看字符编码就可以发现字符编码已经修改成功了。
mysql -u root -p
mysql> show variables like 'character%';
+--------------------------+----------------------------+
| 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/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
需要注意的是,修改字符编码只对后来建的数据库和表有作用,如果之前建立的数据库和表并没有作用,可以删除表和数据库再重新建。