次に、ユーザ watashi をポスグレに登録する。
ユーザを追加したり削除したりするコマンドがある。
ユーザ登録は createuser で、削除は dropuser なんやけど、
これらはポスグレの管理ユーザ postgres になって実行するようになっとる。コマンドだから一発楽チンかな?
他にも SQL コマンドでユーザ管理ができる。ここでは SQL コマンドを使ってみる。
ユーザを追加する SQL コマンドは CREATE USER です。
ユーザ watashi をパスワードをつけて登録させてみる。
postgres$ psql mydb
mydb=# CREATE USER watashi WITH PASSWORD 'jw8s0F';
管理ユーザから psql で mydb に接続し、パスワード jw8s0F を持つユーザを追加した。
ユーザ一覧は SELECT で表示できる。
mydb=# SELECT * FROM pg_user;
usename | usesysid | usecreatedb | usetrace | usesuper | usecatupd | passwd | valuntil
----------+----------+-------------+----------+----------+-----------+----------+----------
postgres | 1 | t | t | t | t | ******** |
watashi | 101 | f | f | f | f | ******** |
(2 rows)
どんな権限がユーザに与えられてるか確認できるね。
ユーザの設定を変えるには ALTER USER を使う。
watashi のパスワードを変えてみる。
mydb=# ALTER USER watashi WITH PASSWORD 'dareda';
こんな感じ。
ユーザを削除するには DROP USER を使う。
watashi を削除してみる。
mydb=# DROP USER watashi;
mydb=# SELECT * FROM pg_user;
usename | usesysid | usecreatedb | usetrace | usesuper | usecatupd | passwd | valuntil
----------+----------+-------------+----------+----------+-----------+----------+----------
postgres | 1 | t | t | t | t | ******** |
(1 rows)
消えとるね。消したんで再登録して次へと。
次に、テーブルに対してアクセス権を与えないといかん。
テーブルを作っただけでは作った人しかいじれない。
watashi もいじれるように設定させる。
アクセス権の設定/解除は、 grant / revoke コマンドにより行います。
GRANT 権限 ON テーブル名 TO ユーザ名;
REVOKE 権限 ON テーブル名 FROM ユーザ名;
権限の種類には、SELECT、INSERT、UPDATE、DELETE、RULE、ALL がある。
, に続けて記述すれば複数の権限を与えられる。
ALL にすれば全ての権限を与えます。
テーブル maibo の全ての権限を watashi に与えるには次のようにすべし。
mydb=# GRANT all ON meibo TO watashi;
mydb=# GRANT all ON address_id_seq TO watashi;
meibo にはシーケンス値が設定されてるので address_id_seq にも権限を与えることをお忘れなく。
うーん。設定された権限を確認するには psql の \z コマンド。
mydb=# \z
Access privileges for database "mydb"
Table | Access privileges
----------------+--------------------------------------
address_id_seq | {=,postgres=arwdRxt,watashi=arwdRxt}
meibo | {=,postgres=arwdRxt,watashi=arwdRxt}
(2 rows)
うーん。ユーザ postgres と watashi に権限 arwdRxt が与えられてる。= しかないのは一般ユーザで何も権限が与えられとらんという訳ね。