迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 数据库 > MySQL >

在 MySQL 中跳过授权表

作者:迹忆客 最近更新:2024/03/26 浏览次数:

今天,我们将学习 MySQL 的跳过授权表、授权表,以及当我们锁定 root 用户、忘记其密码或想要恢复完全权限时如何在 MySQL 中使用 --skip-grant-tables


MySQL 系统数据库中的授权表

MySQL 系统数据库中的授权表有以下信息:

  • user(全局权限、用户帐户和其他非特权字段/列)
  • db(数据库级别的权限)
  • tables_priv(表级别的特权)
  • columns_priv(列级别的特权)
  • procs_priv(函数和存储过程的特权)
  • proxies_priv(代理用户的特权)

每个授权表都由范围和特权列组成。范围列标识表中每一行的范围。

权限列表示表行授予的权限或它允许执行的操作类型。


MySQL 中的 --skip-grant-tables 选项

从 MySQL 8.0.3 开始,--skip-grant-tables 启用了 --skip-networking,它自动不允许远程连接。例如,当 --skip-grant-tables 处于活动状态时,有关帐户管理的 SQL 语句 ALTER USER 将被禁用。

我们可以在以下情况下使用 --skip-grant-tables

  1. 我们不小心锁定了 root 用户。
  2. 我们忘记了 root 密码。
  3. 我们失去了 root 用户的所有权限。

让我们开始了解上述每种情况的解决方案。

root 用户被锁定时使用 --skip-grant-tables

  • 使用 Windows 管理工具停止 services.msc 中的 MySQL 服务。它可以在 C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Administrative Tools 或通过 Windows 搜索栏访问。

  • 通过添加以下行来更新名为 my.ini 的配置文件中 [mysqld] 下的 SERVER SECTION
    skip-grant-tables
    

    如果你在默认位置安装了 MySQL,则 my.ini 文件位于 C:\ProgramData\MySQL\MySQL Server 8.0\my.ini

  • 再次启动 MySQL 服务器。这次我们可以不用密码登录了。

使用 --skip-grant-tables 恢复 MySQL root 用户的完整权限

我们可以使用 UPDATE 命令恢复 MySQL root 用户的完全权限。

  • 首先,我们需要停止 mysqld
  • 接下来,使用 --skip-grant-table 选项重新启动它以禁用 root 帐户的登录凭据。
  • 此外,仅使用 mysql 再次连接到 mysqld 服务器。这里我们不使用 -p 选项作为密码,也可能不输入用户名。
  • mysql 客户端中使用以下命令来获取 MySQL 中 root 用户的所有权限。
    mysql> UPDATE mysql.user SET Grant_priv = 'Y', Super_priv = 'Y' WHERE User = 'root';
    

    我们已经使用 Super_priv = 'Y' 设置了超级权限。

  • 现在,我们必须使用 FLUSH 命令刷新权限,如下所示:
    mysql> FLUSH PRIVILEGES;
    

    请记住,当 --skip-grant-table 处于活动状态时,MySQL 不会在查询和连接时检查授权表,这意味着任何人都可以快速远程登录并操作数据库。

在 MySQL 中使用 --skip-grant-tables 重置 root 密码

在这里,我们可以使用 mysql 客户端来重置root 密码,但这是一种不太安全的方法。要继续使用此方法,请按照以下步骤操作:

  • 停止 MySQL 服务器并使用 --skip-grant-tables 重新启动。为什么我们要关闭服务器?因为这是一种不安全的方法,并且通过启用 skip_networking 来禁用远程连接。
  • 使用 mysql 客户端重新连接 MySQL 服务器。此处不需要密码。
  • mysql 客户端中,重新加载授权表以使帐户管理语句正常工作。
    mysql> FLUSH PRIVILEGES;
    
  • 现在,用你想要的密码更新'root'@'localhost' 帐户的密码。
  • 更新语句以使用该主机名以不同的主机名部分更改 root 帐户的密码。
    mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword';
    
  • 最后,我们可以使用新密码以 root 用户身份连接到 MySQL 服务器。像往常一样关闭服务器并重新启动(没有 --skip-grant-tablesskip-networking)。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

如何在 MySQL 中声明和使用变量

发布时间:2024/03/26 浏览次数:102 分类:MySQL

当你需要在 MySQL 中的脚本中存储单个值时,最好的方法是使用变量。变量有不同的种类,有必要知道何时以及如何使用每种类型。

在 MySQL 中格式化和存储电话号码

发布时间:2024/03/26 浏览次数:77 分类:MySQL

本教程说明了 MySQL 数据库中电话号码字段的处理和格式设置。还讨论了根据数据库要求选择最合适的数据类型。

MySQL 中的减法运算

发布时间:2024/03/25 浏览次数:140 分类:MySQL

本教程将指导你如何在 MySQL 中模拟 MINUS 操作。它还通过不同的示例教你各种模拟 MINUS 操作的方法。

MySQL 中的安全模式

发布时间:2024/03/25 浏览次数:193 分类:MySQL

本教程帮助我们了解 MySQL 数据库中的安全模式。

MySQL 中的 MUL vs PRI vs UNI

发布时间:2024/03/25 浏览次数:190 分类:MySQL

本教程将指导你了解 MySQL 中 MUL、PRI 和 UNI 键之间的区别。它还强调了它们中的每一个的使用。

MySQL 中的 If ELSE

发布时间:2024/03/25 浏览次数:65 分类:MySQL

本教程演示如何在 MySQL 中使用 IF ELSE 语句。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便