mysqlでSHOW DATABASESコマンドが効かないエラーの解決

エラーの内容

システム構築の勉強の過程で
mac book airのローカルにLAMP環境を構築中、
ターミナルからmysqlにログインし
SHOW DATABASES;コマンドを叩いたところ以下のエラーに遭遇しました。

ERROR 1356 (HY000): View 'information_schema.SCHEMATA' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them

解決方法

データベースの扱いに慣れていないこともあり
解決までに時間がかかってしまいましたが
自分の場合最終的には以下の2つのコマンドを叩くことで解決しました。

mysql > update user set Select_priv = 'Y' where User = 'mysql.infoschema';
mysql > flush privileges

やったこととしては
mysqlデータベースのuserテーブルの中にある
mysql.infoschemaレコードのSelect_priv カラムの値をNからYに変更し、
その後権限設定をリフレッシュしただけです。

そもそもなぜこのような手順が必要になったかという原因については
設定の最初の方で自分が一度rootユーザーを削除して、
その後再設定していたことが関係しているように思われます。(この辺もちゃんと整理しておかなくては…汗)

ちなみにこの解決法は自分で閃いたわけではなく、
元は下記の中国のQAサイトで見つけたものです。
https://blog.csdn.net/weixin_36931308/article/details/103767758

謝謝!

Wordpressサイトの
ご相談・ご依頼
承ります
ご相談は無料!詳しくはこちら >