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

时间:2009-11-10 14:34:39

标签: mysql privileges

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

11 个答案:

答案 0 :(得分:39)

我遇到了与这个问题的标题相同的问题,所以请其他人在谷歌上搜索这个问题并希望在Windows上以'skip-grant-tables'模式启动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 

在SERVER SECTION中,在[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

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

答案 1 :(得分:29)

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

危险:风险操作

  • 启动会话ssh(如果可能,使用root)。
  • 使用。

    编辑my.cnf文件
    sudo vi /etc/my.cnf
    
  • 在mysqld块中添加行。*

    skip-grant-tables
    
  • 保存并退出。

  • 重启MySQL服务。

    service mysql restart
    
  • 检查服务状态。

    service mysql status
    
  • 连接到mysql。

    mysql
    
  • 使用主数据库。

    use mysql;
    
  • 重新定义用户root密码。

    UPDATE user SET `authentication_string` = PASSWORD('myNuevoPassword') WHERE `User` = 'root'; 
    
  • 编辑文件my.cnf。

    sudo vi /etc/my.cnf
    
  • 擦除线。

    skip-grant-tables
    
  • 保存并退出。

  • 重启MySQL服务。

    service mysqld restart
    
  • 检查服务状态。

    service mysql status
    
  • 连接数据库。

    mysql -u root -p
    
  • 出现提示时输入新密码。

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

答案 2 :(得分:4)

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

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

sudo service mysql status

如果runnning然后停止进程: (确保关闭所有mysql工具)

sudo service mysql stop

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

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

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

sudo mysqld_safe --skip-grant-tables &

答案 3 :(得分:3)

尝试很多的东西后,这对我有用:

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已登录root!

答案 4 :(得分:2)

如果你使用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

注意:完成skip-grant-tables上的工作后,您应该恢复C:\ProgramData\MySQL\MySQL Server 5.6\my.ini的文件。

答案 5 :(得分:2)

如果您正在Apple MacBook OSX上运行,那么:

  1. 停止MySQL服务器(如果它已在运行)。
  2. 找到您的MySQL配置文件my.cnf。 (对我而言,它被放置了@ /Applications/XAMPP/xamppfiles/etc。你可以搜索一下 无法找到它。)
  3. 在任何文本编辑器中打开my.cnf文件。
  4. "skip-grant-tables"部分的末尾添加[mysqld](不带引号)并保存文件。
  5. 现在启动MySQL服务器。它将以skip-grant-tables选项开头。
  6. 现在做你想要的!!

    PS:完成任何你想要做的事情后,请从skip-grant-tables文件中删除my.cnf ELSE MySQL服务器将始终在没有访问权限的情况下运行。

答案 6 :(得分:2)

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

答案 7 :(得分:0)

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

一旦修复了权限问题,请重复上述步骤,但删除skip-grant-tables选项。

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

答案 8 :(得分:0)

编辑my.ini文件并添加skip-grant-tables并重新启动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 

答案 9 :(得分:0)

我在Windows 10中,使用WAMP64服务器。搜索了my.cnfmy.ini。在my.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菜单中,再次选择重新启动服务

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

答案 10 :(得分:0)

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

mysqld -skip-grant-tables