CentOS サーバーに PostgreSQL 8.4 をインストールし、シェルから root ユーザーに接続して PostgreSQL シェルにアクセスしました。
PostgreSQL でデータベースとユーザーを作成しました。
PHP スクリプトから接続しようとすると、認証に失敗したことが示されます。
新しいユーザーを作成する方法と、特定の DB に対するアクセス許可を付与する方法を教えてください。
CentOS サーバーに PostgreSQL 8.4 をインストールし、シェルから root ユーザーに接続して PostgreSQL シェルにアクセスしました。
PostgreSQL でデータベースとユーザーを作成しました。
PHP スクリプトから接続しようとすると、認証に失敗したことが示されます。
新しいユーザーを作成する方法と、特定の DB に対するアクセス許可を付与する方法を教えてください。
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);
パスワードを使用してユーザーを作成します。
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;