[DB][PostgreSQL] operations for postgreSQL

■データベースユーザの登録

PostgreSQLでは、OSのユーザとデータベースユーザとは独立しているので、
データベースを扱うには、PostgreSQLにデータベースユーザを登録する必要がある。

新しいデータベースユーザを登録するには、postgresユーザでcreateuserコマンドを実行。
createuserコマンドは、postmasterが動いている状態でないと動作しない。

追加するデータベースユーザ名、データベース作成許可、ユーザ追加許可を聞いてくるので、順次に解答。

$ /usr/local/pgsql/bin/createuser -P
Enter name of user to add: hori
Enter password for user "hori": パスワード
Enter it again: 上で入力したパスワード
Shall the new user be allowed to create databases? (y/n) y
Shall the new user be allowed to create more new users? (y/n) n
CREATE USER

データベースユーザ horiを追加し、このユーザが新しいデータベースを作成できるようにした。
DBユーザの一覧

データベースユーザの一覧は、psqlでコンソールに入って、

=> \du
List of database users
User name | User ID | Attributes
-----------+---------+----------------------------
hori | 100 | create database
olap | 101 | create database
postgres | 1 | superuser, create database
(3 rows)

■パスワードの設定とサーバの再起動

初期状態では、postgresユーザにパスワードが設定されていない。
①サーバーを起動して、後述の方法で、postgresユーザにパスワードを設定。
②これも後述の方法でサーバーを停止し、設定ファイルを修正して、パスワードを使うようにする。
TODO: pg_ctl reloadか、kill -HUPで、再読み込みされる。

PostgreSQLの認証は、$(PGDATA)/pg_hba.confファイルが管理。
pg_hba.confファイルは、initdbコマンドがインストールする。  
$(PGDATA)/pg_hba.confファイルに認証方法が書かれている。これを修正。

「trust」は、パスワードチェックなしにサーバーへの接続を許可する。
trustをmd5に変更。

local all all md5
host all all 127.0.0.1 255.255.255.255 【md5】

この状態でサーバーを開始すると、パスワードが要求されるようになる。
しかし、これだけでは、サーバーへ接続したユーザーは、すべてのデータベースにアクセスできる。

認証方式がidentになっていると、パスワード認証されない。
パスワードは、password, md5, cryptのときのみ有効。
identのときは、UNIXユーザーがそのままPostgreSQLユーザーとして扱われる。
したがって、次のような挙動になる。
$ createuser -U postgres -W postgres' password => これは失敗。
-U, -Wは無視されている。
postgresユーザーになって、
$ createuser hori => これは成功。
デフォルトでは、所有者(およびスーパーユーザー)のみがそのオブジェクトに対して変更を加えることができる。
でも、他人がオーナーのデータベースに接続して、そこで表を作ったりはできる。
Chapter 6. クライアント認証
http://www.postgresql.jp/document/pg734doc/admin/client-authentication.html

■パスワードの変更

パスワードを変更するには、次のようにする。

# psql -U postgres template1
...
template1=# ALTER USER ユーザ名 WITH PASSWORD '新しいパスワード';
ALTER ROLE

■データベースユーザの削除

データベースユーザを削除するには、dropuserコマンドでよい。
データベースの管理
データベースの作成
データベースを作成するには、createdbコマンドを使用。
(postmasterが動いていなければ動作しない。)
--------------------
$ cd /usr/local/pgsql/bin
$ ./createdb booksample
CREATE DATABASE
--------------------
データベースユーザー名を明示的に指定するには、createdbコマンドに-Uオプションを渡す。
省略すると現在のOSのユーザー名が使われる。
データベースの文字コードを指定するには、-Eオプションで指定。
省略すると、ASCIIとなる。

--------------------
$ ./createdb -E EUC-JP booksample2
CREATE DATABASE
--------------------

■データベースの一覧
データベースを一覧するには、psqlコマンドに-lオプションを渡す。
自分が所有者でないデータベースも一覧表示される。
--------------------
$ ./psql -l
List of databases
Name | Owner | Encoding
-------------+----------+-----------
booksample2 | hori | EUC_JP
template0 | postgres | SQL_ASCII
template1 | postgres | SQL_ASCII
(3 rows)
--------------------

■データベースの削除
データベースを削除するには、dropdbコマンドを使用。
データベースユーザー名を明示的に指定するには、createdbコマンドと同様に、-Uオプションを渡す。
--------------------
$ ./dropdb booksample
DROP DATABASE
--------------------

ref:
http://www.nslabs.jp/postgresql.rhtml

ctgr:
postgres

tag : PostgreSQL

2007-05-26 14:45 : 開発 : コメント : 0 : トラックバック : 0 :
コメントの投稿
非公開コメント

« next  ホーム  prev »

search

ad



counter


tag cloud

category cloud