Postgresql'de bir db için kullanıcı nasıl oluşturulur? [kapalı]


202

PostgreSQL 8.4'ü CentOS sunucuma kurdum ve kabuktan ve PostgreSQL kabuğuna erişerek kök kullanıcıya bağlandım.

PostgreSQL'de veritabanı ve kullanıcı oluşturdum.

PHP betiğimden bağlanmaya çalışırken bana kimlik doğrulamasının başarısız olduğunu gösteriyor.

Nasıl yeni kullanıcı oluşturabilirim ve onlara belirli bir DB için nasıl izin verebilirim?


hata mesajı tam olarak nedir? psqlkomut satırından giriş yapabilir misiniz ?
a_horse_with_no_name

27
Dünyada konu dışı olarak nasıl kapandı?
Ben Creasy

@BenCreasy belki serverfault.com veya süper kullanıcı için daha uygun olduğu için?
knocte

2
@knocte bu yüzden "doğrudan programlama veya programlama araçları içermedikçe" istisnası olan 6'nın altına düştüğünü ve sanırım postgres bir programlama aracı sayılmaz? ilginç almak
Ben Creasy

Yanıtlar:


343

CLI'den:

$ 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 üzerinde test edildiği gibi, beklendiği gibi çalışır):

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

16
Ubuntu için olmalısudo su - postgres
Hengjie

58
Ubuntu için gerçekten olmalı: sudo -u postgres psql
Mario

2
Komutları vermenin en taşınabilir yolunun şöyle olacağını düşünüyorum:psql -U postgres -c "CREATE ROLE..."
Hugo Mota

31
Kabukta yazdığınız ve çalıştırdığınız tüm öğelerin genellikle seçtiğiniz parola da dahil olmak üzere kabuk geçmişinde sona erdiğini unutmayın.
amn

7
komutlar arasında 've "içinde fark fark !
andilabs

43

Kullanıcıyı bir şifre ile oluşturun:

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

Ardından, belirli bir veritabanında kullanıcı haklarını verin:

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

Misal :

grant all privileges on database db_name to someuser;

1
Bunu zaten yaptım: 'ravi' şifresi ile kullanıcı ravi oluşturmak; ravi'ye veritabanı nominatimindeki tüm ayrıcalıkları vermek; Ama aşağıdaki PHP kodu ile bağlanamıyorum: <? Php $ connString = 'host = localhost port = 5432 dbname = nominatim kullanıcı = ravi şifresi = ravi'; $ connHandler = pg_connect ($ connString); echo 'Bağlandı' .pg_dbname ($ connHandler); ?>

@Darji Krunal: PHP hatası nedir, nasıl görünür?
Vidul

1
tüm ayrıcalıkları
ver
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.