1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

MySQL ユーザー作成 → 権限付与

Last updated at Posted at 2022-01-01

##はじめに
DB接続ユーザーの権限周りについて基本的な操作をまとめました。
MySQL8の環境になります。

ユーザー作成 ~ 権限の付与

ユーザーを確認する

.sql
SELECT user, host FROM mysql.user;

スクリーンショット 2021-12-31 18.22.37.png
このコマンドでuse名rhost名を確認することができる。SELECT *のようにアスタリスクで指定しても問題ないが、無駄に多くのカラムが表示されてしまうため、必要なuserとhostに絞って表示している。

新しいユーザーを作成する

.sql
CREATE USER 'userhoge'@'localhost';

スクリーンショット 2021-12-31 18.23.56.png
CREATE USERによって、新たにuserhogeというユーザーが作成された。

作成したユーザーの権限を確認する

.sql
SHOW GRANTS FOR userhoge@'localhost';

権限確認.png

SHOW GRANTS FORによって先ほど作成したユーザーであるuserhogeに付与されている権限・ユーザー名・ホストとレベルを確認できる。ちなみにUSAGEは権限無しという意味になる。

作成したユーザーに権限(CREATE権限)を付与する

.sql
GRANT CREATE on *.* to userhoge@localhost;

権限作成.png
作成済みのuserhogeというユーザーにGRANT CREATEを使って権限を付与した。先ほどはUSAGEだった権限がCREATEに更新されている。CREATEは「データベースおよびテーブルの作成ができる権限」である。

GRANTで付与できる権限は主に
ALL:すべての権限(GRANT OPTION および PROXY を除く)
SELECT, UPDATE, INSERT, DELETE:よくある基本的な操作のやつ
USAGE:権限無し

などがある。その他や詳細については公式を確認↓

権限のレベル

権限のレベルは4種類ある。名前の通りではあるが、グローバル>データベース>テーブル>カラムの順に影響範囲が小さくなっていく。

グローバルレベル

.sql
GRANT 権限 ON *.* TO userhoge;

データベースレベル

.sql
GRANT 権限 ON db_name.* TO userhoge;

テーブルレベル

.sql
GRANT 権限 ON db_name.table_name TO userhoge;

カラムレベル

.sql
GRANT 権限  (カラム名) ON db_name.table_name TO userhoge;
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?