Учетная запись root не работает в MySQL - PullRequest
0 голосов
/ 08 октября 2011

Я вошел в систему как пользователь root в моей базе данных MySQL. Я пытаюсь запустить следующие команды:



mysql> GRANT ALL ON *.* TO 'root'@'%'
    ->   IDENTIFIED BY '[password]'
    ->   WITH GRANT OPTION;
ERROR 1045 (28000): Access denied for user 'root'@'%' (using password: YES)
mysql>


Я получаю следующую ошибку:

ERROR 1045 (28000): Access denied for user 'root'@'%' (using password: YES)

Я предполагаю, что мой пользователь root не настроен правильно. Есть идеи?

Редактировать


mysql> show grants for root
    -> ;
+-----------------------------------------------------------------------------------------------------+
| Grants for root@%                                                                                   |
+-----------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'root'@'%' IDENTIFIED BY PASSWORD '*738393F115A47ACE272D98F4719B8491A2B8296F' |
| GRANT ALL PRIVILEGES ON `sometable`.* TO 'root'@'%' WITH GRANT OPTION                               |
| GRANT ALL PRIVILEGES ON `Test`.* TO 'root'@'%' WITH GRANT OPTION                                    |
+-----------------------------------------------------------------------------------------------------+
3 rows in set (0.00 sec)


Ответы [ 2 ]

3 голосов
/ 08 октября 2011

Вы можете войти в базу данных с учетной записью с именем root, но учетная запись, в которой вы находитесь, не имеет правильных привилегий.

mysql> select user();

И добавьте:

mysql> select * from mysql.user\G

Ищите столбцы пользователя и хоста, точно совпадающие с выходными данными. Ищите grant_priv , и оно должно сказать Y . Скорее всего, есть дополнительные корневые учетные записи без grant_priv.

mysql> select * from mysql.user\G
*************************** 1. row ***************************
                 Host: localhost
                 User: root
             Password: xxxxxxxxxxxxxxx
          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
             ssl_type: 
           ssl_cipher: 
          x509_issuer: 
         x509_subject: 
        max_questions: 0
          max_updates: 0
      max_connections: 0
 max_user_connections: 0
0 голосов
/ 08 октября 2011

Когда я ввожу команду select * from mysql.user \ G, я получаю: ERROR 1142 (42000): команда SELECT запрещена пользователю 'root' @ 'localhost' для таблицы 'user' ERROR: нет запросауказано

Это означает, что вы не вошли как 'root'@'%'.Вы вошли как 'root' @ 'localhost', это два разных пользователя.Если вы запустите SELECT USER();, как упоминалось выше, скорее всего, вы увидите 'root'@'localhost'.

Если вы вошли как 'root'@'localhost', вы входите через локальный сокет.Если вы войдете через TCP-соединение, вы получите доступ как 'root'@'%', который затем предоставит вам доступ к изменениям на основе результатов, которые вы перечислили изначально.Для этого войдите с помощью:

mysql -u $user -p $pass -h 127.0.0.1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...