如何使用--skip-grant-tables启动MySQL?

Ste*_*ven 47 mysql privileges

我将root用户从我们的数据库中锁定.我需要将所有权限都返回给root用户.我有密码,我可以登录MySQL.但是root用户没有所有权限.

ton*_*and 41

我遇到了与这个问题的标题相同的问题,所以请其他任何人搜索这个问题,并希望在Windows上以'skip-grant-tables'模式启动MySql,这就是我所做的.

通过管理员工具,服务停止MySQL服务.

修改my.ini配置文件(假设默认路径)

C:\Program Files\MySQL\MySQL Server 5.5\my.ini
Run Code Online (Sandbox Code Playgroud)

或者对于MySQL版本> = 5.6

C:\ProgramData\MySQL\MySQL Server 5.6\my.ini 
Run Code Online (Sandbox Code Playgroud)

在SERVER SECTION中,在[mysqld]下,添加以下行:

skip-grant-tables
Run Code Online (Sandbox Code Playgroud)

所以你有

# SERVER SECTION
# ----------------------------------------------------------------------
#
# The following options will be read by the MySQL Server. Make sure that
# you have installed the server correctly (see above) so it reads this 
# file.
#
[mysqld]

skip-grant-tables
Run Code Online (Sandbox Code Playgroud)

再次启动服务,您应该能够在没有密码的情况下登录数据库.

  • my.ini文件的位置是`C:\ ProgramData\MySQL\MySQL Server 5.6`而不是`Program Files`文件夹 (3认同)
  • 我编辑了 /etc/my.cnf 并添加了 `[mysqld]`,然后在下一行输入了不带 `--` 的 `skip-grant-tables`,然后重启 MySQL 就可以了。 (2认同)

小智 34

如何重新控制MySQL中的root用户.

危险:危险的操作

此操作非常危险,它允许任何人在没有用户和密码的情况下无限制地连接到所有数据库.必须小心使用,必须尽快恢复以避免风险.

  • 对于MySQL 5.7(在Ubuntu上),我必须编辑的.cnf文件位于/etc/mysql/mysql.conf.d (3认同)
  • `service mysqld restart`错误 - `service mysql restart`是正确的 (2认同)

Arp*_*pit 7

在 Linux 系统上,您可以执行以下操作(其他操作系统应该类似)

检查mysql进程是否正在运行:

sudo service mysql status
Run Code Online (Sandbox Code Playgroud)

如果正在运行,则停止该进程:(确保关闭所有 mysql 工具)

sudo service mysql stop
Run Code Online (Sandbox Code Playgroud)

如果您遇到问题停止,请执行以下操作

搜索进程:ps aux | grep mysqld 杀死进程:kill -9 process_id

现在使用跳过授权以安全模式启动 mysql

sudo mysqld_safe --skip-grant-tables &
Run Code Online (Sandbox Code Playgroud)


Car*_*lea 6

经过尝试很多事情之后,这对我有用:

sudo mysql -u root
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'newpassword'; 
Run Code Online (Sandbox Code Playgroud)

因此,首先我们使用sudo以root身份登录mysql,而无需输入密码。然后,我们只更新root的密码。

之后,我重新启动mysqld

sudo service mysql restart
Run Code Online (Sandbox Code Playgroud)

newpassword登录的根!

  • 其他答案对我没有帮助,但你的方法有效。谢谢 (2认同)

小智 5

我在 Windows 10 中,使用 WAMP64 服务器。搜索了my.cnfmy.inimy.ini在发现C:\wamp64\bin\mariadb\mariadb10.2.14

按照同事的指示:

  1. 从 Wampserver 打开快速启动菜单,选择“停止所有服务”
  2. 在文本编辑器中打开my.ini,搜索[mysqld]
  3. 添加'skip-grant-tables'在该部分的末尾[mysqld](但在其中)
  4. 保存文件,保持编辑器打开
  5. 在 Wampserver 菜单中,选择“重新启动服务”。将会出现有关该skip-grant-tables选项的警告
  6. 在 Wampserver 菜单中选择 MySQL 打开提示符
  7. 它要求输入密码,只需按 Enter 键
  8. 粘贴命令ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'newpassword';
  9. 它必须报告操作成功(没有表受影响)
  10. my.ini文件中,删除该'skip-grant-tables'行,保存文件
  11. 在 WampServer 菜单中,再次选择“重新启动服务”

现在您可以使用新密码输入。感谢这里的所有答案。


lon*_*eck 0

如果这是一个Windows机器,最简单的方法就是停止服务器,将skip-grant-tables添加到mysql配置文件中,然后重新启动服务器。

解决权限问题后,请重复上述操作,但删除“skip-grant-tables”选项。

如果您不知道配置文件在哪里,请登录 mysql send SHOW VARIABLES LIKE '%config%',返回的其中一行将告诉您配置文件在哪里。