2015-01-29 22 views
18

Tôi gần đây là phiên bản mới nhất của ubuntu và tôi chưa quen với nó. Tôi đã có một số vấn đề kết nối postgresql với pgadmin3.vai trò gây tử vong psql không tồn tại

Tôi đã cố gắng làm theo một số hướng dẫn để tạo máy chủ lưu trữ cục bộ mà tôi có thể sử dụng trong pgadmin3. Tôi đã không thực sự đánh dấu và tôi nghĩ rằng tôi đã làm cho nó tồi tệ hơn bằng cách cài đặt, gỡ cài đặt, cài đặt, gỡ cài đặt, thử câu trả lời tôi tìm thấy ... Tại thời điểm này tôi không chắc chắn postgres của tôi là sạch. Có thể tôi đã cài đặt hai postgres, một lần nữa, tôi không chắc chắn. Tôi đã cố gắng để gỡ bỏ cài đặt nó nhưng tôi đã có một lỗi mà cơ bản cho biết postgres không có trong sudo.

Vấn đề là bây giờ tôi có lỗi này chạy psql trong giao diện điều khiển:

$psql 
psql: FATAL: role "user" does not exist 

tôi không thể tìm thấy pg_hba.conf và vào thời điểm này tôi quá sợ hãi để làm cho mọi việc còn tồi tệ hơn bằng cách cố gắng sau bất kỳ các bài đăng khác.

Tôi làm cách nào để thực hiện công việc này?

+0

'pg_hba.conf' không có liên quan ở đây. Bạn đang cố gắng kết nối với tên người dùng 'người dùng' - nhưng tài khoản/tên người dùng/vai trò đó không tồn tại.Bạn cần phải chỉ định một người dùng cơ sở dữ liệu hiện có bằng cách sử dụng chuyển đổi '-U' khi bắt đầu' psql' –

+0

Vì thông báo lỗi đến từ psql, bạn đã kết nối với DBMS, Không cần phải gây rối với pg_hba.conf. Như thông báo cho biết: tên người dùng "người dùng" không tồn tại. BTW: 'user' là một tên khủng khiếp đối với người dùng. Bạn sẽ gọi con của bạn là 'con'? – joop

+1

Tôi không rõ ràng nhưng thay vì người dùng, đó là tên phiên của tôi được viết. Tối nay tôi sẽ cố hết sức. – whiplash

Trả lời

36

Như đã chỉ ra trong các ý kiến, pg_hba.conf của bạn có vẻ tốt.

Thông thường, cơ sở dữ liệu sẽ chạy với tư cách người dùng postgres (kiểm tra ps aux | grep postgres để tìm hiểu tên người dùng đang chạy dưới).

Đăng nhập là người dùng đó, ví dụ sudo su - postgres, sau đó tạo một người dùng phù hợp với tài khoản người dùng Ubuntu bình thường của bạn (createuser username), và cuối cùng tạo ra một cơ sở dữ liệu với tên giống nhau và thiết lập các chủ sở hữu (-O) cho rằng người sử dụng cơ sở dữ liệu, như này: createdb -O username username).

Điều đó sẽ làm cho việc gọi psql hoạt động và pgadmin - miễn là bạn khởi động nó làm người dùng mặc định, tên người dùng - cũng nên hoạt động.

Chỉnh sửa: Theo mặc định, psql sẽ sử dụng tên người dùng Linux của bạn làm giá trị mặc định cho cả tên người dùng cơ sở dữ liệu và tên cơ sở dữ liệu. Bạn có thể ghi đè tên người dùng bằng cách sử dụng -U someotherusername và kết nối với cơ sở dữ liệu khác bằng cách thêm tên DB đó vào dòng lệnh, chẳng hạn như psql someotherdbname. Bạn cũng có thể tìm thấy psql -l hữu ích để liệt kê các cơ sở dữ liệu hiện có.

+1

Bạn không không nhất thiết cần một cơ sở dữ liệu cho người dùng đó. Cơ sở dữ liệu có thể được xác định khi bắt đầu psql: 'psql db_name' –

+0

Tôi đã thêm một chỉnh sửa để làm rõ điều đó. Tuy nhiên, trong hầu hết các trường hợp, bạn sẽ muốn gọi 'psql' không có tham số để" chỉ làm việc ", vì vậy đó là câu trả lời của tôi tập trung vào. – niko

+0

Hi, Thank cho câu trả lời của bạn, – whiplash

5
sudo -u postgres createuser user 

có thể giúp bạn tạo một người dùng mới với tất cả các đặc quyền của postgres

0

Trong cửa sổ 10 này làm việc cho tốt

pg_restore --format = c --verbose --no-chủ sở hữu --no-privileits --dbname = MYDB - tên người dùng = postgres --no-password --jobs = 8 F: /MYBK.backup

--username = (role) và --no-password là necesaries

Các vấn đề liên quan