トップ 一覧 置換 検索 ヘルプ RSS ログイン

Postgresqlの変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
!!!ユーザー作成
 su postgres
 $ createuser centos
  could not change directory to "/root"
  Shall the new role be a superuser? (y/n) n
  Shall the new role be allowed to create databases? (y/n) y
  Shall the new role be allowed to create more new roles? (y/n) n
  CREATE ROLE
これで、ユーザ「centos」が使えるようになる

!!!データベース作成
 $ createdb
 CREATE DATABASE

!!!データベースの一覧表示
 $ psql -l
         List of databases
    Name    |  Owner   | Encoding 
 - ----------+----------+----------
  centos    | centos   | UTF8
  postgres  | postgres | UTF8
  template0 | postgres | UTF8
  template1 | postgres | UTF8
  (4 rows)

!!!sqlコンソール
 psql
 centos-> \c centos
 You are now connected to database "centos".

 centos=> create table test (
 centos(> test char(10)
 centos(> );
 CREATE TABLE

!!!権限
特に権限設定をしていないユーザは、各DBのpublicスキーマと自分が所有しているschemaに対して操作が可能。
publicスキーマに対する権限を剥奪する場合は
publicスキーマに対するcreate権限を剥奪する場合
 REVOKE CREATE ON SCHEMA public FROM PUBLIC;
とする。 FROM PUBLICのPUBLICは全てのユーザを意味する。

\du
\dp
select * from pg_tables;
ユーザは、デフォルトでは所有していないスキーマのオブジェクトをアクセスすることはできません。 アクセスするためには、そのスキーマの所有者からスキーマのUSAGE権限を付与してもらう必要があります。 そのスキーマ内のオブジェクトに対して操作を行うには、そのオブジェクトに応じて、さらに追加の権限が必要となる場合があります。

他のユーザのスキーマ内でオブジェクトを作成することも可能です。 それには、スキーマ上でCREATE権限が付与されていなければなりません。 デフォルトでは、public スキーマに関しては全てのユーザがCREATEとUSAGE権限を持っていることに注意してください。 つまり、全てのユーザは、そのユーザが接続できる任意のデータベース上のpublicスキーマにオブジェクトを作成できるということです。 これが好ましくない場合は、以下のように権限を取り消すことができます。

REVOKE CREATE ON SCHEMA public FROM PUBLIC;

(最初の"public"はスキーマです。2番目の"public"は"全てのユーザ"を意味します。 最初のpublicは識別子で、2番目のpublicはキーワードなので、それぞれ小文字、大文字を使用しています。項4.1.1のガイドラインを思い出してください。) 
{{category2 データベース,Postgresql}}