Назад | Перейти на главную страницу

Добавление пользователя MySQL, когда у пользователей MySQL нет прав администратора?

Я работаю над установкой MySQL, в которой уже создан пользователь («admin»), но у этого пользователя нет пароля и никаких разрешений, поэтому я не могу создавать новых пользователей или даже сбрасывать пароль этого пользователя.

Я использую Ubuntu Server, и после просмотра файлов справки я все еще не могу найти способ добавить пользователя, когда единственный существующий пользователь не имеет разрешений. Я упустил что-то базовое? Есть ли способ добавить суперпользователя из командной строки перед переходом в командную строку MySQL?

Есть кое-что интересное, что нужно отметить в MySQL при использовании skip-grant-tables.

После перезапуска mysqld с помощью skip-grant-tables вы не сможете использовать команды 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

Как пользователь, у которого нет прав администратора, вы не можете добавить другого пользователя. Это нарушит всю цель аутентификации / авторизации.

Вы можете сбросить пароль root, выполнив шаг, описанный в этом ссылка на сайт.

Отключите любой доступ к порту MySQL, а затем запустите демон MySQL вручную, передав --skip-grant-tables чтобы отключить всю аутентификацию на сервере.