如何修改mysql数据库的默认编码

2017-01-20 14:42:50

如何修改mysql数据库的默认编码?

如何修改mysql数据库的默认编码?
windows系统下修改mysql默认编码时可以采用不同的方法,主要还是因为windows有配置这一功能,如下:
Mysql Server Instance Config Wizard
但是在Linux下就没有了,采用如下方法:
show variables like ‘character%’;
结果如下:
mysql> show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
当然如果里面是utf8的话就不用改了

 

根据网上的描述。修改my.cnf文件内容
1.查找mysqlcnf文件位置
find / -iname *.cnf
2.随便复制一个到/etc/my.cnf --注意;原先我不是复制到这里的。而是在/etc/mysql/my.cnf 这也是导致修改无效的原因
cp /usr/local/mysql/data-supxxx/my-medium.cnf /etc/mysql/my.cnf
3.修改my.cnf
gedit /etc/mysql/my.cnf
在【client】下添加
default-character-set=utf8
[mysqld]下添加
default-charcter-set=utf8


有三个地方需要动的
[client]下面加上
default-character-set=utf8
[mysqld]下面加上
default-character-set=utf8
init_connect='SET NAMES utf8'

然后再看一下变量
+--------------------------+----------------------------+
| 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/ |
+--------------------------+----------------------------+
可以看一下手册关于系统变量的部分. 有的配置在配置文件和使用show variables都看不到.但是可以设置

 

 

 

根据网上的描述。修改my.cnf文件内容
1.查找mysql的cnf文件位置
find / -iname *.cnf
2.随便复制一个到/etc/my.cnf --注意;原先我不是复制到这里的。而是在/etc/mysql/my.cnf 这也是导致修改无效的原因
cp /usr/local/mysql/data-supxxx/my-medium.cnf /etc/mysql/my.cnf
3.修改my.cnf
gedit /etc/mysql/my.cnf
在【client】下添加
default-character-set=utf8
在[mysqld]下添加
default-charcter-set=utf8
4.重启服务ok?

 

但是发现修改并没有起作用。
排错思路:查看mysql的启动文件,看它是怎么读取配置文件的
打开mysql启动文件
gedit /etc/init.d/mysqld
先查看basedir、datadir都没有问题
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
然后再查看它是在哪里读取my.cnf文件的

位置大概在中间部分
可以看到
if test -r "$basedir/my.cnf"
then
extra_args="-e $basedir/my.cnf"
else
if test -r "$datadir/my.cnf"
then
extra_args="-e $datadir/my.cnf"
fi
fi
原来它是在/usr/local/mysql和子目录data下读取my.cnf
随后将my.cnf复制到这两目录

修改完后、发现只是修改了服务的编码格式、其他的client、database都没有修改
然后继续找、发现如下
conf=/etc/my.cnf
原来它还会在/etc/下去找查找文件
知道后、将my.cnf也复制一份到/etc目录下
呵呵、搞定。
如果不想这么麻烦、到处复制文件、可以直接修改配置文件的路径指向你的my.cnf文件所在位置也行

 

发表评论:

Powered by PHP 学习者(mail:517730729@qq.com)

原百度博客:http://hi.baidu.com/ssfnadn

备案号:闽ICP备17000564号-1

开源中国 PHPCHINA