ubuntu修改及查看mysql数据库的字符集

本文详细介绍了如何在MySQL中查找、拷贝、修改并重新启动MySQL服务来配置字符集,包括使用cnf文件和直接在配置文件中修改字符集的方法,并展示了查看字符集设置的步骤。

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

1.查找MySQL的cnf文件的位置
find / -iname '*.cnf' -print

/usr/share/mysql/my-innodb-heavy-4G.cnf
/usr/share/mysql/my-large.cnf
/usr/share/mysql/my-small.cnf
/usr/share/mysql/my-medium.cnf
/usr/share/mysql/my-huge.cnf
/usr/share/texmf/web2c/texmf.cnf
/usr/share/texmf/web2c/mktex.cnf
/usr/share/texmf/web2c/fmtutil.cnf
/usr/share/texmf/tex/xmltex/xmltexfmtutil.cnf
/usr/share/texmf/tex/jadetex/jadefmtutil.cnf
/usr/share/doc/MySQL-server-community-5.1.22/my-innodb-heavy-4G.cnf
/usr/share/doc/MySQL-server-community-5.1.22/my-large.cnf
/usr/share/doc/MySQL-server-community-5.1.22/my-small.cnf
/usr/share/doc/MySQL-server-community-5.1.22/my-medium.cnf
/usr/share/doc/MySQL-server-community-5.1.22/my-huge.cnf

2. 拷贝 small.cnf、my-medium.cnf、my-huge.cnf、my-innodb-heavy-4G.cnf其中的一个到/etc下,命名为my.cnf
cp /usr/share/mysql/my-medium.cnf /etc/my.cnf

3. 修改my.cnf
vi /etc/my.cnf
在[client]下添加
default-character-set=utf8
在[mysqld]下添加
default-character-set=utf8

4.重新启动MySQL
[root@bogon ~]# /etc/rc.d/init.d/mysql restart
Shutting down MySQL                                         [ 确定 ]
Starting MySQL.                                             [ 确定 ]
[root@bogon ~]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.1.22-rc-community-log MySQL Community Edition (GPL)
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

5.查看字符集设置
mysql> show variables like 'collation_%';
+----------------------+-----------------+
| Variable_name         | Value            |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database    | utf8_general_ci |
| collation_server      | utf8_general_ci |
+----------------------+-----------------+
3 rows in set (0.02 sec)
mysql> 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/ |
+--------------------------+----------------------------+
8 rows in set (0.02 sec)
mysql>


其他的一些设置方法:

修改数据库的字符集
    mysql>use mydb
    mysql>alter database mydb character set utf-8;
创建数据库指定数据库的字符集
    mysql>create database mydb character set utf-8;

通过配置文件修改:
修改/var/lib/mysql/mydb/db.opt
default-character-set=latin1
default-collation=latin1_swedish_ci

default-character-set=utf8
default-collation=utf8_general_ci
重起MySQL:
[root@bogon ~]# /etc/rc.d/init.d/mysql restart

通过MySQL命令行修改:
mysql> set character_set_client=utf8;
Query OK, 0 rows affected (0.00 sec)
mysql> set character_set_connection=utf8;
Query OK, 0 rows affected (0.00 sec)
mysql> set character_set_database=utf8;
Query OK, 0 rows affected (0.00 sec)
mysql> set character_set_results=utf8;
Query OK, 0 rows affected (0.00 sec)
mysql> set character_set_server=utf8;
Query OK, 0 rows affected (0.00 sec)
mysql> set character_set_system=utf8;
Query OK, 0 rows affected (0.01 sec)
mysql> set collation_connection=utf8;
Query OK, 0 rows affected (0.01 sec)
mysql> set collation_database=utf8;
Query OK, 0 rows affected (0.01 sec)
mysql> set collation_server=utf8;
Query OK, 0 rows affected (0.01 sec)
查看:
mysql> 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/ |
+--------------------------+----------------------------+
8 rows in set (0.03 sec)
mysql> show variables like 'collation_%';
+----------------------+-----------------+
| Variable_name         | Value            |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database    | utf8_general_ci |
| collation_server      | utf8_general_ci |
+----------------------+-----------------+
3 rows in set (0.04 sec)



-------------------------------------------------------------------------
【知识性文章转载】
MYSQL 字符集问题


