phpmyadmin não exibe o esquema

2

Eu tenho um servidor com um grande número de bancos de dados mysql. Recentemente alguns dos esquemas pararam de exibir quando logados como Root.

Seeuusarologinparaessebancodedadosespecífico,entãoeupossovê-lo.

O 'proprietário' deste banco de dados é o root, mas outros que não são visíveis para o root são de propriedade de outros.

Parece que bancos de dados que acessamos e trabalhamos recentemente desaparecem, mas agora existem mais de 5 que não são visíveis. Não é um cache local e qualquer pessoa que também use o login raiz tem o mesmo problema.

    
por TomFirth 17.04.2015 / 15:45

1 resposta

1

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

    
por 12.05.2015 / 16:47