2013-06-06 7 views
53

Tôi đang cố gắng thiết lập Postgres lần đầu tiên và tôi cần tạo người dùng có quyền đọc và tạo cơ sở dữ liệu. Tuy nhiên, khi tôi sử dụng "tên CreateUser" trong thiết bị đầu cuối của tôi, tôi nhận được thông báo sau:Createuser: không thể kết nối với postgres cơ sở dữ liệu: FATAL: role "tom" không tồn tại

CreateUser: không thể kết nối với postgres cơ sở dữ liệu: Fatal: vai trò "tom" không tồn tại

Tom là tài khoản người dùng Ubuntu của tôi mà tôi đã đăng nhập ngay bây giờ. Tôi đang cố tạo tên người dùng là "postgres" rồi thực hiện "psql -U psql template1" để tôi có thể tạo cơ sở dữ liệu và chỉ định chủ sở hữu cho ứng dụng Rails của mình.

Bất kỳ trợ giúp nào?

Trả lời

-2

Trước tiên, bạn cần chạy initdb. Nó sẽ tạo ra các cụm cơ sở dữ liệu và các thiết lập ban đầu

Xem How to configure postgresql for the first time?http://www.postgresql.org/docs/8.4/static/app-initdb.html

+4

Điều này hoàn toàn không chính xác. Nếu người dùng không chạy 'initdb' thì họ sẽ không có máy chủ cơ sở dữ liệu đang chạy và chấp nhận các kết nối để tạo ra thông báo lỗi được báo cáo. Vui lòng xóa câu trả lời gây hiểu lầm này.(BTW, trong tương lai, xin vui lòng liên kết đến/docs/current/static/để tránh các liên kết cũ tích lũy) –

91

Bạn nói Ubuntu vì vậy tôi sẽ đoán bạn cài đặt các gói PostgreSQL từ Ubuntu qua apt.

Nếu vậy, tài khoản người dùng PostgreSQL postgres đã tồn tại và được định cấu hình để có thể truy cập qua xác thực peer cho khe cắm unix trong pg_hba.conf. Bạn nhận được nó bằng cách chạy lệnh như postgres unix người sử dụng, ví dụ:

sudo -u postgres createuser owning_user 
sudo -u postgres createdb -O owning_user dbname 

Đây là tất cả trong tài liệu Ubuntu PostgreSQL đó là lần đầu tiên Google nhấn cho "Ubuntu PostgreSQL" và được bao phủ trong nhiều câu hỏi Stack Overflow.

(Bạn đã thực hiện câu hỏi này khó khăn hơn rất nhiều để trả lời bằng cách bỏ qua các chi tiết như hệ điều hành và phiên bản bạn đang ở trên, làm thế nào bạn cài đặt PostgreSQL, vv)

+0

sau khi tạo owning_user, Làm cách nào để kết nối với người dùng này? Ý tôi là kết nối người dùng mặc định mà tôi sử dụng, post -res post -res post -res postsql của sudo -u postgres. giống như cách kết nối owning_user? – Jony

+1

Ba tùy chọn. (a) Đặt mật khẩu cho người dùng đó và chỉnh sửa 'pg_hba.conf' để sử dụng' md5' auth cho người dùng đó (xem sách hướng dẫn); (b) Tạo một người dùng hệ điều hành bằng cùng tên và tiếp tục sử dụng 'peer' auth; hoặc (c) nâng cao hơn, tạo bản đồ 'pg_ident.conf' để cho phép người dùng hệ điều hành của bạn đăng nhập với tư cách người dùng mới. –

23
sudo -u postgres createuser -s tom 

này sẽ giúp bạn vì điều này sẽ xảy ra nếu người quản trị không tạo tài khoản người dùng PostgreSQL cho bạn. Nó cũng có thể là bạn đã được gán một tên người dùng PostgreSQL khác với tên người dùng hệ điều hành của bạn, trong trường hợp đó bạn cần sử dụng công tắc -U.

3

Lỗi của bạn được đăng trong tài liệu chính thức. Bạn có thể read this article.

tôi đã sao chép các lý do cho bạn (và siêu liên kết URL) từ bài viết rằng:

Điều này sẽ xảy ra nếu người quản trị chưa tạo một tài khoản người dùng PostgreSQL cho bạn. (Tài khoản người dùng PostgreSQL khác với tài khoản người dùng hệ điều hành.) Nếu bạn là quản trị viên, hãy xem Chapter 20 để được trợ giúp tạo tài khoản. Bạn sẽ cần phải trở thành người dùng hệ điều hành mà PostgreSQL đã được cài đặt (thường là postgres) để tạo tài khoản người dùng đầu tiên.Nó cũng có thể là bạn đã được gán một tên người dùng PostgreSQL khác với tên người dùng hệ điều hành của bạn; trong trường hợp đó bạn cần sử dụng công tắc -U hoặc thiết lập các biến môi trường PGUSER để xác định tên người dùng PostgreSQL của bạn

Đối với mục đích của bạn, bạn có thể làm:

1) Tạo một tài khoản người dùng PostgreSQL:

sudo -u postgres createuser tom -d -P 

(các -P tùy chọn để thiết lập một mật khẩu;.. tùy chọn -d cho phép việc tạo ra các cơ sở dữ liệu cho tên người dùng của bạn 'tom' Lưu ý rằng 'tom' là tên người dùng hệ điều hành của bạn Bằng cách đó, bạn có thể thực hiện các lệnh PostgreSQL không có sudo ing.)

2) Bây giờ bạn sẽ có thể thực hiện createdb và các lệnh PostgreSQL khác.

20

See git gist with instructions here

Run này:

sudo -u postgres psql 

trong terminal của bạn để có được vào postgres

postgres=# 

Run

CREATE USER new_username; 

Lưu ý: Thay thế New_Username với người dùng bạn muốn tạo, trong trường hợp của bạn sẽ là tom.

postgres=# CREATE USER new_username; 
CREATE ROLE 

Vì bạn muốn người dùng để có thể tạo ra một DB, bạn cần phải thay đổi vai trò để superuser

postgres=# ALTER USER new_username SUPERUSER CREATEDB; 
ALTER ROLE 

Để xác nhận, tất cả mọi thứ đã thành công,

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

postgres=# 
+0

Điều này làm việc để nhận được vào postgres: 'psql -U postgres' – leontalbot

2

1 - Đăng nhập với tư cách người dùng PostgreSQL mặc định (postgres)

sudo -u postgres -i 

2- Là người dùng postgres. Thêm một người sử dụng cơ sở dữ liệu mới bằng cách sử dụng createuser lệnh

[postgres]$ createuser --interactive 

3-exit

[postgres]$ exit 
0

tôi đã cùng một vấn đề, tôi chỉ làm điều này

sudo su - postgres

CreateUser odoo -U postgres -dRSP #P cho mật khẩu (odoo hoặc tên người dùng mà bạn muốn o cấp quyền truy cập cho bưu điện)