Как я могу работать с привилегиями root@localhost в MySQL?

Я пытаюсь выполнить оператор GRANT ALL:

GRANT ALL ON daisyrepository.* TO daisy@localhost IDENTIFIED BY 'password_here';

Я запустил этот оператор на самом сервере с помощью удаленного рабочего стола, используя:

  • PHPMyAdmin
  • MySQL Administrator
  • Клиент командной строки

Каждый раз, когда я запускаю этот оператор, я получаю следующую ошибку:

ERROR 1044 (42000): Access denied for user 'root'@'%' to database 'daisyrepository'

Немного информации о привилегиях:

корень @%

SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, REPLICATION SLAVE, REPLICATION CLIENT, EXECUTE 

корень @ локальный

ALL PRIVILEGES 

Если я правильно понимаю, несмотря на то, что я подключен к серверу, MySQL рассматривает мои заявления, как будто я пришел из удаленного места?

Редактирование # 1 Clafification: сервер, к которому я подключен, является тем, где MySQL также работает.

Редактирование #2 После входа в RDP я захожу в MySQL с помощью командной строки. Если я запускаю select current_user(), я получаю root@127.0.0.1. В файле my.ini также есть skip_name_resolve.

1 ответ

Решение

Похоже, вы всегда подключаетесь по TCP (а не по сокетам Unix в Linux или по именованным каналам в Windows). Поскольку в вашем ini-файле есть skip_name_resolve, сервер не возвращает DNS ip 127.0.0.1 обратно на localhost, поэтому пользователь, которого вы представляете как root@127.0.0.1, а не root@localhost.

Если вы можете, удалите skip_name_resolve из INI-файла и убедитесь, что Abe Petrillo упоминает, что у вас есть "127.0.0.1 localhost" в вашем файле hosts. Это должно позволить вам подключиться как root@localhost. Если вам нужно вернуть skip_name_resolve, убедитесь, что вы запустили,

GRANT ALL on *.* to 'root'@'127.0.0.1' identified by '$roots_password' WITH GRANT OPTION;

что должно позволить вам добавить skip_name_resolve обратно в ваш INI-файл.

Другие вопросы по тегам