Если ваш 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
из удаленного местоположения