IT Learning

実践形式でITのお勉強

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単位の権限付与状況を確認してみることに。

--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で確認したところ、その他のデータベースも無事見えるようになっていました。

Related

-MySQL, PHP

執筆者:


comment

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