mysql升级8.0后遇到的坑

saonian 发布于 18-04-21 21:20 已修改 9546 点击
听说mysql8的性能提升了很多,对于我这种喜欢把所有软件升级到最新版的人来说,二话不说直接升级。(因为用户不多所以就是这么任性)。升级的过程不可能一帆风顺,本文记录一些遇到的坑,希望对大家有所帮助。 ## 坑一 首先在配置mysql的yum源的rpm包的时候报了如下的错。 ```bash $ rpm-Uvh http ://repo.mysql.com/mysql80-community- release-el7-1.noarch.rpm error: Failed dependencies : mysql57-community- release conflicts with mysql80-community- release-el7-1.noarch ``` ![mysql.png](https://www.shiqidu.com/upload/discussion/20180421/9448807579049d2cdd7c09b151b4688d_origin.png) **解决方法一**:使用rpm -qa 查找已安装包 ```bash $ rpm -qa | grep mysql mysql57-community- release-el7-11.noarch ``` 然后卸载对应包 ```bash $ rpm-e--nodeps mysql57-community- release-el7-11.noarch ``` **解决方法二**:增加`--nodeps --force` 参数 ```bash $ rpm-Uvh http ://repo.mysql.com/mysql80-community- release-el7-1.noarch.rpm --nodeps --force ``` ## 坑二 安装完成后进入数据库`show databases;`、或者尝试更改权限时报错 ```bash ERROR 1449 (HY000): The user specified as a definer ('mysql.infoschema'@'localhost') does not exist ``` ```bash Table 'mysql.role_edges' doesn't exist ``` **解决方法** ``` mysql_upgrade -u root -p; ``` ## 坑三 在客户端成功连接数据库之后,发现项目里的pdo连接mysql又报错了。 ``` Next PDOException: SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client [caching_sha2_password] in /vendor/yiisoft/yii2/db/Connection.php:687 ``` 这个错可能是mysql默认使用`caching_sha2_password`作为默认的身份验证插件,而不再是`mysql_native_password`,但是客户端暂时不支持这个插件导致的。[官方文档说明](https://dev.mysql.com/doc/refman/8.0/en/caching-sha2-pluggable-authentication.html) > In MySQL 8.0, caching_sha2_password is the default authentication plugin rather than mysql_native_password. For information about the implications of this change for server operation and compatibility of the server with clients and connectors, see caching_sha2_password as the Preferred Authentication Plugin. > >在MySQL 8.0中,caching_sha2_password是默认的身份验证插件,而不是mysql_native_password。有关此更改对服务器操作的影响以及服务器与客户端和连接器的兼容性的信息,请参阅caching_sha2_password作为首选身份验证插件。 **解决方法** 编辑`my.cnf`文件,更改默认的身份认证插件。 ```bash $ vi /etc/my.cnf ``` 在`[mysqld]`中添加下边的代码 ```bash default_authentication_plugin=mysql_native_password ``` 然后重启mysql ```bash $ service mysqld restart ``` 网站终于正常打开了。。。 * * * ![mysql_@.png](https://www.shiqidu.com/upload/discussion/20180421/c290dd8f89079cae0865fc0ceac37300_origin.png)
10 评论

请登录后发表评论

saonian

all or nothing, now or never.

文章
回复
粉丝