详解关于MySQL 8.0走过的坑

今天手贱更新了MySQL 8.0

第一个问题:Navicat连接不上数据库

安装的mysql为localhost:3306,配置一切默认,安装后打开Navicat 12 新建连接,直接报错

authentication plugin 'caching_sha2_password'

身份验证插件不能被加载

查了下官方文档6.5.1.3 Caching SHA-2 Pluggable Authentication

原来在MySQL 8.0中,caching_sha2_password取代了mysql_native_password成为默认的身份验证插件,官方给出的解决方案如下

1、重新配置服务器以恢复到以前的默认身份验证插件(mysql_native_password)。

[mysqld]
default_authentication_plugin=mysql_native_password

该设置允许8.0之前的客户端连接到8.0服务器,但是,该设置应被视为临时设置,而不是长期或永久性解决方案,因为它会导致使用有效设置创建的新帐户放弃提供的改进的身份验证安全性 caching_sha2_password。

2、将根管理帐户的身份验证方式更改为mysql_native_password。

对于新的MySQL 8.0安装,在初始化数据目录时,将创建帐户'root'@'localhost',并且该帐户将默认使用caching_sha2_password。连接到服务器root并使用ALTER USER 如下更改帐户身份验证插件和密码:

ALTER USER 'root'@'localhost'
 IDENTIFIED WITH mysql_native_password
 BY 'password';

至此,解决了MySQL 8.0的默认身份校验更换问题。

第二个问题:Caused by: java.sql.SQLException: Unknown initial character set index '255'...

在更新完数据库后,本地启了一个java小工程,连接数据库跑了个测试程序直接抛出异常,叕查了一下官方文档 Changes in MySQL 8.0.1 (2017-04-10, Development Milestone),原来是8.0.1的版本将Unicode字符集支持中进行了几项重要更改,默认字符集已从更改latin1为 utf8mb4。而这个这个系统默认 collation_server 和 collocation_database 系统变量由 latin1_swedish_ci 变为 utf8mb4_0900_ai_ci。

解决办法:所有这些更改都已经在新版本的MySQL连接器Java中进行了处理,不需要配置MySQL。所以只需要升级MYSQL的版本即可,将5.1.6更改为5.1.44,问题完美解决。

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.44</version>
  </dependency> 

问题三安装完成后进入数据库show databases;、或者尝试更改权限时报错

ERROR 1449 (HY000): The user specified as a definer ('mysql.infoschema'@'localhost') does not exist
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,但是客户端暂时不支持这个插件导致的。官方文档说明

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文件,更改默认的身份认证插件。

$ vi /etc/my.cnf

在[mysqld]中添加下边的代码

default_authentication_plugin=mysql_native_password

然后重启mysql

