如何启动 MySQL ——跳过授予表?

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

306509 次浏览

如果这是一个 Windows 框,那么最简单的做法就是停止服务器,向 mysql 配置文件添加跳过授权表,然后重新启动服务器。

一旦修复了权限问题,请重复上述操作,但删除“跳过授权表”选项。

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

我的问题和这个问题的题目是一样的,所以如果有人在谷歌上搜索这个问题,想要在 Windows 上以“跳过授予表”模式启动 MySql,我就这么做了。

通过管理员工具、服务停止 MySQL 服务。

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

C:\Program Files\MySQL\MySQL Server 5.5\my.ini

或 MySQL 版本 > = 5.6

C:\ProgramData\MySQL\MySQL Server 5.6\my.ini

在服务器部分,在[ mysqld ]下面,添加以下行:

skip-grant-tables

这样你就有了

# 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

重新启动服务,您应该能够在没有密码的情况下登录到数据库中。

如果您使用 mysql 5.6服务器并且 C:\Program Files\MySQL\MySQL Server 5.6\my.ini有问题:

你应该去 C:\ProgramData\MySQL\MySQL Server 5.6\my.ini

您应该添加 skip-grant-tables,然后就不需要密码了。

# 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.
#
# server_type=3
[mysqld]
skip-grant-tables

注: 完成 ABC0的工作后,应该恢复 C:\ProgramData\MySQL\MySQL Server 5.6\my.ini的文件。

如果你在 Apple MacBook OSX上跑步,那么:

  1. 停止 MySQL 服务器(如果它已经在运行)。
  2. 找到您的 MySQL 配置文件 my.cnf 你可以搜索 找不到)。
  3. 在任何文本编辑器中打开 my.cnf文件。
  4. [mysqld]节的末尾添加 "skip-grant-tables"(不带引号)并保存文件。
  5. 现在启动 MySQL 服务器,它将以 skip-grant-tables选项开始。

现在就去做你想做的! !

PS: 请从 my.cnf文件中删除 skip-grant-tables,一旦您完成任何您想做的 ELSE MySQL 服务器将始终运行无访问授权。

如何在 MySQL 中重新获得 root 用户的控制权。

危险: 危险行动

  • 启动 ssh 会话(可能的话使用 root)。
  • 编辑 my.cnf文件。

    sudo vi /etc/my.cnf
    
  • Add line to mysqld block.*

    skip-grant-tables
    
  • Save and exit.

  • Restart MySQL service.

    service mysql restart
    
  • Check service status.

    service mysql status
    
  • Connect to mysql.

    mysql
    
  • Using main database.

    use mysql;
    
  • Redefine user root password.

    UPDATE user SET `authentication_string` = PASSWORD('myNuevoPassword') WHERE `User` = 'root';
    
  • Edit file my.cnf.

    sudo vi /etc/my.cnf
    
  • Erase line.

    skip-grant-tables
    
  • Save and exit.

  • Restart MySQL service.

    service mysqld restart
    
  • Check service status.

    service mysql status
    
  • Connect to database.

    mysql -u root -p
    
  • Type new password when prompted.

This action is very dangerous, it allows anyone to connect to all databases with no restriction without a user and password. It must be used carefully and must be reverted quickly to avoid risks.

使用以下命令(注意“ d”) : mysqld --skip-grant-tables

编辑 my.ini 文件,添加跳过授权表并重新启动 mysql 服务器:

[mysqld]
port= 3306
socket = "C:/xampp/mysql/mysql.sock"
basedir = "C:/xampp/mysql"
tmpdir = "C:/xampp/tmp"
datadir = "C:/xampp/mysql/data"
pid_file = "mysql.pid"
# enable-named-pipe
key_buffer = 16M
max_allowed_packet = 1M
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
log_error = "mysql_error.log"
skip-grant-tables
# Change here for bind listening
# bind-address="127.0.0.1"
# bind-address = ::1

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

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

sudo service mysql status

如果正在运行,那么停止这个过程: (确保关闭所有 mysql 工具)

sudo service mysql stop

如果你有问题停止,然后做以下

搜索进程: ps aux | grep mysqld 终止进程: kill -9 process_id

现在以安全模式启动 mysql,并跳过 Grant

sudo mysqld_safe --skip-grant-tables &

在尝试了 很多的各种方法之后,下面的方法对我很有效:

sudo mysql -u root
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'newpassword';

首先,我们使用 sudo 作为 root 用户登录 mysql,而不需要密码。那我们就更新 root 用户的密码。

之后,我重启了 mysqld:

sudo service mysql restart

newpassword登录根!

我在视窗10,使用 WAMP64服务器。搜索 my.cnfmy.ini。发现 my.iniC:\wamp64\bin\mariadb\mariadb10.2.14

按照同事的指示:

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

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

请从控制台运行以下命令,以便在从命令提示符启动 mysql 数据库时跳过用户表验证

mysqld -skip-grant-tables

我知道这个问题已经很老了,但是也许我的配置可以帮助到某些人:

sed -i 's/^#skip-grant-tables.*/skip-grant-tables/g' /etc/my.cnf


service mysql restart


mysql -e "UPDATE mysql.user SET authentication_string='' WHERE user='root';"


sed -i 's/^skip-grant-tables.*/#skip-grant-tables/g' /etc/my.cnf

服务 mysql 重新启动

这是如何在 Ubuntu 20.4上做到这一点。这对我很有用。
转到 /etc/mysql/mysql.conf.d/
你可以写入终端
cd /etc/mysql/mysql.conf.d/,
然后您需要编辑的文件,这是名为 mysqld.cnf
在我的电脑上,该文件是一个只读文件,所以我需要首先更改权限。
我写了 sudo chmod +rw mysqld.cnf在终端。
之后,我通过键入 sudo gedit mysqld.cnf来编辑该文件 在航站楼里。
在该文件中,您将在[ mysqld ] add 下面的某处看到[ mysqld ] 在新行中跳过 Grant-tables,使其看起来像 < br >

[mysqld]
skip-grant-tables

通过在终端中写入 sudo service mysql restart来重新启动 mysql 服务。
如果您的服务器没有运行,那么在终端中写入 sudo service mysql start
另一件值得一提的事情是
我还有另一个问题,我用几乎完全相同的方式解决了。
我的服务器在3306端口没有监听,
所以我还必须在那个 mysqld.cnf文件中添加 port = 3306。
现在我知道了

[mysqld]
skip-grant-tables
port = 3306

在 mysqld.cnf 文件中。