MySql Error 1698(28000)问题的解决方法

MySQL Error 1698(28000)是指在使用MySQL命令行进行登录或创建新用户时出现的一个权限验证错误。这个错误通常发生在新的安装或升级MySQL版本之后。下面是解决这个问题的完整攻略:

1. 原因分析

在MySQL 5.7版本之后,对于每个MySQL Root账户都有了角色管理功能,新安装的MySQL 8.0版本默认启用了角色管理。因此,使用Root账户登录MySQL时需要使用sudo命令或者以管理员身份运行才行。否则,你会得到类似于下面的错误提示:

Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client

2. 解决方法

方法一:修改Root账户的验证方式

第一种方法是修改root账户的验证方式,使其变为旧的验证方式。这种方法要求你有超级管理员权限,可以通过以下步骤来实现:

  1. 停止mysqld服务:
$ sudo systemctl stop mysql
  1. 启动mysqld服务,并加上--skip-grant-tables参数,这将使mysqld启动时跳过用户验证,从而允许你以root账户登录:
$ sudo mysqld_safe --skip-grant-tables&
  1. 进入mysql shell:
$ mysql -u root
  1. 将root账户的验证方式更改为mysql_native_password:
mysql> use mysql;
mysql> update user set plugin='mysql_native_password' where User='root';
mysql> flush privileges;
mysql> quit;
  1. 停止mysqld服务:
$ sudo systemctl stop mysql
  1. 启动mysqld服务,此时root账户的验证方式已经更改完成:
$ sudo systemctl start mysql

现在,你就可以使用root账户以及其密码成功登录MySQL了。

方法二:创建一个新的管理员账户

第二种方法是创建一个新的管理员账户,使用这个新账户来管理MySQL数据库。这种方法也要求你有超级管理员权限,可以通过以下步骤来实现:

  1. 使用root账户(原有的或是通过第一种方法创建的)登录MySQL,并创建一个新的管理员账户:
mysql> CREATE USER 'admin'@'localhost' IDENTIFIED BY 'password';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;

这段代码中,admin是新的管理员账户名,password是密码。

  1. 退出MySQL:
mysql> quit
  1. 检查新账户是否能够成功登录MySQL:
$ mysql -u admin -p

现在,你已经成功创建一个新的管理员账户,并使用这个账户成功登录MySQL了。如果你需要进行一些管理员的操作,就可以使用这个新账户来完成了。

3. 总结

在本文中,我们讨论了MySQL Error 1698(28000)产生的原因,并提供了两种解决方法。第一种方法是修改MySQL Root账户的密码验证方式,使其变为旧的方式;第二种方法是创建一个新的管理员账户,使用这个账户来管理MySQL数据库。两种方法都需要你有超级管理员权限。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MySql Error 1698(28000)问题的解决方法 - Python技术站

(0)
上一篇 2023年5月18日
下一篇 2023年5月18日

相关文章

  • egg实现登录鉴权(二):连接数据库(mysql)

    前一篇实现了基本的生成token和验证token的功能,这其实并没什么用。这一篇主要实现对数据库里的人员进行验证。 需求 登录:查询数据库的user表验证该人员是否存在 user表中存在该nickname,生成token返回 user表中不存在该nickname,返回{code:’404′,msg:’不存在该人员’} 查询 查询所有user,无需传token…

    MySQL 2023年4月13日
    00
  • MySQL下载安装、配置与使用教程详细版(win7x64)

    MySQL下载安装、配置与使用教程详细版(win7x64) MySQL是一种开源免费的关系型数据库管理系统,广泛应用于Web开发领域。本文将带领读者下载安装MySQL,并对其进行配置和使用教程。 第一步:下载MySQL 1.首先打开MySQL官网,选择下载对应版本。 2.根据自己的需求下载需要的版本,本教程以MySQL 5.7版本为例。 第二步:安装MySQ…

    MySQL 2023年5月18日
    00
  • 不同于Oracle:MySQL的insert会阻塞update

    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。 GreatSQL是MySQL的国产分支版本,使用上与MySQL一致。 作者: 王庆勋 文章来源:GreatSQL社区原创 某银行客户在从Oracle迁移到MySQL的开发中,MySQL在READ-COMMITTED隔离级别下,出现了insert阻塞update的情况,但同样的情况下…

    MySQL 2023年4月18日
    00
  • PyQt5连接MySQL及QMYSQL driver not loaded错误解决

    请参考下面的完整攻略来解决“PyQt5连接MySQL及QMYSQL driver not loaded错误”的问题。 1. 安装MySQL驱动 为了能够连接MySQL,我们需要使用Qt提供的QMYSQL driver。在PyQt5中,该驱动可以通过安装PyMySQL实现。 执行以下命令进行安装: pip install pymysql 或者使用以下命令安装预…

    MySQL 2023年5月18日
    00
  • MySQL – change 和 modify 的区别

    表描述MySQL 中 change 和 modify 区别 更改列名 change: alter table 表名 change 旧列名 新列名 类型 只更改列属性 change: alter table 表名 列名 列名 类型 相同的列名要写两次. 更改列属性 modify: alter table 表名 列名 类型 区别:1)change 可以更改列名 …

    MySQL 2023年4月12日
    00
  • 升级到MySQL5.7后开发不得不注意的一些坑

    升级到MySQL5.7后开发需要注意的坑 MySQL5.7版本更新了很多功能,但也会导致一些坑点,需要开发者特别注意,下面是升级到MySQL5.7后开发需要注意的几个坑点。 1. 默认字符集 MySQL5.7的默认字符集由之前的latin1改成了utf8mb4。如果之前的表是使用了latin1字符集,升级后需要特别注意,因为utf8mb4在存储数据时,一个字…

    MySQL 2023年5月18日
    00
  • 《1—关于解决MySQL在控制台插入中文乱码问题》

    说明:以下所有操作都是基于我个人的电脑及示例,读者可以参考我这个解决过程,去解决自己的问题,如有其它疑问,欢迎留言交流。 首先来看看我遇到的问题: 【1】查看数据库: 【2】使用test数据库: 【3】查看test数据库中有哪些表: 【4】查看student_table2表中的字段内容: 【5】向student_table2表中插入一条记录: 可以看到插入失…

    MySQL 2023年4月13日
    00
  • MySQL 5.6 中TIMESTAMP with implicit DEFAULT value is deprecated错误

    当使用MySQL 5.6版本时,在没有指定默认值的情况下,使用TIMESTAMP类型的列,可能会出现“TIMESTAMP with implicit DEFAULT value is deprecated”错误。这是因为MySQL 5.6版本之后,TIMESTAMP类型的列默认值已被设置为CURRENT_TIMESTAMP,需要显式指定默认值才能避免错误的发…

    MySQL 2023年5月18日
    00
合作推广
合作推广
分享本页
返回顶部