我已经在我的 CentOS 服务器上安装了 PostgreSQL 8.4,并从 shell 连接到 root 用户并访问 PostgreSQL shell。
我在 PostgreSQL 中创建了数据库和用户。
尝试从我的 PHP 脚本连接时,它显示我的身份验证失败。
如何创建新用户以及如何向他们授予特定数据库的权限?
我已经在我的 CentOS 服务器上安装了 PostgreSQL 8.4,并从 shell 连接到 root 用户并访问 PostgreSQL shell。
我在 PostgreSQL 中创建了数据库和用户。
尝试从我的 PHP 脚本连接时,它显示我的身份验证失败。
如何创建新用户以及如何向他们授予特定数据库的权限?
从命令行:
$ 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;