从mysql 5.7 升级到 8.0 的一些注意事项

最近 mysql 5.7 版本将会终止安全更新,越来越多的朋友考虑升级 mysql 8.0,以下是一些刚开始使用时可能存在差异问题的地方,有一些其实在 mysql 5.7 版本里已经开始使用,这里整理一下方便查阅。

1、关于端口,该版本 MySQL 常用的端口包括3306、33060、33062,这三个端口分别是第一个常规协议端口3306(包括SSL安全连接也是这个端口),第二个 MySQL x协议端口33060,该端口协议类似 Protocolbuf,第三个是管理端口33062,该端口在常规连接数满了后依然可以使用。日常的话3306端口可以满足大部分需要。如果我们使用客户端连接到不正确的端口,如下所示,则会显示协议不正确的提示。

Protocol mismatch; server version = 11, client version = 10

这是因为你使用传统协议客户端连接到33060端口导致的冲突。不使用MySQL x 可以在 my.cnf 中添加如下配置屏蔽:

[mysqld]
mysqlx=OFF

屏蔽后再执行如下 SQL 将不再有内容输出.

mysql> show variables like 'mysqlx%';

查看当前 mysql 启用的插件可使用以下 sql 命令:

mysql> show plugins;

2、MySQL默认启用了 caching_sha2_password 的密码验证,它是 sha256_password 的有缓存版本,我们默认添加的用户都使用该插件来创建验证机制,可以通过以下的SQL来查看用户使用了何种插件,

mysql> select user,host,plugin from mysql.user;

如何我们想使用传统的验证方式,则需要在创建用户时显式使用 mysql_native_password 来创建。

mysql> create user user_xxx@'127.0.0.1' identifed with mysql_native_password by 'xxxxxxx';

需要注意的是,使用 caching_sha2_password 的用户登录时必须使用安全连接,否则会得到如下错误提示

ERROR 2061 (HY000): Authentication plugin 'caching_sha2_password' reported error: Authentication requires secure connection.

也可以在 my.cnf 里添加如下配置来默认使用传统方式来创建用户,这样在创建用户时就不用显示使用 mysql_native_password。

[mysqld]
default_authentication_plugin=mysql_native_password

3、客户端使用安全连接需要如下添加连接选项,虽然默认的连接方式会自动选择安全和非安全连接,但会带来一些不确认的因素。

使用传统非安全连接

mysql -h 127.0.0.1 -P 3306 -u user_xxx -p --ssl-mode=disabled

使用安全连接

mysql -h 127.0.0.1 -P 3306 -u user_xxx -p --ssl-mode=required

连接命令中 --ssl-mode 选项还有其它更严格的参数值可以对证书和服务器进行验证,具体可参阅官方文档。

命连接成功后,可以通过如下SQL查看当前是否是安全连接

mysql> \s

在 my.cnf 中添加如下配置,可以强制用户连接 MySQL 时使用安全连接,反之则两种连接都可以使用

[mysqld]
require_secure_transport=ON

以上是刚开始使用 mysql 8.0 时比较常见到的问题,更多详细信息可以参阅官方的文档

https://dev.mysql.com/doc/refman/8.0/en/

你可能感兴趣的:(MySQL,mysql,adb,数据库)