在没有 MySQL 用户具有管理员权限的情况下添加 MySQL 用户?

Mic*_*isy 2 mysql

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

我正在使用 Ubuntu Server,在查看帮助文件后,当唯一的现有用户没有权限时,我仍然找不到添加用户的方法。我错过了一些基本的东西吗?有没有办法在进入 MySQL 命令行之前从命令行添加超级用户?

Rol*_*DBA 10

在使用 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';
Run Code Online (Sandbox Code Playgroud)

然后重启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
;
Run Code Online (Sandbox Code Playgroud)

确保将每一列设置为“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
Run Code Online (Sandbox Code Playgroud)

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

service mysql restart
Run Code Online (Sandbox Code Playgroud)


Sam*_*eer 8

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

您可以按照此链接中概述的步骤重置 root 密码。