前言
Mac 与 Linux 有都是类似 unix 系统,所以系统结构与软件安装上都类似,这里直接以 Mac 说明。
另外,utf8mb4 的最低 MySQL 版本支持版本为 5.5.3+,若不是,请升级到较新版本。
杀死 MySQL 进程
推荐方式
该方式只适用于使用包管理器安装形式。
在 Mac 上,可以直接在 系统偏好设置 中进行杀死/启动 MySQL 进程:


在 Linux 上可以直接使用 systemctl 命令查看 mysql 服务运行状态:
sudo systemctl status mysql.service
输出示例:
● mysql.service - MySQL Community ServerLoaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)Active: active (running) since Mon 2021-04-19 10:43:04 UTC; 1min 23s agoProcess: 782 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS)Process: 875 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid (code=exited, status=0/SUCCESS)Main PID: 908 (mysqld)Tasks: 27 (limit: 4585)Memory: 204.8MCGroup: /system.slice/mysql.service└─908 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pidApr 19 10:42:58 ubuntu systemd[1]: Starting MySQL Community Server...Apr 19 10:43:04 ubuntu systemd[1]: Started MySQL Community Server.
停止 mysql 服务可以使用如下命令:
sudo systemctl stop mysql
重启 mysql 服务可以使用如下命令:
sudo systemctl restart mysql
暴力方式
先使用 ps 命令查看 MySQL 是否已启动:
ps -ef | grep mysqld
如果能查到进程可以使用 kill -9/-15 PID 进行终止 MySQL 程序。比如:
$ ps -ef | grep mysql | grep -v grepmysql 908 1 0 10:43 ? 00:00:01 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid$ sudo kill -9 908
虽然这里是暴力方式但是还是推荐使用下面的方式:
MySQL 安装目录一般为:/usr/local/mysql(具体根据实际安装查看目录),在该目录下如下文件:
$ ls /usr/local/mysqlCOPYING bin docs keyring man support-filesREADME data include lib share
其中 support-files 目录就是 MySQL 启动与运行的相关脚本(下面是当前机器上的文件脚本):
$ ls /usr/local/mysql/support-files/magic mysql-log-rotate mysql.server mysqld_multi.server
mysql.server 就是 MySQL 启动相关的脚本:
# 杀死 MySQL 程序$ sudo ./mysql.server stop# 启动 MySQL 程序$ sudo ./mysql.server start# 重启 MySQL 程序$ sudo ./mysql.server restart
直接运行上诉命令即可,另外使用 ps 工具查出 MySQL 进程后也可以使用 kill -9/-15 PID 进行终止 MySQL 程序(建议使用 mysql.server 程序)。
创建与查看启动配置
通常,MySQL 的启动脚本为 my.cnf 但是根据各版本不同所以我们首选需要查看具体使用什么文件,以及应该放置在哪个目录。进入 MySQL 的安装 /bin 目录(如果已经配置环境变量则不需要),在该目录下有个 mysql 程序。
在命令终端输入 --help 查看说明:
mysql --help
在输出的信息中,你会看到其中有如下信息:
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 /usr/local/mysql/my.cnf ~/.my.cnf
这段信息就是告诉你,MySQL 的启动配置文件名为 my.cnf,以及按优先级顺序放置的目录。所以,笔者就直接放在 /etc 目录下(如果该目录下没有 my.cnf 文件需要自行创建,另外通常在 support-files 目录下会有一个 my-default.cnf 文件,如果有直接拷贝并重名米为 my.cnf 放置在 /ect 目录下即可),因为笔者这里没有一个名为 my-default.cnf 的文件所以自行创建:
$ cd /etc# 创建/编辑 my.cnf 文件$ sudo vim my.cnf
| NOTE |
|---|
一定要使用 sudo 命令,否则对 my.cnf 文件只有只读权限,编辑后将无法保存! |
最后,在 my.cnf 增加/修改成如下(仅仅对编码而言,如果已经配置了其他选项不要修改)
[client]port=3306# password=# 客户端编码default-character-set=utf8mb4[mysql]default-character-set=utf8mb4[mysqld]character-set-server = utf8mb4init_connect = "SET NAMES utf8mb4"collation-server = utf8mb4_unicode_cicharacter-set-client-handshake = falsedatadir=/usr/local/mysql/data/
注意: 在上面的信息中除了编码其他都是非必须项,比如 datadir 配置,因为笔者当前的 MySQL 存储目录为 /usr/local/mysql/data/(该目录也是 MySQL 默认目录)所以进行明确指定,如果不指定 MySQL 将会采用默认目录,这里做下说明!
编辑好之后按 ESC 后 :wq 保存即可!
最后,重启 MySQL 服务:
sudo ./mysql start
重启完成后,登录客户端:
$ mysql -u root -pEnter password:
最后,在输入如下查询 SQL 语句查看编码信息:
mysql> SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%';+--------------------------+-----------------------------------------------------------+| Variable_name | Value |+--------------------------+-----------------------------------------------------------+| character_set_client | utf8mb4 || character_set_connection | utf8mb4 || character_set_database | utf8mb4 || character_set_filesystem | binary || character_set_results | utf8mb4 || character_set_server | utf8mb4 || character_set_system | utf8 || character_sets_dir | /usr/local/mysql-5.7.25-macos10.14-x86_64/share/charsets/ || collation_connection | utf8mb4_unicode_ci || collation_database | utf8mb4_unicode_ci || collation_server | utf8mb4_unicode_ci |+--------------------------+-----------------------------------------------------------+
collation_connection、collation_database、collation_server 是什么没关系。
但必须保证如下几个变量必须是 utf8mb4:
| 系统变量 | 描述 |
|---|---|
character_set_client |
客户端来源数据使用的字符集 |
character_set_connection |
连接层字符集 |
character_set_database |
当前选中数据库的默认字符集 |
character_set_results |
查询结果字符集 |
character_set_server |
默认的内部操作字符集 |
数据库连接的配置
数据库连接参数中:
characterEncoding=utf8 会被自动识别为 utf8mb4,也可以不加这个参数,会自动检测。 而 autoReconnect=true 是必须加上的。
将数据库和已经建好的表也转换成 utf8mb4
更改数据库编码:
ALTER DATABASE <DATABASE_NAME> CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
更改表编码:
ALTER TABLE <TABLE_NAME> CONVERT TO CHARACTER SET utf8mb4 COLLATEutf8mb4_general_ci;
如有必要,还可以更改列的编码
