Các câu trả lời khác không hoàn toàn làm tôi hài lòng. Đây là những gì hoạt động cho postgresql-9.1 trên Xubuntu 12.04.1 LTS.
-
Kết nối với cơ sở dữ liệu mặc định với postgres của người dùng:
sudo -u postgres psql template1
-
Đặt mật khẩu cho postgres của người dùng, sau đó thoát psql (Ctrl-D):
ALTER USER postgres với mật khẩu được mã hóa 'xxxxxxx';
-
Chỉnh sửa
pg_hba.conf
tệp:sudo vim /etc/postgresql/9.1/main/pg_hba.conf
và thay đổi "peer" thành "md5" trên dòng liên quan đến postgres:
cục bộ tất cả postgres
ngang hàngmd5Để biết bạn đang chạy phiên bản postgresql nào, hãy tìm thư mục phiên bản trong
/etc/postgresql
. Ngoài ra, bạn có thể sử dụng Nano hoặc trình soạn thảo khác thay vì VIM. -
Khởi động lại cơ sở dữ liệu:
sudo /etc/init.d/postgresql khởi động lại
(Tại đây bạn có thể kiểm tra xem nó có hoạt động với
psql -U postgres
không ). -
Tạo người dùng có cùng tên với bạn (để tìm tên này, bạn có thể nhập
whoami
):sudo createuser -U postgres -d -e -E -l -P -r -s
<my_name>
Các tùy chọn yêu cầu postgresql tạo người dùng có thể đăng nhập, tạo cơ sở dữ liệu, tạo vai trò mới, là siêu người dùng và sẽ có mật khẩu được mã hóa. Những cái thực sự quan trọng là -P -E, để bạn được yêu cầu nhập mật khẩu sẽ được mã hóa và -d để bạn có thể thực hiện
createdb
.Cẩn thận với mật khẩu :trước tiên nó sẽ hỏi bạn hai lần mật khẩu mới (cho người dùng mới), lặp lại, sau đó lặp lại một lần mật khẩu postgres (mật khẩu được chỉ định ở bước 2).
-
Một lần nữa, hãy chỉnh sửa
pg_hba.conf
(xem bước 3 ở trên) và thay đổi "peer" thành "md5" trên dòng liên quan đến "tất cả" người dùng khác:cục bộ tất cả tất cả
ngang hàngmd5 -
Khởi động lại (như ở bước 4) và kiểm tra xem bạn có thể đăng nhập mà không cần -U postgres:
psql mẫu1
Lưu ý rằng nếu bạn chỉ làm một
psql
, nó sẽ không thành công vì nó sẽ cố gắng kết nối bạn với cơ sở dữ liệu mặc định có cùng tên với bạn (tức làwhoami
). template1 là cơ sở dữ liệu quản trị ở đây ngay từ đầu. -
Bây giờ
createdb <dbname>
sẽ hoạt động.