はじめに
こんばんは。
完全な備忘録です。
環境構築する際に間違いなく、一からググっているので、備忘録のため残しておきます。
本題
1. ユーザー作成
現状のphpのmysqlライブラリがmysql8系デフォルト認証方式の caching_sha2_password
に対応していないので、必ずmysql_native_password
の認証プラグインを指定する
CREATE USER 'ユーザー名'@'ホスト名' IDENTIFIED WITH mysql_native_password BY 'パスワード';
2. 権限設定
① データベースの全体制御
GRANT ALL PRIVILEGES ON データベース名.* TO 'ユーザー名'@'ホスト名';
② 参照のみ
GRANT SELECT ON データベース名.* TO 'ユーザー名'@'ホスト名';
③ テーブル単位での制御
GRANT ALL ON データベース名.テーブル名 TO 'ユーザー名'@'ホスト名';
3. 確認
① DBの権限設定
mysql> select * from mysql.db\G *************************** 1. row *************************** Host: localhost Db: example_db User: kojirock Select_priv: Y Insert_priv: Y Update_priv: Y Delete_priv: Y Create_priv: Y Drop_priv: Y Grant_priv: N References_priv: Y Index_priv: Y Alter_priv: Y Create_tmp_table_priv: Y Lock_tables_priv: Y Create_view_priv: Y Show_view_priv: Y Create_routine_priv: Y Alter_routine_priv: Y Execute_priv: Y Event_priv: Y Trigger_priv: Y *************************** 2. row *************************** Host: localhost Db: example_db User: select_user Select_priv: Y Insert_priv: N Update_priv: N Delete_priv: N Create_priv: N Drop_priv: N Grant_priv: N References_priv: N Index_priv: N Alter_priv: N Create_tmp_table_priv: N Lock_tables_priv: N Create_view_priv: N Show_view_priv: N Create_routine_priv: N Alter_routine_priv: N Execute_priv: N Event_priv: N Trigger_priv: N 2 rows in set (0.00 sec)
② テーブルの権限設定
mysql> select * from tables_priv\G *************************** 1. row *************************** Host: localhost Db: example_db User: payment_user Table_name: payment_logs Grantor: root@localhost Timestamp: 0000-00-00 00:00:00 Table_priv: Select,Insert,Update,Delete,Create,Drop,References,Index,Alter,Create View,Show view,Trigger Column_priv:
終わりに
自分がよく使う権限設定をまとめました。
まじで毎回設定するたびにググってるんで、覚えないと...
現場からは以上です。