恐らくなのですが、多分こういう事だと思います。
MySQLは、接続するホストが違うと同じUserIDであっても別のユーザーとして認識され、操作権限も異なります。
質問内容が整合していない感じですが、何となく解読してみると、同じはずのアカウントにて
という事と解釈します。
この違いは何かというと、
- sshで接続して、mysqlコマンドでdbに入る場合、クライアントはlocalhostで接続している。
- phpMyAdminで接続している場合、クライアントはIPアドレスである(e.g. 201.193.75.xxx 等グローバルアドレス、あるいはローカルアドレス)
という事になります。
これについて、UserID が piyopiyo と仮定すると、MySQLには
といった、接続クライアント毎に異なるアカウントが作成されている事が多いです。
ややこしいところが、多くのシステム関連の場合、127.0.0.1はループバックアドレスなので、localhostと同義なのですが、MySQLの場合は別の扱いになります。
どう違うかというと、
- localhost = UNIXソケットでの接続
- 127.0.0.1 = TCP/IPでの接続
となります。
ターミナルでの接続で、
mysql -u piyopiyo -p
の形で接続すると、確かUNIXソケットを使っての接続になり、piyopiyo@localhost の接続になったと思います。
もし、TCP/IPで接続したい場合は
mysql -u piyopiyo -h 127.0.0.1 -p
のように host を明示すると piyopiyo@127.0.0.1 の接続になるはずです。
そんなわけで、挙動が違うのは接続しているアカウントが違うからなのだと思います。
####存在するアカウントの確認方法
root でログインして、以下で、どのようなアカウントが存在するか確認できます。
SQL
1SELECT user, host FROM mysql.user;
####権限の付与
やりたい事ができないアカウントについて、権限を付与する場合は以下です。
SQL
1GRANT ALL PRIVILEGES ON DB名.* TO 'piyopiyo'@'localhost';
2GRANT ALL PRIVILEGES ON DB名.* TO 'piyopiyo'@'201.193.75.xxx';
※ ALL PRIVILEGES は DB名.* に対する全ての操作権限を付与
※ DB名.* は、DB名というデータベースの全てのテーブルの意
こんな感じですので、まず、自分がどんなホストで接続しているのかを把握し、必要に応じて権限を与えると問題が解決するのではないかと思います。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。