もがき系プログラマの日常

もがき系エンジニアの勉強したこと、日常のこと、気になっている技術、備忘録などを紹介するブログです。

Mysql8系のユーザー作成

はじめに

こんばんは。

完全な備忘録です。

環境構築する際に間違いなく、一からググっているので、備忘録のため残しておきます。

本題

1. ユーザー作成

現状のphpmysqlライブラリが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: 

終わりに

自分がよく使う権限設定をまとめました。

まじで毎回設定するたびにググってるんで、覚えないと...

現場からは以上です。