Eu tenho um servidor com um grande número de bancos de dados MySQL. Recentemente, alguns dos esquemas pararam de ser exibidos quando conectado como Root.
Se eu usar o login para esse banco de dados específico, poderei vê-lo.
O 'proprietário' deste banco de dados é root, mas outros que também não são visíveis para root são de propriedade de terceiros.
Parece que bancos de dados que acessamos e nos quais trabalhamos recentemente desapareceram, mas agora há mais de 5 que não estão visíveis. Não é um cache local e qualquer pessoa que também use o login root tem o mesmo problema.
Responder1
Se seuUSUÁRIO ATUAL()não diz root@localhost
, então você não tem privilégios de root e não tem permissão para se conectar como tal.
Para ver quais privilégios reais você tem após se conectar, execute este
SHOW GRANTS;
Ao se conectar a um banco de dados específico, você poderá ver
- as tabelas desse banco de dados
- metadados no INFORMATION_SCHEMA apenas para esse banco de dados
Digamos, por exemplo, que você se conectou ao buyspace_systdb
A saída deSHOW GRANTS;
provavelmente apareceria algo assim
GRANT USAGE ON *.* ...
GRANT ALL PRIVILEGES ON buyspace_systdb.* TO ...
O usuário root@localhost
funcionaria se você fizesse login nesse servidor local. Se você estiver fazendo login remotamente, root@localhost
não permitiriaDO UTILIZADOR()autenticar comoUSUÁRIO ATUAL(). A prova disso está na primeira exibição da sua pergunta. Observe que você só pode ver information_schema. Ele ficará virtualmente vazio, com exceção de information_schema.schemata que teria 1 ou 2 entradas. Se root@'%'
existisse 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ê está tentando se conectar não existir, ele tentará nomes de usuário mais vagos (permitindo caracteres curinga ou privilégios limitados). Veja minha postagem sobre DBA StackExchangeErro MySQL: Acesso negado ao usuário 'a'@'localhost' (usando senha: YES) para obter mais detalhes sobre isso.
Conclusão: Você não pode se conectar a root@localhost
partir de um local remoto