# mysql升级8.0后遇到的坑

**URL:** <https://www.shiqidu.com/t/topic/407>\
**Category:** 开发调优\
**Tags:** MySQL\
**Created:** [2018 年4 月 21 日 13:20 UTC](https://www.shiqidu.com/t/topic/407 "2018-04-21T13:20:17Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

作者： ![Eureka](https://www.shiqidu.com/user_avatar/www.shiqidu.com/eureka/32/5_2.png) [@Eureka](https://www.shiqidu.com/u/Eureka)\
发布日期： [2018 年4 月 21 日 13:20 UTC](https://www.shiqidu.com/t/topic/407/1 "2018-04-21T13:20:17Z")

</div>

听说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://discourse.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

```

**解决方法**

```auto
mysql_upgrade -u root -p;

```

## 坑三

在客户端成功连接数据库之后，发现项目里的pdo连接mysql又报错了。

```auto
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

```

网站终于正常打开了。。。

* * *

注：如果是新装的mysql8，可能还是会报错，就需要手动修改下密码

```bash
ALTER USER 'username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';

```

* * *

![mysql_@.png](https://discourse.shiqidu.com/upload/discussion/20180421/c290dd8f89079cae0865fc0ceac37300_origin.png)

---

<div class="post-metadata">

作者： ![zousaisai](https://www.shiqidu.com/user_avatar/www.shiqidu.com/zousaisai/32/470_2.png) [@zousaisai](https://www.shiqidu.com/u/zousaisai)\
发布日期： [2018 年4 月 21 日 13:21 UTC](https://www.shiqidu.com/t/topic/407/2 "2018-04-21T13:21:43Z")

</div>

你咋就则么及时哩

---

<div class="post-metadata">

作者： ![Eureka](https://www.shiqidu.com/user_avatar/www.shiqidu.com/eureka/32/5_2.png) [@Eureka](https://www.shiqidu.com/u/Eureka)\
发布日期： [2018 年4 月 21 日 13:24 UTC](https://www.shiqidu.com/t/topic/407/3 "2018-04-21T13:24:40Z")

</div>

😆喜欢尝鲜。。。

---

<div class="post-metadata">

作者： ![Eureka](https://www.shiqidu.com/user_avatar/www.shiqidu.com/eureka/32/5_2.png) [@Eureka](https://www.shiqidu.com/u/Eureka)\
发布日期： [2018 年4 月 21 日 13:25 UTC](https://www.shiqidu.com/t/topic/407/4 "2018-04-21T13:25:35Z")

</div>

mysql8.0默认编码就是utf8mb4，完美支持emoji。😆

---

<div class="post-metadata">

作者： ![zousaisai](https://www.shiqidu.com/user_avatar/www.shiqidu.com/zousaisai/32/470_2.png) [@zousaisai](https://www.shiqidu.com/u/zousaisai)\
发布日期： [2018 年4 月 21 日 13:25 UTC](https://www.shiqidu.com/t/topic/407/5 "2018-04-21T13:25:54Z")

</div>

有些不方便

---

<div class="post-metadata">

作者： ![zousaisai](https://www.shiqidu.com/user_avatar/www.shiqidu.com/zousaisai/32/470_2.png) [@zousaisai](https://www.shiqidu.com/u/zousaisai)\
发布日期： [2018 年4 月 21 日 13:28 UTC](https://www.shiqidu.com/t/topic/407/6 "2018-04-21T13:28:49Z")

</div>

😇😇😇😇😇

---

<div class="post-metadata">

作者： ![Eureka](https://www.shiqidu.com/user_avatar/www.shiqidu.com/eureka/32/5_2.png) [@Eureka](https://www.shiqidu.com/u/Eureka)\
发布日期： [2018 年4 月 21 日 13:29 UTC](https://www.shiqidu.com/t/topic/407/7 "2018-04-21T13:29:28Z")

</div>

@zousaisai: 是说在手机上回复不方便吗？最好的用户体验还得做成APP，我在学习oc，拭目以待吧。

---

<div class="post-metadata">

作者： ![zousaisai](https://www.shiqidu.com/user_avatar/www.shiqidu.com/zousaisai/32/470_2.png) [@zousaisai](https://www.shiqidu.com/u/zousaisai)\
发布日期： [2018 年4 月 21 日 13:41 UTC](https://www.shiqidu.com/t/topic/407/8 "2018-04-21T13:41:14Z")

</div>

嗯啊

---

<div class="post-metadata">

作者： ![dajiang](https://www.shiqidu.com/user_avatar/www.shiqidu.com/dajiang/32/468_2.png) [@dajiang](https://www.shiqidu.com/u/dajiang)\
发布日期： [2018 年4 月 22 日 04:02 UTC](https://www.shiqidu.com/t/topic/407/9 "2018-04-22T04:02:24Z")

</div>

佩服题主追求技术

---

<div class="post-metadata">

作者： ![Eureka](https://www.shiqidu.com/user_avatar/www.shiqidu.com/eureka/32/5_2.png) [@Eureka](https://www.shiqidu.com/u/Eureka)\
发布日期： [2018 年4 月 22 日 04:51 UTC](https://www.shiqidu.com/t/topic/407/10 "2018-04-22T04:51:37Z")

</div>

太抬举了，也是不求甚解啊。
