俺だけのために Ore! Tips!

PostgreSQL で、新しいユーザーと DB を作成

2005年 3月12日 作業


PostgreSQL で、新しいユーザーと DB を作成する。

新しいデータベース 'heropen' を作成。

%createdb heropen
CREATE DATABASE

'heropen' にアクセス出来るユーザーとして、'hrc009cp' と 'hnt4940c' を作成。(ただ、DB を利用するだけのユーザーなので、新しい DB やユーザーの作成は「権限無し」ってことで)

%createuser hrc009cp
Shall the new user be allowed to create databases? (y/n) n
Shall the new user be allowed to create more new users? (y/n) n
CREATE USER
%createuser hnt4940c
Shall the new user be allowed to create databases? (y/n) n
Shall the new user be allowed to create more new users? (y/n) n
CREATE USER

psql コマンドを実行し、'hrc009cp' と 'hnt4940c' に 'heropen' へのアクセス権を付与する。

%psql -n heropen
Welcome to psql 7.4.3, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help on internal slash commands
       \g or terminate with semicolon to execute query
       \q to quit

heropen=# GRANT ALL ON DATABASE heropen TO hrc009cp;
GRANT
heropen=# GRANT ALL ON DATABASE heropen TO hnt4940c;
GRANT
heropen=# SELECT datname,datacl FROM pg_database WHERE datname='heropen';
 datname |                                     datacl
---------+--------------------------------------------------------------------------------
 heropen | {=T/postgres,postgres=C*T*/postgres,hrc009cp=CT/postgres,hnt4940c=CT/postgres}
(1 row)


'hrc009cp=CT/postgres,hnt4940c=CT' から、'hrc009cp' と 'hnt4940c' がスキーマ作成権限(C)とテーブル作成権限(T)を持っていることがわかる。


heropen=# \q
%


これで、ユーザー 'hrc009cp' 等で 'heropen' データベースに新しいテーブルを作ったりということが出来るようになったわけ。

%psql heropen hrc009cp
Welcome to psql 7.4.3, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help on internal slash commands
       \g or terminate with semicolon to execute query
       \q to quit

heropen=> \q

という具合に、ユーザー 'hrc009cp' で 'heropen' にアクセス可能。

しかーし、このままではユーザーにまったくパスワードが付いていないので危険。 ということで、パスワードを付加する。

%psql heropen
Welcome to psql 7.4.3, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help on internal slash commands
       \g or terminate with semicolon to execute query
       \q to quit

heropen=# ALTER USER hrc009cp PASSWORD 'herohero55';
ALTER USER
heropen=# \q

%vi data/pg_hba.conf

local   all         all                                             trust

という行の、trust を password に変更する。

#local   all         all                                             trust
local   all         all                                             password

これで、ユーザー hrc009cp が DB に接続する時は、パスワードの入力が必要となる。


<注意>
これだけだと、UDP での利用しか許されてないので、TCP 通信を行う場合は、/usr/local/pgsql/data/postgresql.conf 内の tcpip_socket 行を編集する必要がある。

#tcpip_socket = false
tcpip_socket = true

と、true にした上で、pg_hba.conf に TCP/IP 通信制御用の行を追加する。

(例)
host    all         all         192.168.0.8       255.255.255.255   password

前ページに戻る


Copyright (C) 2004 S.Maaasamasa.