2017-02-27 8 views
0

私は、私は次のようでしたそのため、新たな所有者でPostgreSQLデータベースを作成しようとしています:Postgresqlのアクセス制御

postgres=# create user saurabhd; 

postgres=# CREATE DATABASE test_db OWNER saurabhd; 

postgres=# ALTER USER saurabhd PASSWORD 'spassword' 

明らかに、新しいユーザとデータベースはpostgresユーザ(デフォルトユーザー)から作成されました。 \ lコマンドは、以下を示した:

Name | Owner | Encoding | Collate | Ctype | Access privileges 
-----------+----------+----------+-------------+-------------+----------------------- 
postgres | postgres | UTF8  | en_GB.UTF-8 | en_GB.UTF-8 | 
template0 | postgres | UTF8  | en_GB.UTF-8 | en_GB.UTF-8 | =c/postgres   + 
      |   |   |    |    | postgres=CTc/postgres 
template1 | postgres | UTF8  | en_GB.UTF-8 | en_GB.UTF-8 | =c/postgres   + 
      |   |   |    |    | postgres=CTc/postgres 
test_db | saurabhd | UTF8  | en_GB.UTF-8 | en_GB.UTF-8 | 

分かるように、データベースTEST_DBの所有者名がsaurabhdあります。しかし、私はまだ 'postgres'ユーザでDB test_dbにアクセスし、DBを修正することができます。

方法はありますか?私はpostgresユーザー(およびsaurabhd以外のすべてのユーザー)がDBのtest_dbにアクセスすることを制限できますか?

答えて

0

ALTER ROLE

PostgreSQLの役割の管理は、異なる構成を可能にする、それらの間である。

  • SUPERUSER/NOSUPERUSER。スーパーユーザ、データベースを作成する権限 とユーザ。
  • CREATEDB/NOCREATEDB。データベースを作成します。
  • CREATEROLE/NOCREATEROLE。ロールを作成します。
  • CREATEUSER/NOCREATEUSER。ユーザーを作成します。
  • LOGIN/NOLOGIN。この属性は、ロール とユーザとの間の違いを生じさせます。ユーザーはクライアントを介してデータベース にアクセスする権限を持っているためです。
  • パスワード。パスワードを変更できます。
  • VALID UNTIL。ユーザーの有効期限。

ユーザーまたは役割の構成を変更するには、次のコマンドを実行する必要があります。

ALTE ROLE <nombre del rol> WITH <opciones> 

我々はCREATEDB権限が自動的に所有者としてユーザーを割り当てる持つユーザーで作成するすべてのデータベース所有者 など、特定のユーザーでデータベースを作成します。私たちが作成することは制限されたユーザーであれば、特定のデータベースとそれを作成する方法は次のようになります。

CREATE DATABASE user OWNER saurabhd ; 

は、ユーザー スーパーユーザライセンスが最高にスーパーユーザー権限を割り当てます。このユーザーを使用すると、データベースエンジンのすべてのオブジェクトを管理できます。

たちは、次のコマンドでそれを行うロールにこの権限を割り当てるには:

ALTER ROLE saurabhd WITH SUPERUSER; 

割り当てたばかりのユーザーを作成したとする権限を与えたいしている既存のデータベース にユーザーにすべての権限既存のデータベースでは、次のコマンドを使用できます。

GRANT ALL PRIVILEGES ON DATABASE nameBase TO saurabhd;