2010-01-31 2 views

Trả lời

59

Có hai phương pháp bạn có thể sử dụng. Cả hai yêu cầu tạo người dùng một cơ sở dữ liệu.

  1. Sử dụng CreateUser và createdb,

    $ sudo -u postgres createuser -s $USER 
    $ createdb mydatabase 
    $ psql -d mydatabase 
    
  2. Sử dụng quản lý SQL lệnh, và kết nối với một mật khẩu trên TCP

    $ sudo -u postgres psql postgres 
    

    Và, sau đó trong psql shell

    CREATE ROLE myuser LOGIN PASSWORD 'mypass'; 
    CREATE DATABASE mydatabase WITH OWNER = myuser; 
    

    Sau đó, bạn có thể đăng nhập,

    $ psql -h localhost -d mydatabase -U myuser -p <port> 
    

    Nếu bạn không biết về port, bạn luôn có thể có được nó bằng cách chạy sau đây, như là người dùng postgres,

    SHOW port; 
    

    Hoặc,

    $ grep "port =" /etc/postgresql/*/main/postgresql.conf 
    

Sidenote: số postgres người dùng

Tôi đề xuất NOT sửa đổi postgres người dùng.

  1. Thông thường, hệ thống bị khóa từ hệ điều hành. Không ai được phép "đăng nhập" vào hệ điều hành là postgres. Bạn có nghĩa vụ phải có gốc để có được xác thực là postgres.
  2. Thông thường, không được bảo vệ bằng mật khẩu và ủy quyền cho hệ điều hành máy chủ lưu trữ. Đây là điều tốt. Điều này thường có nghĩa là để đăng nhập như postgres là tương đương PostgreSQL của SQL Server SA, bạn phải có quyền ghi vào các tệp dữ liệu cơ bản. Và, điều đó có nghĩa là bạn bình thường có thể phá hủy tàn phá.
  3. Bằng cách giữ tính năng này bị vô hiệu hóa, bạn sẽ loại bỏ nguy cơ tấn công bạo lực thông qua một người dùng có tên là siêu người dùng. Che giấu và che giấu tên của superuser có lợi thế.
+0

Tôi hiểu rằng các vấn đề không xảy ra nếu sử dụng một siêu người dùng DB (s) thay vì người dùng không phải siêu. Câu hỏi tiếp theo cho tôi là, những gì có thể được thực hiện để có được điều này chạy ngay cả người dùng DB không phải là một người dùng siêu. – Hartmut

29

theo mặc định bạn sẽ cần phải sử dụng người dùng postgres:

sudo -u postgres psql postgres 
+0

cảm ơn bạn. Tôi đang ở, nhưng tôi không đăng nhập như người dùng ubuntu (tên), phải không? – user61734

+0

@ user61734 Cảm ơn bạn đã làm việc cho tôi. – sayth

10

Các lỗi bạn đang nhận được là vì bạn-ubuntu-Tên truy nhập không phải là một người sử dụng Postgres hợp lệ.

Bạn cần phải cho psql gì Tên truy nhập cơ sở dữ liệu để sử dụng

psql -U postgres 

Bạn cũng có thể cần phải xác định cơ sở dữ liệu để kết nối với

psql -U postgres -d <dbname> 
+0

Tôi đã thử "psql -U postgres", có cùng lỗi. Tôi chưa tạo bất kỳ cơ sở dữ liệu nào, chỉ cần cài đặt mới. – user61734

+0

'psql -U myuser -d mydb' hoạt động hoàn hảo, trong khi' psql -U myuser' cố gắng sử dụng auth peer, cảm ơn! – inf3rno

3

Nếu khách hàng của cơ sở dữ liệu của bạn kết nối với giao thức TCP/IP và bạn đã xác thực cấu hình xác thực trong kiểm tra pg_hba.conf của bạn rằng bạn đã cài đặt và chạy định danh. Điều này là bắt buộc ngay cả khi bạn chỉ có khách hàng địa phương kết nối với "localhost".

Cũng hãy cẩn thận rằng ngày nay, mã định danh có thể phải là IPv6 enabled để Postgresql chào đón các máy khách kết nối với máy chủ cục bộ.

1

bạn cũng có thể kết nối với cơ sở dữ liệu như sử dụng "bình thường" (không postgres):

postgres=# \connect opensim Opensim_Tester localhost; 

Password for user Opensim_Tester:  

You are now connected to database "opensim" as user "Opensim_Tester" on host "localhost" at port "5432"