0
0

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 3 years have passed since last update.

MySQLユーザーの作成と権限追加(MySQL8.0)

Last updated at Posted at 2022-02-03

したいこと

  • 初期で作成されるroot(master)ユーザー以外に新規でユーザーを作成し、運用を分けたい。

How To

  1. CREATEステートメントでUSERを作成
  2. GRANTステートメントで権限を付与

の2ステップ。

GRANTステートメントで付与できる権限について

多すぎるので、公式リファレンスを参照。

基本構文

基本構文については以下の通り。

◾️ ユーザー作成

CREATE '{user名}'@'{host名}' IDENTIFIED BY '{password}';
  • user名とhost名の組み合わせにより、同じユーザー名であっても接続元のhostによって権限を変えることができる。

◾️ 権限付与

GRANT {付与したい権限名} ON {データベース名}.{テーブル名} TO 'user名'@'{host名}';
  • 付与したい権限名はカンマ区切りで複数指定可能。
  • データベース名やテーブル名は「*」によりワイルドカード指定が可能。

やってみる

◾️ 読み取り専用(カラムレベルのSELECT)権限を持ったユーザーの作成

ユーザーの作成〜権限付与。

CREATE USER 'readonly'@'%' IDENTIFIED BY 'readonly';
GRANT SELECT ON hogehoge.* TO 'readonly'@'%';

どのような権限が付与されたかどうかは SHOW GRANTS ステートメントで確認できます。

SHOW GRANTS FOR 'readonly'@'%';

以下のような結果が返ってきます。

# Grants for readonly@%
'GRANT USAGE ON *.* TO `readonly`@`%`'
'GRANT SELECT ON `hogehoge`.* TO `readonly`@`%`'
'GRANT USAGE ON *.* TO `readonly`@`%`'

とありますが、USAGEというのは何も権限がない状態のことらしいです。

なにも権限がない状態を与えた上で、

'GRANT SELECT ON `hogehoge`.* TO `readonly`@`%`'

により、SELECT権限が与えられていることを示しているみたいですね。

◾️ 全権限を持ったユーザーの作成

CREATE 'root'@'%' IDENTIFIED BY 'root';
GRANT ALL ON *.* TO 'root'@'%';
  • ALLで全権限付与になります。
  • *.* で意味合い的には{全てのデータベース}.{全てのテーブル}となるのでグローバルな権限を持てます。

◾️ 既存ユーザーから同様の権限をもったユーザーを作成したい場合

これは応用です。察しの良い方はお分かりかと思いますが、SHOW GRANTステートメントで対象ユーザーに権限を付与したときのGRANTステートメントの構文が返ってくるので、権限付与の際にその構文のTOで指定するユーザーを変更し、実行してやれば良いです。

# Grants for readonly@%
'GRANT USAGE ON *.* TO `readonly`@`%`'
'GRANT SELECT ON `hogehoge`.* TO `{user名を変更}`@`%`' // この構文をコピーして実行する

参考

https://dev.mysql.com/doc/refman/8.0/ja/grant.html

https://dev.mysql.com/doc/refman/8.0/ja/show-grants.html

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?