phpMyAdmin で使うデータベースユーザは権限を適切に調整した管理ユーザであるべきですが、その管理ユーザでストアドプロシージャやストアドファンクションの編集ができないことがあります。
環境
- phpMyAdmin 4.9.5deb2
- MariaDB 10.3.34-MariaDB-0ubuntu0.20.04.1 - Ubuntu 20.04
- phpMyAdmin - MariaDB接続: Localhost via UNIX socket
- Apache/2.4.41 (Ubuntu)
症状例
「テストデータベース」中で「tomorrow」と「明日」のストアドプロシージャがあります。
- tomorrow
- phpMyAdmin で作成
- 明日
- root アカウントで MySQL クライアントで作成
中身は同じですが、「tomorrow」では編集実行ができますが「明日」は編集実行ができません。
内部を表示しようとしても、以下のエラーが表示されます。
要求処理中でのエラー: データベース「
テストデータベース
」で「明日
」のルーチンはありません。このルーチンを編集する為に必要な権限がない可能性があります。
解決
root アカウントでログオンします。
なお、MySQL クライアントにおいて sudo しないとログオンできない設定にしていた場合は、以下の
「sudo 無しで root ユーザでアクセスできるようにする」
https://qiita.com/nanbuwks/items/c98c51744bd0f72a7087#sudo-%E7%84%A1%E3%81%97%E3%81%A7-root-%E3%83%A6%E3%83%BC%E3%82%B6%E3%81%A7%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%81%A7%E3%81%8D%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%99%E3%82%8B
の項目に沿って設定を変更します。
root アカウントだと 編集や実行ができるようになっています。
「編集」で「定義者」を変更します。
root@localhost から、 phpMyAdmin で利用するユーザに変更します。