Postgresqlのロール関係の基本をメモしておく。


参考サイト:DbOnlineさん

http://www.dbonline.jp/postgresql/index.html


ロールとは:
接続の為のログインの管理やデータベースなどへの各権限の設定をロール単位で行います。
ロールにはユーザーやグループなどのまとまりのようなものです。


ロールの権限とは:
スーパーユーザーと所有者(オブジェクトを作成したユーザ)は
デフォルトで全ての権限を保持しているため、オブジェクトの所有者に権限を許可する必要はありません。
それ以外のロールに対して権限を付与するにはGRANTを使います。


■psql実行
$ psql -l
$ psql database
$ psql -U user -h localhost database

$ psql -f sqlfile -U user database


■psqlコマンド
\du ロールの詳細な情報
\z 権限の詳細な情報


■ロールの作成
・基本形
CREATE ROLE role_name
・ログイン可能なロール
CREATE ROLE role_name WITH LOGIN
・ログイン可能かつパスワード設定
CREATE ROLE role_name WITH LOGIN PASSWORD 'password'
・ログイン可能かつデータベース作成可能
CREATE ROLE role_name WITH LOGIN CREATEDB PASSWORD 'password'


■ロールの変更
・パスワード生成および変更
ALTER ROLE role_name WITH PASSWORD 'password'
・ロール編集権限、データベース作成権限付与
ALTER ROLE role_name WITH CREATEROLE CREATEDB


■ロールの削除
DROP ROLE role_name


■ロールの権限追加
GRANT SELECT, UPDATE, INSERT ON table_name TO role_name;
GRANT ALL ON table_name TO role_name;


■ロールの権限削除
REVOKE SELECT, UPDATE, INSERT ON table_name FROM role_name;


○ロール作成・変更のオプション
SUPERUSER (デフォ:NOSUPERUSER)
CREATEDB (デフォ:NOCREATEDB)
CREATEROLE (デフォ: NOCREATEROLE)
CREATEUSER (デフォ:NOCREATEUSER)
INHERIT (デフォ:NOINHERIT)
LOGIN (デフォ:NOLOGIN)
CONNECTION LIMIT connlimit
PASSWORD 'password'
VALID UNTIL 'timestamp'
IN ROLE rolename [, ...]
IN GROUP rolename [, ...]
ROLE rolename [, ...]
ADMIN rolename [, ...]
USER rolename [, ...]
SYSID uid


○権限の追加・削除のオプション
GRANT {{SELECT | INSERT | UPDATE | DELETE | RULE | REFERENCES | TRIGGER}
[,...] | ALL [PRIVILEGES]}
ON [TABLE] tablename [, ...]
TO {username | GROUP groupname | PUBLIC} [, ...] [WITH GRANT OPTION]

GRANT {{CREATE | TEMPORARY | TEMP} [,...] | ALL [PRIVILEGES]}
ON DATABASE dbname [, ...]
TO {username | GROUP groupname | PUBLIC } [, ...] [WITH GRANT OPTION]

GRANT {EXECUTE | ALL [PRIVILEGES]}
ON FUNCTION funcname ([[argmode] [argname] argtype [, ...]]) [, ...]
TO {username | GROUP groupname | PUBLIC} [, ...] [WITH GRANT OPTION]

GRANT {USAGE | ALL [PRIVILEGES]}
ON LANGUAGE langname [, ...]
TO {username | GROUP groupname | PUBLIC} [, ...] [WITH GRANT OPTION]

GRANT {{CREATE | USAGE} [,...] | ALL [PRIVILEGES]}
ON SCHEMA schemaname [, ...]
TO {username | GROUP groupname | PUBLIC} [, ...] [WITH GRANT OPTION]

GRANT {CREATE | ALL [PRIVILEGES]}
ON TABLESPACE tablespacename [, ...]
TO {username | GROUP groupname | PUBLIC} [, ...] [WITH GRANT OPTION]

GRANT role [, ...]
TO {username | GROUP groupname | PUBLIC} [, ...] [WITH ADMIN OPTION]

先日、


初めて、ゴルフのコースに行ってきました。


結構、坂道あって体力いるのね。


もっと、おだやかなスポーツやとおもてた。しらんかった (  ゚ ▽ ゚ ;)



で、スコアは126. 以外にボロボロにはならんかったけど、本当に疲れました。


ありがとうございました。ノシ


データベース抽象化レイヤの選択を考える。


しっかし、データベース抽象化レイヤって名前は、人肌恋しくなるくらい無機質な名前やな。


要は、PHPとデータベース(今回はPostgresql)の間をとりもつツールの選択だ。


先日の記事では、テスト的に直接データベースを実行する形をとったんだけど、

やはり、使い勝手はツールを入れたほうがよさそう。


で、調べたら、結構種類あるね。

一覧にしてみる。


×PEAR::DB

  古いらしい。却下する。

○PEAR::DB_DataObject

  利用例もある。PEAR::DBの改良版か?

×PEAR::MDB

  古いらしい。却下する。

○PEAR::MDB2

  旬らしい。

  処理速度は遅いが、PEAR::DBより早く。記述はある程度似ている。

○PDO

  処理速度が速くて旬らしい。

  PHP5.1から提供された。

?dbx

  ネイティブよりだからか話題が少ない?

×各フレームワーク専用のもの

  まだフレームワークまではいらない。直感的に地で処理を味わいたい。



参考文献(ありがとう(・ω・)/)

http://www.thinkit.co.jp/free/marugoto/1/4/1/

http://yuubiseiharukana.blog.shinobi.jp/Entry/77/


旬が多くてどれがええのん?

スピード好きからいえば、PDOか。そんなんでええのか?w いや大事だろ!