Jak utworzyć użytkownika dla bazy danych w Postgresql? [Zamknięte]


199

Zainstalowałem PostgreSQL 8.4 na moim serwerze CentOS i połączyłem się z użytkownikiem root z powłoki i uzyskując dostęp do powłoki PostgreSQL.

Stworzyłem bazę danych i użytkownika w PostgreSQL.

Podczas próby połączenia ze skryptu PHP pokazuje, że uwierzytelnienie nie powiodło się.

Jak utworzyć nowego użytkownika i jak udzielić mu uprawnień dla konkretnej bazy danych?


jaki dokładnie jest komunikat o błędzie? czy możesz zalogować się psqlz poziomu wiersza poleceń?
a_horse_w_na_name

25
Jak do diabła zostało to zamknięte jako nie na temat?
Ben Creasy,

@BenCreasy może dlatego, że jest bardziej odpowiedni dla serverfault.com lub superużytkownika?
knocte

2
@knocte, więc przypuszczam, że mówisz, że jest poniżej 6, co ma wyjątek „chyba że dotyczą one bezpośrednio narzędzi programistycznych lub programistycznych”, a postgres nie liczy się jako narzędzie programistyczne? ciekawe ujęcie
Ben Creasy

Odpowiedzi:


339

Z 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 (testowany na localhost, działa zgodnie z oczekiwaniami):

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

14
W przypadku Ubuntu powinien to byćsudo su - postgres
Hengjie,

57
W przypadku Ubuntu powinno to być naprawdę: sudo -u postgres psql
Mario

2
Myślę, że najbardziej przenośnym sposobem wydawania poleceń byłoby:psql -U postgres -c "CREATE ROLE..."
Hugo Mota

31
Pamiętaj tylko, że wszystkie rzeczy, które wpisujesz i uruchamiasz w powłoce, zwykle kończą się historią powłoki, łącznie z wybranym hasłem.
AMN

7
Różnica między zawiadomienie 'i "poleceń!
andilabs

42

Utwórz użytkownika za pomocą hasła:

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

Następnie nadaj prawa użytkownika do określonej bazy danych:

http://www.postgresql.org/docs/current/static/sql-grant.html

Przykład:

grant all privileges on database db_name to someuser;

1
Już to zrobiłem: utwórz użytkownika ravi z hasłem „ravi”; przyznać wszystkie uprawnienia do bazy danych nominatim ravi; Ale nie mogę połączyć się z następującym kodem PHP: <? Php $ connString = 'host = port hosta lokalnego = 5432 dbname = nomatim user = ravi password = ravi'; $ connHandler = pg_connect ($ connString); echo „Połączono z” .pg_dbname ($ connHandler); ?>

@Darji Krunal: jaki jest błąd PHP, jak to wygląda?
Vidul

1
przyznaj wszystkie przywileje * ...
Arpit Singh
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.