2020年4月のDBスペシャリストを受験することにしました。
データベーススペシャリスト試験(DB) ~ ビッグデータ時代に求められる、データ志向の担い手 ~
ということで今回はユーザ作成についてまとめていこうと思います。
環境
- MySQL 5.7
ユーザ作成
MySQLを使うにはユーザが必要です。
最初にrootユーザを作ると思うのですが、基本的にそのユーザはなんでもできるユーザなのでもしパスワードが知られてしまうと自分のDB内でやりたい放題されてしまいます。
それを防ぐためにrootユーザではないユーザを作成して使用することが大事になってきます。
MySQLのユーザ作成でできること
MySQLのユーザ作成ではどんなことができるのか、とまとめていきます。
パスワード設定
誰でもそのユーザを使えるようになったら困ります。なので特定の人だけがそのユーザを使えるようにユーザにはパスワードを設定できます。
CREATE USER ユーザ名 IDENTIFIED BY 'パスワード';
これを使って cat
というユーザを作っていきます。パスワードは `catcatcat`です。
CREATE USER cat IDENTIFIED BY 'catcatcat';
アクセス元IPアドレスの指定
ユーザがアクセスできる元のIPアドレスを指定することができます。
CREATE USER 'ユーザ名'@'IPアドレス' IDENTIFIED BY パスワード;
dogというユーザをIPアドレス 192.168.10.1というIPアドレスからのみ使用可能にしてみます。
CREATE USER 'dog'@'192.168.10.1' IDENTIFIED BY 'dogdogdog';
確認してみましょう。
> SELECT user, host FROM mysql.user WHERE user = 'dog';
+------+--------------+
| user | host |
+------+--------------+
| dog | 192.168.10.1 |
+------+--------------+
1 row in set (0.00 sec)
パスワードの有効期限設定
ユーザのパスワードを一定期間で無効にするという設定ができます。
CREATE USER ユーザ名 IDENTIFIED BY 'パスワード' PASSWORD EXPIRE INTERVAL N DAY;
日単位で設定することができます。
では実際に cow というユーザのパスワードの有効期限を1日に設定してみます。
CREATE USER cow IDENTIFIED BY 'cowcow' PASSWORD EXPIRE INTERVAL 1 DAY;
確認してみましょう。
> SELECT user, password_lifetime FROM mysql.user WHERE user = 'cow';
+------+-------------------+
| user | password_lifetime |
+------+-------------------+
| cow | 1 |
+------+-------------------+
1 row in set (0.00 sec)
この設定を行うことで定期的にパスワードの再設定を促すことができます。ちなみにパスワードの再設定は ALTER文を使用します。
ここで紹介したものの他にもできることはあると思うので、見つけたら追記していきたいと思います。
最後までお読みいただきありがとうございました。