Як створити користувача для db в postgresql? [зачинено]


199

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

Я створив базу даних та користувача в PostgreSQL.

Під час спроби підключитися зі свого скрипту PHP він показує, що аутентифікація не вдалася.

Як створити нового користувача та як надати їм дозволи для певної БД?


що саме таке повідомлення про помилку? чи можете ви увійти через psqlкомандний рядок?
a_horse_with_no_name

25
Як у світі це закрилося як поза темою?
Бен Крізі

@BenCreasy, можливо, тому, що це більше підходить для serverfault.com або суперусер?
knocte

2
@knocte, тому я гадаю, що ви говорите, що він підпадає під 6, що має виняток, "якщо вони безпосередньо не включають засоби програмування чи програмування", і я вважаю, що постгреси не вважаються інструментом програмування? цікавий прийом
Ben Creasy

Відповіді:


339

Від 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);

14
Для Ubuntu це повинно бутиsudo su - postgres
Hengjie

57
Для Ubuntu це дійсно повинно бути: sudo -u postgres psql
Маріо

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

@Darji Krunal: яка помилка PHP, як це виглядає?
Видул

1
надайте всі пільги * ...
Арпіт Сінгх
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.