phpmyadmin がスキーマを表示しない

phpmyadmin がスキーマを表示しない

多数の MySQL データベースを持つサーバーがあります。最近、ルートとしてログインすると、一部のスキーマが表示されなくなりました。

ルートユーザー - これまで常に使用されていた

その特定のデータベースへのログインを使用すれば、それを表示できます。

直接ユーザー

このデータベースの「所有者」は root ですが、root に表示されない他のデータベースは他のユーザーが所有しています。

最近アクセスして作業したデータベースが消えているようですが、現在 5 つ以上のデータベースが表示されません。これはローカル キャッシュではなく、ルート ログインを使用しているユーザーも同じ問題を抱えています。

答え1

もしあなたの現在の使用者()と書かれていないroot@localhost場合は、ルート権限がないので、接続が許可されません。

接続後に実際にどのような権限を持っているかを確認するには、次のコマンドを実行します。

SHOW GRANTS;

特定のデータベースに接続すると、次の情報が表示されます。

  • そのデータベースのテーブル
  • そのデータベース専用のINFORMATION_SCHEMA内のメタデータ

例えば、buyspace_systdbに接続したとします。

出力はSHOW GRANTS;おそらく次のようになるだろう

GRANT USAGE ON *.* ...
GRANT ALL PRIVILEGES ON buyspace_systdb.* TO ...

ローカルサーバー内からログインする場合は、ユーザーはroot@localhost機能します。リモートからログインする場合は、root@localhost許可されません。ユーザー()として認証する現在の使用者()。この証明は、質問の最初の表示にあります。information_schema のみが表示されることに注意してください。1 つまたは 2 つのエントリを持つ information_schema.schemata を除いて、実質的に空になります。root@'%'に存在しmysql.user、 と同じ権限を持っている場合はroot@localhost、 のようなすべてを表示できますroot@localhost

MySQL には、悪循環を引き起こす認証方式があります。接続しようとしているユーザーが存在しない場合は、より曖昧なユーザー名 (ワイルドカードや限定的な権限を許可) を試します。私の DBA StackExchange の投稿を参照してください。MySQL エラー: ユーザー 'a'@'localhost' のアクセスが拒否されました (パスワードの使用: YES) 詳細については、こちらをご覧ください。

結論:root@localhostリモートから接続することはできません

関連情報