2013-01-26 18 views
9

Rõ ràng đây là một câu hỏi khá khó để hỏi vì, đơn giản vì nó là, không ai dường như đã trả lời nó.

Tôi có PostgreSQL đang chạy trên máy chủ ubuntu 12.10 (không có GUI).

Mục tiêu của tôi - câu hỏi của tôi - là tạo ra một cơ sở dữ liệu có tên là "mydb" và người dùng "admin" như vậy mà tôi có thể đưa ra lệnh này như một người sử dụng bình thường từ vỏ và kết nối với cơ sở dữ liệu:

$ psql -U quản trị -d mydb

Nhưng tôi không thể tìm thấy câu trả lời cho điều này ở bất cứ đâu.

tôi có thể đăng nhập như người dùng postgres bởi su'ing và chạy psql lệnh:

$ sudo su -m postgres 
[email protected]:~$ psql 
psql (9.1.7) 
Type "help" for help. 

postgres=# 

Tôi đã tìm ra cách để tạo ra một cơ sở dữ liệu có tên là "mydb" và người dùng "admin "như vậy mà:

postgres=# \du 
Role name |     List of roles Attributes  | Member of 
-----------+------------------------------------------------ 
admin  | Superuser, Create role, Create DB    | {} 
postgres | Superuser, Create role, Create DB, Replication | {} 

tôi có không tìm ra cách để đảm bảo rằng người dùng 'admin' có thể kết nối với '' cơ sở dữ liệu mydb - có lẽ ai đó với những đặc quyền như vậy không cần? [Như tôi đã viết, tôi nhận thấy rằng tôi có lẽ nên thu hồi đặc quyền superuser từ admin.]

Và những gì tôi thực sự muốn biết là làm thế nào để kết nối từ vỏ một thường xuyên của người dùng:

$ psql -U postgres 
psql: FATAL: Peer authentication failed for user "postgres" 

Có chắc chắn những giả định không được viết về việc chạy postgreSQL mà tôi hiểu lầm, nhưng một vài giờ tìm kiếm, xem hướng dẫn, v.v., đã không giải quyết được vấn đề. Tôi sẽ hoàn toàn hạnh phúc nếu ai đó nói điều này đã được trả lời, đặc biệt là nếu nó có. Tôi giả sử và hy vọng rằng câu trả lời là đơn giản và đánh giá cao sự giúp đỡ của bạn.

Cảm ơn, ge

Trả lời

8

Từ lỗi tin nhắn, dường như xác thực-settings chưa được thiết lập đúng.

Ngoài cài đặt trong cơ sở dữ liệu, PostgreSQL cũng sử dụng tệp cấu hình (pg_hba.conf) xác định cơ chế xác thực nào có thể được sử dụng cho mỗi người dùng, máy chủ và cơ sở dữ liệu. Bạn có thể chỉ định rằng người dùng chỉ có thể kết nối thông qua mật khẩu/mật khẩu md5 hoặc thậm chí 'không cần xác thực'

Hiện tại cấu hình của bạn có thể sử dụng xác thực 'ngang hàng' cho tất cả người dùng, điều này có nghĩa là: Chỉ cho phép người dùng đó người dùng đã đăng nhập (ví dụ: người dùng shell của bạn cũng nên được gọi là 'admin'). Từ câu hỏi của bạn, đây là không phải là những gì bạn muốn, có thể bạn sẽ muốn sử dụng cơ chế xác thực mật khẩu hoặc md5.

Tôi nghĩ rằng các trang này sẽ cung cấp cho bạn câu trả lời bạn cần:

http://web.archive.org/web/20131001194046/http://blog.deliciousrobots.com/2011/12/13/get-postgres-working-on-ubuntu-or-linux-mint/ (phiên bản lưu trữ)

tài liệu chính thức:

http://www.postgresql.org/docs/current/static/auth-pg-hba-conf.html

Hãy nhớ lại postgresql sau khi sửa đổi pg_hba. tập tin conf!

cập nhật

Bản gốc blog bài tôi gọi tại là ẩn, liên kết với doanh nghiệp trỏ tới một phiên bản lưu trữ. Nhờ @O_the_Del để báo cáo.

+0

Thank bạn rất nhiều. Tôi phải chạy ra ngoài nhưng sẽ đi qua câu trả lời của bạn và liên kết khi tôi nhận được trở lại. – zabouti

+0

Hy vọng nó hoạt động. PostgreSQL là một cơ sở dữ liệu tuyệt vời, nhưng có một đường cong học tập khá dốc trong một số trường hợp – thaJeztah

+0

thaJeztah - tôi dường như không thể viết ra những gì tôi đã làm trong một bình luận, nhưng về cơ bản, lời khuyên của bạn đã hoạt động. Cám ơn rất nhiều! – zabouti

5

trên Debian, PostgreSQL nghe theo mặc định trên localhost, vì vậy nếu bạn có một quy tắc trong pg_hba.conf cho phép các kết nối TCP/IP sau đó bạn có thể sử dụng tham số -h để phù hợp với quy tắc:

psql -U admin -h localhost mydb 
Các vấn đề liên quan