Tên người dùng / mật khẩu siêu người dùng mặc định cho postgres sau khi cài đặt mới là gì?


380

Tôi vừa cài đặt postgres 8.4 trên Ubuntu 9.10 và nó chưa bao giờ yêu cầu tôi tạo siêu người dùng. Có một siêu người dùng mặc định và mật khẩu của nó? Nếu không, làm thế nào để tôi tạo một cái mới?


Câu trả lời:


534

THẬN TRỌNG Câu trả lời về việc thay đổi mật khẩu UNIX cho "postgres" thông qua "$ sudo passwd postgres" không được ưa thích và thậm chí có thể NGUY HIỂM !

Đây là lý do: Theo mặc định, tài khoản UNIX "postgres" bị khóa, có nghĩa là nó không thể đăng nhập bằng mật khẩu. Nếu bạn sử dụng "sudo passwd postgres", tài khoản sẽ được mở khóa ngay lập tức. Tồi tệ hơn, nếu bạn đặt mật khẩu thành một thứ gì đó yếu, như "postgres", thì bạn sẽ gặp nguy hiểm về bảo mật. Ví dụ, có một số bot ngoài đó đang thử kết hợp tên người dùng / mật khẩu "postgres / postgres" để đăng nhập vào hệ thống UNIX của bạn.

Những gì bạn nên làm là làm theo câu trả lời của Chris James :

sudo -u postgres psql postgres

# \password postgres

Enter new password: 

Để giải thích một chút. Thường có hai cách mặc định để đăng nhập vào máy chủ PostgreSQL:

  1. Bằng cách chạy lệnh "psql" với tư cách là người dùng UNIX (được gọi là xác thực IDENT / PEER), vd : sudo -u postgres psql. Lưu ý rằng sudo -uKHÔNG mở khóa người dùng UNIX.

  2. bằng kết nối TCP / IP bằng tên người dùng / mật khẩu được quản lý riêng của PostgreQuery (được gọi là xác thực TCP) (nghĩa là KHÔNG phải mật khẩu UNIX).

Vì vậy, bạn không bao giờ muốn đặt mật khẩu cho "postgres" của tài khoản UNIX. Để nó bị khóa như mặc định.

Tất nhiên mọi thứ có thể thay đổi nếu bạn định cấu hình nó khác với cài đặt mặc định. Ví dụ: người ta có thể đồng bộ mật khẩu PostgreSQL với mật khẩu UNIX và chỉ cho phép đăng nhập cục bộ. Điều đó sẽ vượt quá phạm vi của câu hỏi này.


11
Vì vậy, làm thế nào để bạn khóa người dùng trở lại?
ultrajohn

3
@ultrajohn - tùy thuộc vào phân phối bạn sử dụng, nhưng bạn có thể chỉnh sửa / etc / passwd và đặt * thay vì mật khẩu
lzap

3
/etc/shadowlà nơi giữ mật khẩu @lzap.
Gringo Suave

2
Đúng, bạn có thể đặt / sbin / nologin trong / etc / passwd hoặc đặt * thay vì mật khẩu trong / etc / bóng.
lzap

34
passwd - khóa postgres
Stéphane

166

Nhập vào dòng lệnh:

$ sudo -u postgres psql postgres
postgres=# \password postgres

Bạn sẽ thấy:

Enter new password: 
Enter it again:

7
Đây là những gì cần thiết để sử dụng một công cụ như pgadminIII (khi thiết lập hồ sơ máy chủ) ngay sau khi chính Postgres được cài đặt. Cảm ơn!
limist

64

Bạn thao tác postgres thông qua người dùng postgres, như vậy:

# su - postgres
$ createdb mydb
$ psql -s mydb
# create user someuser password 'somepassword';
# GRANT ALL PRIVILEGES ON DATABASE mydb TO someuser;

5
@ThierryLam Bạn phải root cho sungười dùng postgres mà không cần nhập mật khẩu. Trên hầu hết các hệ thống, tài khoản Unix Postgres bị khóa (không có mật khẩu sẽ hoạt động), điều đó có nghĩa là chỉ có thể root sucho tài khoản đó.
voretaq7

2
Sử dụng sudothay vì su.
Revierpost

8
Tôi phải chạy sudo su - postgres: \
Jim Schubert

3
@Jim Schubert: bạn cũng có thể chạy sudo -u postgres.
Revierpost

1
sudo -u postgres psql - cũng hoạt động để bạn có thể làm điều đó trong một bước.
Ominus

21

Trong Windows, hãy làm như sau (QUAN TRỌNG: Sử dụng tài khoản quản trị viên Windows ):

  1. Sau khi cài đặt, mở <PostgreSQL PATH>\data\pg_hba.conf.

  2. Sửa đổi hai dòng này và thay đổi "md5" thành "tin cậy":

    host all all 127.0.0.1/32 md5

    host all all ::1/128 md5

  3. Khởi động lại dịch vụ PostgreSQL (có thể không cần thiết).

  4. (Tùy chọn) Mở dấu nhắc lệnh và thay đổi trang mã thành 1252:

    cmd.exe /c chcp 1252

  5. Đăng nhập vào PostgreSQL. Sẽ không cần mật khẩu (chú ý tham số chữ hoa -U):

    psql -U postgres

  6. (Tùy chọn, được khuyến nghị vì lý do bảo mật) Thay đổi postgresmật khẩu của người dùng:

    \password postgres

    và thay đổi "niềm tin" trở lại "md5" pg_hba.conf.


5

Nếu bạn đang cố gắng truy cập shell PostgreSQL, bạn có thể nhập:

psql -U postgres my_database

my_databaseTên cơ sở dữ liệu của bạn ở đâu .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.