$ service mysqld restart

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • MySQL8.0.11版本的新增特性介绍

    MySQL 8.0 for Windows v8.0.11 官方免费正式版 64位 一. 数据字典(Data dictionary) 1)合并了存储数据库对象信息的事务性数据字典:之前版本是存储于元数据文件和非事务表中 : 二.原子数据定义语句(原子DDL)(Atomic Data Definition Statements (Atomic DDL)) 三.安全性和账户管理(Security and account management) 1)A new caching_sha2_passwor

  • mysql8.0.0 winx64.zip解压版安装配置教程

    本文记录了mysql8.0.0 winx64.zip解压版安装教程,具体内容如下 1.自己到mysql官网下载mysql-8.0.0-dmr-winx64.zip解压缩安装包 2.下载页面地址:官网地址 3.解压缩到任意目录(我自己是D:\DevTools\mysql-8.0.0) 4.配置环境变量添加path路径为你的mysql8.0.0路径下面的bin目录(我的目录是D:\DevTools\mysql-8.0.0\bin) 5.到你的解压目录下面修改default-my.ini如下图标识 b

  • mysql8.0.11 winx64安装配置方法图文教程(win10)

    mysql 8.0.11 winx64安装教程记录如下,分享给大家 1.进入地址: 下载mysql-8.0.11-winx64 2.解压zip包,并将解压文件放入一个文件夹下,如图: 3.配置环境变量(目的是为了避免在CMD窗口下操作时反复切换路径) 在Path下添加 D:\Program Files\mysql-8.0.11-winx64\bin 4.编写配置文件 我们发现解压后的目录并没有my.ini(或my-default.ini)文件,没关系可以自行创建.在安装根目录下添加 my.ini

  • mysql8.0.2离线安装配置方法图文教程

    离线安装MySQL_8.0.2方法,供大家参考,具体内容如下 从MySQL官网中获取了下面这个压缩包: 解压之后变成这个样子: 文件里面是这个样子: 下面开始了,请注意. 第一大步:配置my.ini文件 内容如下: [mysql] # 设置mysql客户端默认字符集 default-character-set=utf8 [mysqld] #设置3306端口 port = 3306 # 设置mysql的安装目录,若报错用反斜杠 basedir=D:\\tools\\ mysql-8.0.2-dmr

  • mysql8.0.11客户端无法登陆的解决方法

    本文为大家分享了mysql8.0.11客户端无法登陆的解决方法,供大家参考,具体内容如下 mysql8.0.11 默认加密方式[caching_sha2_password],Navicat for MySQL和Navicat Premium 12客户端不支持. 可以使用在数据库服务器上登录: mysql>use mysql; mysql> select user, host, plugin, authentication_string from user where user='test';

  • mysql8.0.11 winx64手动安装配置教程

    首先跟大家唠一唠家常,随着MySQL迅速的更新,MySQL突飞猛进已经更新到了8.0版本,那么它和我们之前用的5.X版本有什么明显的区别那?首先给大家看下MySQL5.X自带表的查询速度 之后献上MySQL8.0的自带表的查询速度 一样的数据结果显而易见,MySQL8.0的坑我是走了个遍,为了让大家少走弯路,献上以下手动安装方法 1. 官网下载并解压 我下载了mysql-8.0.11-winx64,下载地址 直接点击我红色记号笔圈出的超链接,这句话的中文意思是:不用了,直接开始下载 2. 设置系

  • MySQL8.0.3 RC版即将发布 先来看看有哪些变化

    MySQL 8.0.3 即将发布,一起看看有什么新变化吧 MySQL 8.0.3 即将发布 RC 版本,这预示着 8.0 版本离 GA 越来越近了. 下面分享一下 8.0.3 版本的一些重要新特性.新变化: 1.直接废除 query cache(应该只是关闭入口,自行编译源码的话,还能再次启用) 2.查询优化器支持直接在 SQL 中利用 SET_VAR 这个 HINT 语法修改某些会话级的选项,比如: - SELECT /*+ SET_VAR (sort_buffer_size = 16M) *

  • MySQL8.0.11安装总结教程图解

    安装环境: CAT /etc/os-release 查看centos系统版本信息: getconf LONG_BIT 获取惭怍系统位数 系统为 64位 centos 7 配置安装源: rpm -Uvh https://repo.mysql.com/mysql57-community-release-el7-11.noarch.rpm yum --enablerepo=mysql80-community install mysql-community-server 启动mysql服务 system

  • mysql8.0 windows x64 zip包安装配置教程

    mysql 8 windows 版本zip方式安装步骤(下载地址) 1.解压ZIP文件到指定目录下:如D:\mysql-8.0.11-winx64 2.新建my.ini配置文件并粘贴修改如下内容:(1)baseidr路径  (2)datadir路径 [mysql] # 设置mysql客户端默认字符集 default-character-set=utf8 [mysqld] #设置3306端口 port = 3306 # 设置mysql的安装目录 basedir=D:\\mysql-8.0.11-w

  • 详解关于MySQL 8.0走过的坑

    今天手贱更新了MySQL 8.0 第一个问题:Navicat连接不上数据库 安装的mysql为localhost:3306,配置一切默认,安装后打开Navicat 12 新建连接,直接报错 authentication plugin 'caching_sha2_password' 身份验证插件不能被加载 查了下官方文档6.5.1.3 Caching SHA-2 Pluggable Authentication 原来在MySQL 8.0中,caching_sha2_password取代了mysql

  • mysql数据库详解(基于ubuntu 14.0.4 LTS 64位)

    1.mysql数据库的组成与相关概念 首先明白,mysql是关系型数据库,和非关系型数据库中最大的不同就是表的概念不一样. +整个mysql环境可以理解成一个最大的数据库:A +用mysql创建的数据库B是属于A的,是数据的仓库,相当于系统中的文件夹 +数据表C:是存放数据的具体场所,相当于系统中的文件,一个数据库B中包含若干个数据表C(注意此处的数据库B和A不一样) +记录D:数据表中的一行称为一个记录,因此,我们在创建数据表时,一定要创建一个id列,用于标识"这是第几条记录",id

  • 详解记录MySQL中lower_case_table_names的坑

    1 起因 项目迁移数据库, 重新启动后, 报错"T_AAA表不存在", 但数据库中可以查看到该表并有数据 2 问题分析 通过重装系统与数据库, 确认系统与数据库纯净, 排除系统和数据库的原因 使用同一方式恢复两天前和一天前的数据备份, 同样不能启动项目, 排除数据内容的原因 使用mysqldump和导出SQL文件两种方式, 恢复一天前的数据, 同样不能启动项目, 排除恢复方式的原因 以上方式基本是运维人员参与, 等技术总监参与观察项目报错后, 猛然发现是表名大小写的问题, 通过测试最终

  • 详解.NET Core 3.0 里新的JSON API

    为什么需要新的 JSON API ? JSON.NET  大家都用过,老版本的 ASP.NET Core 也依赖于 JSON.NET . 然而这个依赖就会引起一些版本问题:例如 ASP .NET  Core某个版本需要使用 JSON .NET  v10 ,而另一个库需要使用 JSON.NET  v11 :或者 JSON .NET   出现了一个新版本,而ASP .NET Core 还不能支持这个版本,而您却想使用该版本. System.Text.Json   随着 NET Core  3.0 的

  • 详解ASP.NET Core3.0 配置的Options模式

    上一章讲到了配置的用法及内部处理机制,对于配置,ASP.NET Core还提供了一种Options模式. 一.Options的使用 上一章有个配置的绑定的例子,可以将配置绑定到一个Theme实例中.也就是在使用对应配置的时候,需要进行一次绑定操作.而Options模式提供了更直接的方式,并且可以通过依赖注入的方式提供配置的读取.下文中称每一条Options配置为Option. 1.简单的不为Option命名的方式 依然采用这个例子,在appsettings.json中存在这样的配置: { "Th

  • 详解Go语言中for range的"坑"

    前言 Go 中的for range组合可以和方便的实现对一个数组或切片进行遍历,但是在某些情况下使用for range时很可能就会被"坑",下面用一段代码来模拟下: func main() { arr1 := []int{1, 2, 3} arr2 := make([]*int, len(arr1)) for i, v := range arr1 { arr2[i] = &v } for _, v := range arr2 { fmt.Println(*v) } } 代码解析

  • 详解vue-socket.io使用教程与踩坑记录

    目录 前言 我遇到的问题 使用教程 安装 引入(main.js) 使用(Page.vue) 解决方案 结合connect事件+store+路由守卫实现拦截 请先允许我狠狠吐个槽:vue-socket.io相关中文博客实在太少太少,来来去去就那么几篇,教程也比较零散,版本也比较老,就算我有暴风式搜索还是找不到解决问题的方案,然后我怒了,开始看源码.写测试demo.几乎把相关的issues都看了一遍,折腾1天后终于...搞定了,下面总结一下~ 考虑到很多小伙伴看完文章还是一头雾水或者无法复现方案,附

  • 详解springboot整合ueditor踩过的坑

    有一天老板突然找我让我改富文本(一脸懵逼,不过也不能推啊默默地接下了),大家都知道现在的富文本视频功能都是只有上传链接的没有从本地上传这一说(就连现在的csdn的也是)于是我找了好多个,最终发现百度的ueditor可以. 经过几天的日夜,甚至牺牲了周末休息时间开始翻阅资料... 废话不多说,开始教程: 第一步: 去ue官网下载他的源码 第二步: 解压下载的源码(下载可能会慢,好像需要翻墙下载) 然后打开项目把源码拖进项目的resources/static中去 第三步 就是重点了 由于spring

  • 详解vscode使用git所遇到的坑

    今天给vscode配置git的时候,差点没把我送走,我在配置git项目的时候会,看了一个博客文章的教学,其中配置路径的方法如下 1. 在git bash 中使用 命令 : where git 的路径 2.然后按照上面的路径配置到 vscode下的Git:path中,如下 然后当我使用vscode的push命令时 就出现如下错误 我百度了很多篇解决办法的文章,千姿百态,结果还是一个样报这个错误, 后来我突然发现别人的路径明显不是ming64下的git.exe,这一次我抱着最后的希望更改了路径 如下

  • 详解SpringCloud mysql实现配置中心

    mysql实现配置中心 本公司配置数据的管理是通过mysql进行配置管理,因为已经搭建好了,所以自己动手重新搭建一遍,熟悉整个流程.有关项目源码后期会补上github地址 微服务要实现集中管理微服务配置. 不同环境不同配置 . 运行期间也可动态调整 . 配置修改后可以自动更新的需求 ,Spring Cloud Config同时满足了以上要求. 一.项目搭建 本次主要用三个微服务 (1)Eureka-server: 7001 注册中心 (2)config-server : 5001 配置中心 (3

随机推荐