229

CentOS サーバーに PostgreSQL 8.4 をインストールし、シェルから root ユーザーに接続して PostgreSQL シェルにアクセスしました。

PostgreSQL でデータベースとユーザーを作成しました。

PHP スクリプトから接続しようとすると、認証に失敗したことが示されます。

新しいユーザーを作成する方法と、特定の DB に対するアクセス許可を付与する方法を教えてください。

4

2 に答える 2

375

CLI から:

$ su - postgres 
$ psql template1
template1=# CREATE USER tester WITH PASSWORD 'test_password';
template1=# GRANT ALL PRIVILEGES ON DATABASE "test_database" to tester;
template1=# \q

PHP (localhost でテストしたところ、期待どおりに動作します):

  $connString = 'port=5432 dbname=test_database user=tester password=test_password';
  $connHandler = pg_connect($connString);
  echo 'Connected to '.pg_dbname($connHandler);
于 2012-06-02T09:47:50.727 に答える
50

パスワードを使用してユーザーを作成します。

http://www.postgresql.org/docs/current/static/sql-createuser.html

CREATE USER name [ [ WITH ] option [ ... ] ]

where option can be:

      SUPERUSER | NOSUPERUSER
    | CREATEDB | NOCREATEDB
    | CREATEROLE | NOCREATEROLE
    | CREATEUSER | NOCREATEUSER
    | INHERIT | NOINHERIT
    | LOGIN | NOLOGIN
    | REPLICATION | NOREPLICATION
    | CONNECTION LIMIT connlimit
    | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'
    | VALID UNTIL 'timestamp'
    | IN ROLE role_name [, ...]
    | IN GROUP role_name [, ...]
    | ROLE role_name [, ...]
    | ADMIN role_name [, ...]
    | USER role_name [, ...]
    | SYSID uid

次に、特定のデータベースに対するユーザー権限を付与します。

http://www.postgresql.org/docs/current/static/sql-grant.html

例 :

grant all privileges on database db_name to someuser;
于 2012-06-02T09:42:08.690 に答える