Как создать пользователя для БД в postgresql? [закрыто]


199

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

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

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

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


что именно сообщение об ошибке? Вы можете войти через psqlкомандную строку?
a_horse_with_no_name

25
Как в мире это закрыто как не по теме?
Бен

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

2
@knocte, так что я предполагаю, что вы говорите, что под 6, за исключением исключения, "если они непосредственно не связаны с программированием или инструментами программирования", и я предполагаю, что postgres не считается инструментом программирования? интересный дубль
Бен

Ответы:


340

Из 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);

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

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

2
Я думаю, что самый переносимый способ выдачи команд был бы:psql -U postgres -c "CREATE ROLE..."
Уго Мота

31
Просто помните, что все, что вы вводите и запускаете в оболочке, обычно попадает в историю оболочки, включая выбранный вами пароль.
amn

7
заметить разницу между 'и "в командах!
andilabs

42

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

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'; предоставить все привилегии в базе данных nominatim для ravi; Но я не могу подключиться с помощью следующего кода PHP: <? Php $ connString = 'host = localhost port = 5432 dbname = nominatim user = ravi password = ravi'; $ connHandler = pg_connect ($ connString); echo 'Connected to' .pg_dbname ($ connHandler); ?>

@Darji Krunal: какова ошибка PHP, как она выглядит?
Видул

1
предоставить все привилегии * ...
Арпит Сингх
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.