2

У меня есть сервер с большим количеством баз данных MySQL. Недавно некоторые из схем перестали отображаться при входе в систему как Root.

пользователь root - до сих пор всегда используется

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

прямой пользователь

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

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

1 ответ1

1

Если ваш CURRENT_USER() не говорит root@localhost , то у вас нет привилегий root и вы не можете подключаться как таковые.

Чтобы увидеть, какие реальные привилегии у вас есть после подключения, запустите

SHOW GRANTS;

Когда вы подключаетесь к определенной базе данных, вы должны видеть

  • таблицы этой базы данных
  • метаданные в INFORMATION_SCHEMA только для этой базы данных

Допустим, вы подключились к buyspace_systdb

Выход из SHOW GRANTS; скорее всего, появится что-то вроде этого

GRANT USAGE ON *.* ...
GRANT ALL PRIVILEGES ON buyspace_systdb.* TO ...

Пользователь root@localhost будет работать, если вы войдете в систему с этого локального сервера. Если вы входите удаленно, root@localhost не позволит USER() аутентифицироваться как CURRENT_USER(). Доказательство этого в первом отображении вашего вопроса. Обратите внимание, что вы можете видеть только information_schema. Он будет практически пуст, за исключением information_schema.schemata, в котором будет 1 или 2 записи. Если бы root@'%' существовал в mysql.user и имел те же привилегии, что и root@localhost , то ему было бы разрешено видеть все, например, root@localhost .

MySQL имеет схему аутентификации, которая имеет эффект нисходящей спирали. Если пользователь, с которым вы пытаетесь соединиться, не существует, он попытается использовать более расплывчатые имена пользователей (с учетом подстановочных знаков или ограниченных привилегий). См. Мой пост DBA StackExchange Ошибка MySQL: Доступ запрещен для пользователя 'a' @ 'localhost' (используя пароль: YES) для получения дополнительной информации об этом.

Итог: вы не можете подключиться как root@localhost из удаленного местоположения

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .