MySQL8新特性及升级注意点

MySQL8引入了一些新特性,也有一些改动,升级的时候要注意下。

Authentication 身份认证

身份认证时默认使用的是caching_sha2_password,而之前的版本是mysql_native_password,老的程序不兼容,比如MySQL管理工具Sequel Pro等。

解决方法:

  1. 改回mysql_native_password,对新用户有效。

修改配置文件,然后重启MySQL Server.

[mysqld]

default_authentication_plugin=mysql_native_password
  1. 针对单个用户使用mysql_native_password,SQL如下
    ALTER USER 'username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

字符集

默认字符集utf8mb4而不是utf8,与时俱进嘛。

文档存储Document Store

MySQL8的文档存储Document Store是通过X插件实现的,这是一个新的插件,之前的版本都没有。外部程序通过X协议与之交互。

X插件默认启用,X协议默认连接端口是33060而不是3306,如果使用mysql命令
或传统的客户端如Sequel Pro Navicat,甚至是MySQL官方出品的MySQL Workbench去连接X协议,都会报错

ERROR 2007 - Protocol mismatch; server version = 11, client version = 10

如果要通过X协议往MySQL8中写新数据,可通过以下两种方式。

  1. 使用mysqlsh

终端输入命令mysqlsh,再连接

\connect --mysqlx user@host:port

连接成功后可以使用\status session命令查看状态和会话。

  1. 使用X DevAPI连接,比如PHP下的mysql_xdevapi扩展等。

而对于已经存在的数据,可通过传统的3306端口和客户端去连接查询,甚至还可以做小幅的修改,不过新增就不要指望了。然即便如此,还是有些客户端不支持,比如Sequel Pro。PHP的MySQL扩展和Navicat Premium 15.0.24实测没问题,所有列正常显示,而MySQL Workbench会直接把_id列显示成BLOB

Leave a Comment

豫ICP备19001387号-1