Linux mysql 5.7.22设置中文编码-解决乱码问题

《2019年阿里云双11活动拼团》:https://www.aliyun.com/1111/2019/group-buying-share
【限时】1核2G1M1年86元,3年229元,用来建站和编程学习【附WordPress建站教程】

异常情况:

由于工作需要以及个人技术方面的兴趣,开始接触了之前没有接触的Linux部署应用程序一块;最近用linux安装mysql的时候,安装过程正常;但是利用mybaits写入mysql表数据的时候,发生乱码了。为此开始排查和解决乱码问题:

Linux mysql 5.7.22设置中文编码-解决乱码问题_第1张图片
连接了Linux服务器的数据库
Linux mysql 5.7.22设置中文编码-解决乱码问题_第2张图片
image.png

成功解决问题之后:

Linux mysql 5.7.22设置中文编码-解决乱码问题_第3张图片
image.png

Linux mysql 5.7.22设置中文编码-解决乱码问题_第4张图片
image.png
Linux mysql 5.7.22设置中文编码-解决乱码问题_第5张图片
image.png

解决方法:

  • 配置默认配置文件

    在mysql 5.7.18版本及以后版本,没有默认配置文件;需要自己创建配置文件并保存在mysql 默认读取的路径下面;

查看mysql 配置文件读取命令:

/usr/local/mysql/bin/mysqld  --verbose --help | grep -A 1 'Default options'

配置文件基本模板:

#[mysqld]标记非常重要
[mysqld]

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

# 一般配置选项
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
socket = /var/run/mysqld/mysqld.sock
character-set-server=utf8

[mysql]
no-auto-rehash
default-character-set=utf8
safe-updates
socket = /var/run/mysqld/mysqld.sock

没有设置路径以及放开权限导致启动mysql报错提示:

2018-05-28T09:56:25.201315Z 0 [ERROR] Could not create unix socket lock file /var/run/mysqld/mysqld.sock.lock.
2018-05-28T09:56:25.201318Z 0 [ERROR] Unable to setup unix socket lock file.
2018-05-28T09:56:25.201321Z 0 [ERROR] Aborting
Linux mysql 5.7.22设置中文编码-解决乱码问题_第6张图片
image.png

linux创建路径就不写了,用命令行或者是xftp工具创建都可以
socket = /var/run/mysqld/mysqld.sock

设置权限 /run/mysqld/ 就是/var/run/mysqld/mysqld.sock,一个快捷链接

chmod 777 /run/mysqld

启动mysql

bin/mysqld_safe --user=mysql &

停止mysql

mysqladmin -uroot -p shutdown

mysql配置文件中解决中文乱码的两行关键代码:

character-set-server=utf8

default-character-set=utf8

记住,在mysql配置文件配置好中文乱码之后,一定要重启mysql服务,命令上面已经给出。

配置文件存放位置:/etc/my.cnf 当然,其它路径也可以。

Last login: Mon May 28 16:08:35 2018 from 183.15.179.142
root@iZwz9hx2ppf9lebmxfezz2Z:~# /usr/local/mysql/bin/mysqld  --verbose --help | grep -A 1 'Default options'
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf 
root@iZwz9hx2ppf9lebmxfezz2Z:~# ^C
转载请注明出处 https://www.jianshu.com/p/1deac307a923

参考文献:

  • Linux下MySQL5.7.18二进制包安装(无默认配置文件my_default.cnf)
  • mysql数据库服务器配置文件错误
  • mysqld_safe Directory '/var/lib/mysql' for UNIX socket file don't exists.

你可能感兴趣的:(Linux mysql 5.7.22设置中文编码-解决乱码问题)