How to create user for a db in postgresql?
我已经在我的CentOS服务器上安装了PostgreSQL 8.4,并从shell连接到根用户并访问PostgreSQL shell。
我在PostgreSQL中创建了数据库和用户。
尝试从PHP脚本连接时,它显示身份验证失败。
如何创建一个新用户以及如何为特定数据库授予他们权限?
来自CLI:
1 2 3 4 5 | $ 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(在本地主机上测试,它按预期工作):
1 2 3 | $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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | 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
例子:
1 | grant all privileges on database db_name to someuser; |