【MySQL】phpMyAdminでデータベースが見えない場合の対処法
症状
phpMyAdminでMySQLのデータベースエクスポートを実施しようと思い、ログインしたところ何故かinformation_schemaしか表示されませんでした。

ログインに使用したMySQLユーザは全権をGRANTしており、普段データベース接続しているときはすべてのデータべが見えている状態なので、なぜ??となりました。
基本からphp&MySQLを学びたいときは本がおすすめです。
調査
以下のSQLを実行し、ユーザ毎の権限を確認しました。
--データベース指定
USE mysql;
--ユーザ確認
SELECT user, host FROM user;
今回使用しているユーザを仮にuser01、MySQLサーバーのIPアドレスを192.168.1.1とすると以下のような結果となりました。
user | host |
---|---|
user01 | % |
root | 127.0.0.1 |
user01 | 192.168.1.% |
root | ::1 |
結果を見る限りhost単位でuser01を確認する必要がある気がありそうだったため、さらに以下のSQLでhost単位の権限付与状況を確認してみることに。
--host %に対する権限確認
SHOW GRANTS for 'user01'@'%'
--結果
GRANT USAGE ON *.* TO 'user01'@'%' IDENTIFIED BY PASSWORD 'xxxxxxx'
--host 192.168.1.%に対する権限確認
SHOW GRANTS for 'user01'@'192.168.1.%';
--結果
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で確認したところ、その他のデータベースも無事見えるようになっていました。