Se o seu CURRENT_USER () não diz root@localhost
, então você não tem privilégios de root e não pode se conectar como tal.
Para ver quais privilégios reais você tem após se conectar, execute este
SHOW GRANTS;
Quando você se conecta a um banco de dados específico, deve conseguir ver
- as tabelas desse banco de dados
- metadados no INFORMATION_SCHEMA apenas para esse banco de dados
Digamos, por exemplo, que você conectou a buyspace_systdb
A saída de SHOW GRANTS;
provavelmente apareceria assim
GRANT USAGE ON *.* ...
GRANT ALL PRIVILEGES ON buyspace_systdb.* TO ...
O usuário root@localhost
funcionaria se você fizer login a partir desse servidor local. Se você estiver fazendo login remotamente, root@localhost
não permitiria USER () autenticar como CURRENT_USER () . A prova disso está na primeira exibição da sua pergunta. Note que você só pode ver o information_schema. Ele virtualmente vazio com a exceção de information_schema.schemata que teria 1 ou 2 entradas. Se root@'%'
existisse em mysql.user
e tivesse os mesmos privilégios que root@localhost
, então seria permitido ver tudo como root@localhost
.
O MySQL possui um esquema de autenticação que tem um efeito espiral descendente. Se o usuário com o qual você tentou se conectar não existir, ele tentará nomes de usuário mais vagos (permitindo curingas ou privilégios limitados). Veja meu post do DBA StackExchange error: Acesso negado para o usuário 'a' @ 'localhost' (usando a senha: YES) para mais detalhes sobre isso.
Resultado final : você não pode se conectar como root@localhost
de um local remoto