วิธีสร้างผู้ใช้สำหรับ db ใน postgresql [ปิด]


199

ฉันติดตั้ง PostgreSQL 8.4 บนเซิร์ฟเวอร์ CentOS ของฉันและเชื่อมต่อกับผู้ใช้รูทจากเชลล์และเข้าถึงเชลล์ PostgreSQL

ฉันสร้างฐานข้อมูลและผู้ใช้ใน PostgreSQL

ในขณะที่พยายามเชื่อมต่อจากสคริปต์ PHP ของฉันมันแสดงให้ฉันเห็นการตรวจสอบล้มเหลว

ฉันจะสร้างผู้ใช้ใหม่และวิธีการให้สิทธิ์สำหรับฐานข้อมูลเฉพาะได้อย่างไร


ข้อความแสดงข้อผิดพลาดคืออะไร คุณสามารถล็อกอินผ่านpsqlจาก commandline ได้หรือไม่?
a_horse_with_no_name

25
วิธีนี้ในโลกได้ปิดเป็นปิดหัวข้อ?
Ben Creasy

@BenCreasy อาจจะเป็นเพราะเหมาะสมกว่าสำหรับ serverfault.com หรือ superuser ใช่ไหม
knocte

2
@ Knocte ดังนั้นฉันคิดว่าคุณบอกว่ามันต่ำกว่า 6 ซึ่งมีข้อยกเว้น "เว้นแต่พวกเขาเกี่ยวข้องโดยตรงกับการเขียนโปรแกรมหรือเครื่องมือการเขียนโปรแกรม" และฉันคิดว่า postgres จะไม่นับเป็นเครื่องมือการเขียนโปรแกรม? สิ่งที่น่าสนใจ
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
Mario

2
ฉันคิดว่าวิธีพกพาที่ดีที่สุดในการออกคำสั่งคือ:psql -U postgres -c "CREATE ROLE..."
Hugo Mota

31
เพียงจำไว้ว่าทุกสิ่งที่คุณพิมพ์และรันในเชลล์มักจะจบลงด้วยประวัติเชลล์รวมถึงรหัสผ่านที่คุณเลือก
พฤศจิกายน

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 = useratimim = ravi password = ravi'; $ connHandler = pg_connect ($ connString); echo 'เชื่อมต่อกับ' .pg_dbname ($ connHandler); ?>

@Darji Krunal: เกิดข้อผิดพลาด PHP มันมีลักษณะอย่างไร
Vidul

1
ให้สิทธิ์ทั้งหมด * ...
Arpit Singh เมื่อ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.