2012-06-02 2 views
162

Я установил PostgreSQL 8.4 на моем CentOS-сервере и подключился к пользователю root из оболочки и получил доступ к оболочке PostgreSQL.Как создать пользователя для db в postgresql?

Я создал базу данных и пользователя в PostgreSQL.

При попытке подключения из моего PHP-скрипта он показывает, что аутентификация не удалась.

Как создать нового пользователя и как предоставить им разрешения для конкретной БД?

+0

что именно это сообщение об ошибке? можете ли вы войти через 'psql' из командной строки? –

+5

Как в мире это закрылось как не по теме? –

+0

@BenCreasy возможно потому, что он более подходит для serverfault.com или суперпользователя? – knocte

ответ

36

Создайте пользователя с паролем:

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; 
+1

Я уже сделал это: создать пользователя ravi с паролем 'ravi'; предоставить все привилегии в отношении номинальной базы данных в ravi; Но я не могу соединиться со следующим кодом PHP:

+0

@ Darji Krunal: что такое ошибка PHP, как это выглядит? – Vidul

+0

предоставить все привилегии * ... –

276

От 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 (протестировано на локальном хосте, он работает, как ожидалось):

$connString = 'port=5432 dbname=test_database user=tester password=test_password'; 
    $connHandler = pg_connect($connString); 
    echo 'Connected to '.pg_dbname($connHandler); 
+0

Я уже пробовал это. –

+10

Для Ubuntu это должно быть 'sudo su - postgres' – Hengjie

+45

Для Ubuntu это действительно должно быть: sudo -u postgres psql – Mario

Смежные вопросы