Подтвердить что ты не робот

ОШИБКА 1044 (42000): доступ запрещен для "root" со всеми привилегиями

У меня странная ошибка. Я зарегистрирован в локальном Mysql как root через командную строку. После создания базы данных:

create database some_db;

Затем предоставление прав некоторым пользователям:

grant all privileges on some_db.* to [email protected]'localhost' identified by 'password';

Это дает ошибку:

ERROR 1044 (42000): Access denied for user 'root'@'localhost' to database 'some_db'

Разрешения для root (show grants;) показывают:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '*8919C53DC7A4DFBF3F8584382E96463583EB7FDA' 

Я также убедился, что я зарегистрирован как root:

select current_user();

И это подтверждает, что я зарегистрирован как "root" @ "localhost"

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

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

select host, user from mysql.user;

Некоторые пользователи, которых я еще не добавил, но не отображаются:

 MY_COMPuTER_name.local |       ''
 MY_COMPuTER_name.local |     root

Я попытался удалить этих пользователей

drop user 'root'@'MY_COMPuTER_name.local';
drop user ''@'MY_COMPuTER_name.local';

Однако, пока он заявляет, что запрос выполняется успешно, пользователи не отбрасываются даже после привилегий flush. Почему я не могу удалить пользователей? Любая помощь очень удобна

4b9b3361

Ответ 1

Во-первых, определите пользователя, с которым вы вошли в систему, как:

 select user();
 select current_user();

Результат для первой команды - это то, что вы пытались войти в систему, а второй - это то, на что вы действительно связаны. Убедитесь, что вы вошли в систему как [email protected] в mysql.

Grant_priv до [email protected]. Вот как вы можете проверить.

mysql> SELECT host,user,password,Grant_priv,Super_priv FROM mysql.user;
+-----------+------------------+-------------------------------------------+------------+------------+
| host      | user             | password                                  | Grant_priv | Super_priv |
+-----------+------------------+-------------------------------------------+------------+------------+
| localhost | root             | ***************************************** | N          | Y          |
| localhost | debian-sys-maint | ***************************************** | Y          | Y          |
| localhost | staging          | ***************************************** | N          | N          |
+-----------+------------------+-------------------------------------------+------------+------------+

Вы можете видеть, что для Grant_priv установлено значение N для root @localhost. Это должно быть Y. Ниже описано, как это сделать:

UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';
FLUSH PRIVILEGES;
GRANT ALL ON *.* TO 'root'@'localhost';

Я зашел обратно, все было в порядке.

Ответ 2

Если вы получите сообщение об ошибке 1044 (42000) при попытке выполнить команды SQL в MySQL (который установлен на сервере XAMPP), то вот решение:

  • Закройте командную строку MySQL.

  • Откройте команду cmd (из меню "Пуск" → запустить → cmd), которая отобразит: C:\Users\User > _

  • Перейдите в MySQL.exe, введя следующие команды:

C:\Users\User>cd\ C:\>cd xampp C:\xampp>cd mysql C:\xxampp\mysql>cd bin C:\xampp\mysql\bin>mysql -u root

  • Теперь попробуйте создать новую базу данных, набрав:

    mysql> create database employee;
    

    если он показывает:

    Query OK, 1 row affected (0.00 sec)
    mysql>
    

    Тогда поздравляю! Вы хорошо пойдете...

Ответ 3

Причина, по которой я не мог удалить некоторых пользователей с помощью оператора "drop", был в Mysql http://bugs.mysql.com/bug.php?id=62255 с именем хоста содержащие буквы верхнего регистра. Решение выполнило следующий запрос:

DELETE FROM mysql.user where host='Some_Host_With_UpperCase_Letters';

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