MySQL PHP

【MySQL】phpMyAdminでデータベースが見えない場合の対処法

投稿日:2021年8月9日 更新日:

症状

phpMyAdminでMySQLのデータベースエクスポートを実施しようと思い、ログインしたところ何故かinformation_schemaしか表示されませんでした。

ログインに使用したMySQLユーザは全権をGRANTしており、普段データベース接続しているときはすべてのデータべが見えている状態なので、なぜ??となりました。

 

 

基本からphp&MySQLを学びたいときは本がおすすめです。

 

調査

以下のSQLを実行し、ユーザ毎の権限を確認しました。

--データベース指定
USE mysql;

--ユーザ確認
SELECT user, host FROM user;

今回使用しているユーザを仮にuser01、MySQLサーバーのIPアドレスを192.168.1.1とすると以下のような結果となりました。

userhost
user01%
root127.0.0.1
user01192.168.1.%
root::1

結果を見る限りhost単位でuser01を確認する必要がある気がしたため、さらに以下のSQLでhost単位の権限付与状況を確認してみることに。

SHOW GRANTS for 'user01'@'%';

--結果
GRANT USAGE ON *.* TO 'user01'@'%' IDENTIFIED BY PASSWORD 'xxxxxx'

SHOW GRANTS for 'user01'@'';

--結果
GRANT ALL PRIVILEGES ON *.* TO 'user01'@'192.168.1.%' IDENTIFIED BY PASSWORD 'xxxxxx'

ということで、どうやらホストのIP指定でしか全権付与がされていないという結果がでました。

原因

おそらく、最初にユーザ作成時にホスト指定して全権付与したのですが、普段データベース接続しているときはhost指定して接続しているので特に問題がないですが、phpMyAdminで接続する場合、phpMyAdminから見るとローカルホストでMySQLへ接続することになるので、リモート接続のGRANTだけでは不十分だったようです。

最初あまり気にしていなかったですが、phpMyAdminからもlocalhost接続として表示されていました。

対処

以下のSQLを実行しlocalhost接続の場合でも全権付与しました。

GRANT ALL PRIVILEGES ON *.* TO 'user01'@'%';

再度phpMyAdminで確認したところ、その他のデータベースも無事見えるようになっていました。

-MySQL, PHP

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

【MySQL】特定の文字で文字列を分割する

Contents1 概要2 環境3 準備4 SUBSTRINGとLOCATEの組み合わせで分割 概要 データベースにおいて、一つのカラム内に文字列が入っており、特定の文字列で分割したいケースがたまにあ …

PHPからMySQLのデータを取得する

Contents1 目的2 環境3 準備4 コード5 結果 目的 PHPからMySQLのデータを取得する方法についてメモします。これができるとjavascriptを使用し、web画面上にデータベースの …

Rundeck のデータベース設定(MySQL)

Contents1 目的2 環境3 MySQLのインストール4 RDB Datasourceの設定5 注意点 目的 ジョブ管理ツールのRundeckはデフォルトでH2 Databaseが組み込まれ、こ …

言語切り替え

カテゴリー