【终极版】 linux mysql 中文乱码问题解决方法

时间:2022-09-22 19:04:03

笔者今天遇到linux mysql 中文乱码问题,网上解决版本很多但是试过之后均不能解决,最终发现是小问题(版本导致操作命令不同),本文标红部分为笔者所遇到过的问题,请重点关注:


1、进入mysql命令行模式,键入mysql-uroot -p 即可进入。随后键入 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       |/alidata/server/mysql-5.1.73/share/charsets/ |

则已修改正确,而mysql默认初始设置的都是latin1而非utf8。

2、最根本的解决方法是打开mysql配置文件修改。linux下mysql配置文件名为my.cnf,目录为/etc/my.cnf,打开后按照以下操作:

 

         注:在终端解决方案如下:

sudo gedit /etc/mysql/my.cnf

不能修改时,修改my.cnf权限    sudo chown 777   /etc/mysql/my.cnf

但是,在修改完后必须将权限修改为644然后再次重启,否则导致重启失败。

 

 

    --在 [mysqld] 标签下加上三行
    default-character-set = utf8
    character_set_server = utf8
    lower_case_table_names = 1 //表名不区分大小写(此与编码无关)

    --在 [mysql] 标签下加上一行
    default-character-set = utf8

    --在 [mysql.server]标签下加上一行
    default-character-set = utf8

    --在 [mysqld_safe]标签下加上一行
    default-character-set = utf8

    --在 [client]标签下加上一行
    default-character-set = utf8

    上述标签若未能全部找到也没关系。再次打开mysql命令行,执行SHOW VARIABLES LIKE 'character_set_%';后若仍存在latin1,则在mysql命令行下执行以下命令:

    set character_set_client =utf8;
    set character_set_server = utf8;
    set character_set_connection = utf8;
    set character_set_database = utf8;
    set character_set_results = utf8;
    set collation_connection = utf8_general_ci;
    set collation_database = utf8_general_ci;
    set collation_server = utf8_general_ci;

执行后再执行上述show 命令可得到目标结果

 

3、设置完成后需要重新启动mysql,重启命令/etc/init.d/mysqld restart

         注:/etc/init.d/mysqldrestart    或者/etc/init.d/mysql restart

        重启失败:可能为版本问题导致,具体解决方案很多,本人采用以下方案并奏效

         配置文件my.cnf中删除: default-character-set= utf8

4、重启成功  重新创建数据库与表

         注:此处仅重新创建表不能成功