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日

相关文章

  • 为什么建议主键整型自增?

    昨天看到一个MySQL数据库设计原则:强烈建议表的主键使用整型自增主键。为啥呢? 要弄明白这个问题首先需要了解MySQL是如何维护数据的,你需要知道以下几点: MySQL的InnoDB存储引擎是在B+树上维护表数据的 B+树是一种平衡树 在这棵树上,每个节点在计算机中叫做数据页,默认16k 树的叶子节点是完整的行数据,非叶子节点是主键 叶子节点中的行数据按i…

    MySQL 2023年4月17日
    00
  • mysql 注入报错利用方法总结

    下面是关于”mysql 注入报错利用方法总结”的完整攻略,包括步骤和两条示例说明。 1. 概述 MySQL注入是一种常见的web安全漏洞,攻击者可以通过利用这个漏洞,实现绕过身份验证、将恶意代码插入到网站数据库等等攻击目的。 根据注入结果是否能够在web页面上输出,可以将MySQL注入常见的方法分为两类:基于布尔盲注和基于报错注入。本文重点介绍报错注入的利用…

    MySQL 2023年5月18日
    00
  • MySQL如何创建并执行事件?

    MySQL事件是可以预定义、独立运行的MySQL代码块。您可以使用MySQL事件来定期执行维护操作,如清除过期数据、备份数据等等。MySQL事件可以在MySQL服务器上创建和执行。 以下是创建和执行MySQL事件的详细步骤: 1.创建一个MySQL事件: CREATE EVENT my_event ON SCHEDULE EVERY 1 DAY DO BEG…

    MySQL 2023年3月10日
    00
  • 一个mysql死锁场景实例分析

    下面是对于一个MySQL死锁场景实例的分析攻略。 标题:一个MySQL死锁场景实例分析 死锁概述 MySQL中的死锁是指两个或多个事务互相占用对方所需要的资源,导致彼此等待释放资源而无法继续执行下去的现象。在这种情况下,MySQL会自动检测到死锁并打断其中一个事务,此时需要对出现死锁的代码进行调整。 死锁场景实例 以下假设有两个线程A和B,同时对一个MySQ…

    MySQL 2023年5月19日
    00
  • 分析Mysql大量数据导入遇到的问题以及解决方案

    分析Mysql大量数据导入遇到的问题以及解决方案 数据导入是数据库使用过程中必不可少的一环,在处理大量数据时,Mysql的数据导入操作可能会遇到以下问题: 问题一:导入速度太慢 当数据量大时,通过直接执行SQL语句进行数据导入的速度会相对较慢,尤其是在数据量太大的情况下,可能会导致SQL执行超时或服务器资源不足等问题。因此我们需要手段去提高导入的速度。 解决…

    MySQL 2023年5月18日
    00
  • 安装MySQL 5后无法启动(不能Start service)解决方法小结

    下面是针对“安装MySQL 5后无法启动(不能Start service)解决方法小结”的完整攻略: 问题描述 在安装MySQL 5后,有时候会出现无法启动(MySQL cannot start service)的情况。如何解决这个问题呢? 解决方法 检查my.ini文件是否正确 在安装MySQL后,my.ini文件可能会出现问题,导致MySQL无法启动。因…

    MySQL 2023年5月18日
    00
  • MySQL优化之对RAND()的优化方法

    MySQL优化之对RAND()的优化方法 为何需对RAND()进行优化 RAND()是MySQL中的一个常用函数,可以返回一个0到1之间的随机数。但是,当在大规模数据表上使用ORDER BY RAND()时,会显式遇到性能问题。这是因为MySQL会为每个需要排序的行生成随机数,以及每个随机数都需要与其他随机数进行排序比较。这样的操作当表的数据量增长到一定程度…

    MySQL 2023年5月19日
    00
  • MySQL的复合索引总结

    MySQL是一款常用的关系型数据库,索引是MySQL中优化查询性能的重要手段。复合索引是一种在多列上创建的索引,相比于单列索引,复合索引能够更加精确的定位需要检索的数据。 复合索引概述 复合索引是在多个列上创建的索引,可以通过查询中的多个条件来定位到符合条件的数据。对于多个列的查询,复合索引优于单列索引,因为单列索引不能够覆盖所有查询列的数据。 复合索引的创…

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