当没有 MySQL 用户具有管理员权限时,添加 MySQL 用户?

当没有 MySQL 用户具有管理员权限时,添加 MySQL 用户?

我正在安装 MySQL,其中已经创建了一个用户(“admin”),但是该用户没有密码,也没有任何权限,因此我无法创建新用户,甚至无法重置该用户的密码。

我正在使用 Ubuntu Server,在查看帮助文件后,我仍然找不到在唯一现有用户没有权限的情况下添加用户的方法。我是否遗漏了一些基本知识?有没有办法在进入 MySQL 命令行之前从命令行添加超级用户?

答案1

作为没有管理员权限的用户,您无法添加其他用户。这将破坏身份验证/授权的整个目的。

您可以按照此处概述的步骤重置 root 密码关联

答案2

在使用 skip-grant-tables 时,MySQL 有一些有趣的事情需要注意。

一旦使用 skip-grant-tables 重新启动 mysqld,就不能使用 GRANT 和 REVOKE 命令。

选项 1)更新 root@localhost 的密码;

你可以这样做:

UPDATE mysql.user SET password=PASSWORD('whateverpasswordyouwant') WHERE user='root' and host='localhost';

然后重新启动 mysqld。

选项 2) 您可以直接在 mysql.user 中插入一条记录。如果您想为自己建立一个名为超级用户的新用户,则必须执行以下操作(这适用于 MySQL 5.5):

INSERT INTO mysql.user SET
                  Host = 'localhost',
                  User = 'superuser',
              Password = PASSWORD('whateverpasswordyouwant'),
           Select_priv = 'Y',
           Insert_priv = 'Y',
           Update_priv = 'Y',
           Delete_priv = 'Y',
           Create_priv = 'Y',
             Drop_priv = 'Y',
           Reload_priv = 'Y',
         Shutdown_priv = 'Y',
          Process_priv = 'Y',
             File_priv = 'Y',
            Grant_priv = 'Y',
       References_priv = 'Y',
            Index_priv = 'Y',
            Alter_priv = 'Y',
          Show_db_priv = 'Y',
            Super_priv = 'Y',
 Create_tmp_table_priv = 'Y',
      Lock_tables_priv = 'Y',
          Execute_priv = 'Y',
       Repl_slave_priv = 'Y',
      Repl_client_priv = 'Y',
      Create_view_priv = 'Y',
        Show_view_priv = 'Y',
   Create_routine_priv = 'Y',
    Alter_routine_priv = 'Y',
      Create_user_priv = 'Y',
            Event_priv = 'Y',
          Trigger_priv = 'Y',
Create_tablespace_priv = 'Y',
              ssl_type = '',
              ssl_cipher = '',
             x509_issuer = '',
            x509_subject = '',
           max_questions = 0,
             max_updates = 0,
         max_connections = 1000000,
    max_user_connections = 1000000
;

确保将每一列设置为“Y”,因为 MySQL 4.x、5.0、5.1、5.5 在 mysql.user 中具有不同的权限。

关于使用 skip-grant-tables 的另一个警告:当您用此启动 mysqld 时,每个人及其祖母都可以无需身份验证登录。您应该像这样启动 mysql:

service mysql restart --skip-grant-tables --skip-networking

这将禁用 TCP/IP,这样就没有人可以潜入数据库了。完成后,只需执行以下操作:

service mysql restart

答案3

禁用对 MySQL 端口的所有访问,然后手动启动 MySQL 守护程序--skip-grant-tables以禁用服务器上的所有身份验证。

相关内容