MYSQL在my.ini文件中添加skip-grant-tables启动参数的副作用(安全隐患)

本文介绍了一种在Mysql中绕过用户权限限制的方法,即通过在my.ini文件中添加skip-grant-tables参数来禁用权限验证,使得即使是未被授权的普通用户也能执行更新和插入等敏感操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

运行环境:Mysql5.7.20.

为了说明情况,首先创建一个普通用户,名字'wxf',密码123。如图:


可以看到,仅授权查询权限。现在退出root用户,使用创建的用户登陆mysql。如图:


可以看到,正常登陆。现在执行相关操作,发现奥秘。如图:


明显UPDATE操作不能成功。现在,就是见证奇迹的时刻了,在my.ini文件中添加skip-grant-tables启动参数,然后重启MYSQL服务。如图:


然后,使用该用户重新登录MYSQL,查看相关权限。如图:


明显没有插入和更新权限,现在我们尝试更新和插入数据到刚才的表格。如图:



可以看到,插入和更新都成功了。但是并没有为该普通用户授权UPDATE和INSERT,如果是这样,那就会产生很大的安全隐患。

skip-grant-tables作为启动参数的作用:MYSQL服务器不加载权限判断,任何用户都能访问数据库。

一般的使用情况是当root用户密码丢失时以此参数作为启动项。所以,慎用之。






### 设置 `skip-grant-tables` 绕过权限表 对于早期版本的 MySQL,可以在配置文件 `my.ini` 中通过 `[mysqld]` 下添加 `skip-grant-tables` 来绕过权限验证[^1]。然而,在较新的版本特别是 MySQL 8.0 及以上版本中,这种方法可能不再有效。 #### 方法一:直接修改 `my.ini` 尽管在某些情况下直接编辑 `my.ini` 文件并不可靠,仍然可以尝试: 1. 找到 MySQL 安装目录下的 `my.ini` 文件。 2. 使用文本编辑器打开该文件,并定位至 `[mysqld]` 节点之后的位置。 3. 添加如下行: ```ini [mysqld] skip-grant-tables=ON ``` 需要注意的是,这种方式并不总是奏效,尤其是在 Windows 平台上可能会遇到权限问题或其他未知因素影响其正常工作[^2]。 #### 方法二:命令行参数启动 更可靠的解决方案是在命令行中指定默认配置文件以及启用跳过授权表的功能来临时解决问题: ```bash mysqld --defaults-file="C:\ProgramData\MySQL\MySQL Server 5.7\my.ini" --skip-grant-tables --shared-memory ``` 上述指令适用于特定路径下的 MySQL 实例;实际操作时应替换为当前系统的正确路径[^3]。 #### 修改密码流程 当成功以不带认证的方式启动 MySQL 后,可以通过另一个 CMD 窗口连接数据库并对 root 用户重置密码: ```sql UPDATE mysql.user SET authentication_string='' WHERE user='root'; FLUSH PRIVILEGES; ``` 完成这些更改后记得重启 MySQL 服务使新设置生效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值