У меня есть сервер с большим количеством баз данных mysql. Недавно некоторые схемы перестали отображаться при входе в систему как Root.
Если я использую логин для этой конкретной базы данных, то я смогу ее увидеть.
«Владельцем» этой базы данных является пользователь root, но другие базы данных, которые также не видны пользователю root, принадлежат другим лицам.
Похоже, что базы данных, к которым мы недавно обращались и работали, исчезают, но теперь их не видно больше 5. Это не локальный кэш, и у любого, кто также использует вход root, та же проблема.
решение1
Если вашТЕКУЩИЙ ПОЛЬЗОВАТЕЛЬ()не сказано 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
не позволитПОЛЬЗОВАТЕЛЬ()для аутентификации какТЕКУЩИЙ ПОЛЬЗОВАТЕЛЬ(). Доказательство этого в первом отображении в вашем вопросе. Обратите внимание, что вы можете видеть только information_schema. Он будет фактически пустым, за исключением information_schema.schemata, который будет иметь 1 или 2 записи. Если бы root@'%'
существовал в mysql.user
и имел те же привилегии, что и root@localhost
, то ему было бы разрешено видеть все, как root@localhost
.
MySQL имеет схему аутентификации, которая имеет эффект нисходящей спирали. Если пользователь, с которым вы пытаетесь соединиться, не существует, он попробует использовать более неопределенные имена пользователей (с учетом подстановочных знаков или ограниченных привилегий). См. мой пост DBA StackExchangeОшибка MySQL: Доступ запрещен для пользователя 'a'@'localhost' (использован пароль: YES) для получения более подробной информации по этому вопросу.
Нижняя граница: Вы не можете подключиться root@localhost
из удаленного местоположения