MySQL的字符集支持(Character Set Support)有两个方面:
      字符集(Character set)和排序方式(Collation)。
对于字符集的支持细化到四个层次:
      服务器(server),数据库(database),数据表(table)和连接(connection)。
1.MySQL默认字符集
MySQL对于字符集的指定可以细化到一个数据库,一张表,一列,应该用什么字符集。
但是,传统的程序在创建数据库和数据表时并没有使用那么复杂的配置,它们用的是默认的配置,那么,默认的配置从何而来呢?     (1)编译MySQL 时,指定了一个默认的字符集,这个字符集是 latin1;
     (2)安装MySQL 时,可以在配置文件 (my.ini) 中指定一个默认的的字符集,如果没指定,这个值继承自编译时指定的;
     (3)启动mysqld 时,可以在命令行参数中指定一个默认的的字符集,如果没指定,这个值继承自配置文件中的配置,此时 character_set_server 被设定为这个默认的字符集;
     (4)当创建一个新的数据库时,除非明确指定,这个数据库的字符集被缺省设定为character_set_server;
     (5)当选定了一个数据库时,character_set_database 被设定为这个数据库默认的字符集;
     (6)在这个数据库里创建一张表时,表默认的字符集被设定为 character_set_database,也就是这个数据库默认的字符集;
     (7)当在表内设置一栏时,除非明确指定,否则此栏缺省的字符集就是表默认的字符集;
简单的总结一下,如果什么地方都不修改,那么所有的数据库的所有表的所有栏位的都用
latin1 存储,不过我们如果安装 MySQL,一般都会选择多语言支持,也就是说,安装程序会自动在配置文件中把
default_character_set 设置为 UTF-8,这保证了缺省情况下,所有的数据库的所有表的所有栏位的都用 UTF-8 存储。
2.查看默认字符集(默认情况下,mysql的字符集是latin1(ISO_8859_1)
通常,查看系统的字符集和排序方式的设定可以通过下面的两条命令:
      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        | D:"mysql-5.0.37"share"charsets" |
+--------------------------+---------------------------------+
mysql> SHOW VARIABLES LIKE 'collation_%';
+----------------------+-----------------+
| Variable_name         | Value            |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database    | utf8_general_ci |
| collation_server      | utf8_general_ci |
+----------------------+-----------------+
3.修改默认字符集
(1) 最简单的修改方法,就是修改mysql的my.ini文件中的字符集键值,
如     default-character-set = utf8
       character_set_server = utf8
    修改完后,重启mysql的服务,service mysql restart
    使用 mysql> SHOW VARIABLES LIKE 'character%';查看,发现数据库编码均已改成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        | D:"mysql-5.0.37"share"charsets" |
+--------------------------+---------------------------------+
    (2) 另一种修改字符集的方法,就是使用mysql的命令

    mysql> SET character_set_client = utf8 ;


4.mysql版本引起的问题

可以通过以下步骤修改:

$sudo gedit /etc/mysql/my.cnf

        在里面

[client]下添加:

default-character-set=utf8

注意:5.5以后的版本对字符编码方式修改的办法,才发现原来在[mysqld]下的修改已经发生了变化

正确方式如下:

[mysqld]下添加的应该为:

character-set-server=utf8

collation-server=utf8_general_ci


<think>我们参考引用内容,特别是引用[3]和引用[5]提到了字符集配置。根据引用[3]:“Ubuntu 18.04 下MySQL数据库的安装、基本配置和完全卸载”中提到了字符集配置,引用[5]也提到了修改字符集的方法。 步骤: 1. 修改MySQL配置文件my.cnf(在Ubuntu中通常位于/etc/mysql/my.cnf或/etc/mysql/mysql.conf.d/mysqld.cnf) 2. 在[mysqld]部分添加字符集配置 3. 重启MySQL服务 4. 验证字符集是否修改成功 具体操作: 1. 使用文本编辑器打开MySQL的配置文件。根据引用[3]和引用[4]的提示,配置文件可能是`/etc/mysql/my.cnf`,但有时配置被包含在`/etc/mysql/mysql.conf.d/mysqld.cnf`中。我们可以尝试打开其中一个,通常我们修改`mysqld.cnf`。 2. 在[mysqld]部分添加以下配置: character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci 注意:MySQL 5.7默认可能使用utf8,但utf8MySQL中并不是完整的UTF-8,推荐使用utf8mb4。 3. 同时,为了确保客户端和服务器的交互使用相同的字符集,我们可以在配置文件的[client]和[mysql]部分添加默认字符集(如果这些部分不存在,可以添加): [client] default-character-set = utf8mb4 [mysql] default-character-set = utf8mb4 4. 保存配置文件后,重启MySQL服务: sudo systemctl restart mysql 5. 验证:登录MySQL,执行以下命令: mysql -u root -p SHOW VARIABLES LIKE 'character_set%'; SHOW VARIABLES LIKE 'collation%'; 注意:如果之前已经创建了数据库,那么修改配置文件只会影响之后创建的数据库。对于已有数据库,需要单独修改字符集修改已有数据库字符集: ALTER DATABASE 数据库名 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; 修改已有表的字符集(需要逐表修改): ALTER TABLE 表名 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; 注意:修改已有表可能会影响现有数据,建议先备份。 另外,引用[5]中提到修改root密码的命令,但这里我们不需要。 如果遇到问题,请检查MySQL错误日志(通常位于/var/log/mysql/error.log)。 根据引用[3]:“Ubuntu 18.04 下MySQL数据库的安装、基本配置和完全卸载”中提到了字符集配置,我们可以参考其步骤。 但是,请注意,引用[4]中提到了在Windows下配置my.ini,而我们在Ubuntu下是配置my.cnf(或mysqld.cnf),所以不要混淆。 总结步骤: 1. 备份数据库(重要)。 2. 修改MySQL配置文件,添加字符集设置。 3. 重启MySQL服务。 4. 检查全局字符集设置。 5. 根据需要修改已有数据库和表的字符集。 注意:在修改配置文件之前,建议先备份原配置文件。 相关问题: 1. 如何修改MySQL已有数据库字符集? 2. 在Ubuntu 18.04中,MySQL的配置文件通常位于哪些路径? 3. 如何查看MySQL当前使用的字符集? 4. 为什么推荐使用utf8mb4而不是utf8? 5. 修改MySQL字符集后,应用程序需要注意什么?</think>### Ubuntu 18.04 MySQL 5.7 字符集修改方法 #### 步骤 1:修改 MySQL 配置文件 1. **打开配置文件** MySQL 5.7 的主配置文件通常是 `/etc/mysql/mysql.conf.d/mysqld.cnf`: ```bash sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf ``` 2. **添加字符集配置** 在 `[mysqld]` 部分添加以下内容: ```ini [mysqld] character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci init_connect = 'SET NAMES utf8mb4' ``` - `utf8mb4` 支持完整的 Unicode 字符(如 emoji) - `init_connect` 确保新连接使用指定字符集[^3][^5] 3. **保存并退出** `Ctrl+O` → `Enter` → `Ctrl+X` #### 步骤 2:重启 MySQL 服务 ```bash sudo systemctl restart mysql ``` #### 步骤 3:验证字符集修改 1. 登录 MySQL: ```bash mysql -u root -p ``` 2. 执行查询命令: ```sql SHOW VARIABLES LIKE 'character_set%'; SHOW VARIABLES LIKE 'collation%'; ``` 正确结果应显示: ``` character_set_server | utf8mb4 collation_server | utf8mb4_unicode_ci ``` #### 步骤 4:修改现有数据库字符集(可选) 对已创建的数据库,需手动修改字符集: ```sql ALTER DATABASE 数据库名 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` #### 注意事项 1. **配置文件位置** 如果 `/etc/mysql/my.cnf` 存在且包含 `!includedir` 指令,需确保修改的是实际加载的配置文件[^2][^4]。 2. **权限问题** 修改配置文件后若无法重启 MySQL,检查文件权限: ```bash sudo chown mysql:mysql /etc/mysql/mysql.conf.d/mysqld.cnf ``` 3. **数据兼容性** - 修改字符集前备份数据库:`mysqldump -u root -p --all-databases > backup.sql` - 已有表需单独修改: ```sql ALTER TABLE 表名 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` --- ### 相关问题 1. 如何检查 MySQL 当前使用的字符集配置? 2. 修改字符集后出现乱码如何排查? 3. `utf8` 和 `utf8mb4` 有什么区别?为什么推荐后者? 4. 如何批量修改所有数据库字符集? 5. MySQL 字符集配置不生效的常见原因有哪些?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值