Quên mật khẩu Windows PostgreSQL


31

Sáng nay tôi đã cố gắng kết nối cơ sở dữ liệu PostgreSQL trên máy tính để bàn Windows 7 Professional của tôi.

Giá trị mặc định là 'postgres', nhưng chắc chắn tôi đã quên mật khẩu tôi đã sử dụng khi cài đặt ban đầu.

Tôi đã googled và tìm thấy một bài viết liên quan đến việc đặt lại mật khẩu của bạn. Tôi đã làm theo các bước, nhưng kết quả cuối cùng là một chút khác nhau sau đó được đề cập trong bài viết. Tôi đã sử dụng

net user postgres postgres

để đặt lại mật khẩu cho cơ sở dữ liệu của tôi nhưng thay vì thông báo thành công tôi đang nhận được:

"Lỗi hệ thống 5 đã xảy ra. Truy cập bị từ chối."

lỗi hệ thống. Làm cách nào để tránh lỗi này và đặt lại mật khẩu?

Câu trả lời:


33

(Lưu ý: Không có nhiều nội dung này liên quan đến người đọc sử dụng PostgreSQL 9.2 trở lên từ trình cài đặt EDB, hiện có cài đặt mặc định được đơn giản hóa rất nhiều bằng cách sử dụng NETWORK SERVICE, mặc dù bạn vẫn có thể định cấu hình các tài khoản khác) .


Tôi đã sử dụng net user postgres postgres để đặt lại mật khẩu cho cơ sở dữ liệu của mình nhưng thay vì thông báo thành công tôi đang nhận được"System error 5 has occurred. Access is denied."

Bạn đã đặt lại (hoặc cố gắng đặt lại) mật khẩu tài khoản dịch vụ. PostgreQuery sẽ không chạy với tư cách Quản trị viên vì lý do bảo mật và trình cài đặt thường thiết lập nó với tài khoản người dùng "postgres" trong PostgreQuery 9.1 trở lên 1 . Trên Windows, bạn không thể bắt đầu dịch vụ với tư cách là người dùng mà không lưu mật khẩu của người dùng trong sổ đăng ký, vì vậy đó là những gì trình cài đặt làm.

Nếu bạn thay đổi mật khẩu cho tài khoản người dùng Windows postgres, dịch vụ PostgreSQL không còn có thể bắt đầu. Vì vậy, đừng làm vậy, bạn sẽ phải sửa cấu hình dịch vụ để lưu mật khẩu đã cập nhật.

Rất may tôi nghĩ rằng một sai lầm khác ngăn cản bạn làm điều đó. Có vẻ như bạn có thể đang chạy dấu nhắc lệnh của mình mà không sử dụng "Chạy với tư cách quản trị viên" trên tài khoản người dùng Windows không có đặc quyền hoặc máy có UAC, do đó, nó không chạy với quyền truy cập cần thiết để thay đổi mật khẩu cho postgresngười dùng.

Trước khi bạn cố gắng thay đổi mật khẩu đó, hãy đảm bảo đó thực sự là những gì bạn muốn làm. Vấn đề bạn đang cố gắng giải quyết ở đây là gì? Bạn đang cố gắng cài đặt bản cập nhật cơ sở dữ liệu hay thứ gì khác đang yêu cầu mật khẩu cho postgresngười dùng Windows?

Nhiều khả năng bạn chỉ đang cố gắng đăng nhập vào cơ sở dữ liệu. Vì vậy, bạn sử dụng mật khẩu (không may hoàn toàn không liên quan) được lưu trữ trong cơ sở dữ liệu. Vì bạn đã mất / quên nên bạn sẽ phải đặt lại:

  • Tìm của bạn pg_hba.conf, thường là trongC:\Program Files\PostgreSQL\9.1\data\pg_hba.conf
  • Nếu cần thiết, hãy đặt quyền trên đó để bạn có thể sửa đổi nó; tài khoản người dùng của bạn có thể không thể làm như vậy cho đến khi bạn sử dụng tab bảo mật trong hộp thoại thuộc tính để cung cấp cho mình quyền đó bằng cách sử dụng ghi đè quản trị viên. Thay phiên, tìm notepad / notepad ++ trong menu bắt đầu của bạn, nhấp chuột phải, chọn "Chạy với tư cách quản trị viên", sau đó sử dụng Tệp-> Mở để mở pg_hba.conftheo cách đó.
  • Chỉnh sửa nó để đặt dòng "máy chủ" cho người dùng "postgres" trên máy chủ "127.0.0.1 / 32" thành "tin cậy". Bạn có thể thêm dòng nếu nó không có ở đó; chỉ cần chèn:

    host all postgres 127.0.0.1/32 trust
    host all postgres ::1/128      trust # if IPv6 is in use
    

    trước bất kỳ dòng nào khác. (Bạn có thể bỏ qua ý kiến, dòng bắt đầu bằng #).

  • Khởi động lại dịch vụ PostgreSQL từ bảng điều khiển Dịch vụ (bắt đầu-> chạy-> services.msc)

  • kết nối bằng psql hoặc PGAdmin-III hoặc bất cứ điều gì bạn thích
  • ALTER USER postgres PASSWORD 'postgres'
  • xóa dòng bạn đã thêm pg_hba.confhoặc thay đổi lại
  • khởi động lại PostgreSQL một lần nữa.

Xem: Làm cách nào để đặt lại mật khẩu postgres cho PostgreSQL trên Windows?


1. 9.2 hiện sử dụng NETWORKSERVICEtài khoản không yêu cầu mật khẩu, vì vậy vấn đề này không còn nữa .


8
Bạn cũng có thể cần một mục nhập ip6: "lưu trữ tất cả các postgres :: 1/128 tin tưởng"
Ted Elliott

Vẫn giúp tôi thoát khỏi rắc rối với postreQuery 9.6 trên máy dev của tôi. Không chắc chắn lý do tại sao mọi người nghĩ rằng nó không giúp> 9,2
tourdownunder

@darwindave Phụ thuộc vào cài đặt của bạn. Nếu bạn đã cài đặt để sử NETWORKSERVICEdụng tài khoản người dùng, sẽ không có mật khẩu tài khoản dịch vụ. Nếu bạn đã cài đặt để sử dụng tài khoản dịch vụ chuyên dụng như postgreshoặc tài khoản miền thì có thể giúp ích.
Craig Ringer

Bạn có thể cập nhật câu trả lời này với 9.2+ hiển thị cả hai phương pháp cho Windows không?
Evan Carroll

1
@EvanCarroll Nếu bạn đang sử dụng NETWORK SERVICEkhông có mật khẩu để đặt lại. Nếu bạn đã cài đặt trên 9.2+ bằng một tài khoản khác, thông tin tương tự sẽ được áp dụng. Và không có thay đổi nào đối với việc đặt lại mật khẩu tài khoản cơ sở dữ liệu siêu người dùng postgres . Vì vậy, thực sự không có bất kỳ thay đổi cần thiết.
Craig Ringer

3

Bạn cần phân biệt giữa người dùng hệ thống (Windows) của bạn được gọi là "postgres" và người dùng cơ sở dữ liệu có cùng tên.

Tìm tệp pg_hba.conf của bạn - điều này kiểm soát quyền truy cập vào máy chủ PostgreSQL. Bạn sẽ cần chỉnh sửa nó như một người dùng có quyền Quản trị viên. Tìm các dòng có đề cập đến "postgres" của người dùng và tạm thời đặt chế độ thành "tin cậy". Khởi động lại postgresql và sau đó bạn sẽ có thể kết nối mà không cần mật khẩu. Đặt lại mật khẩu, sau đó khôi phục tệp về cài đặt gốc và khởi động lại PostgreSQL.

Hướng dẫn có chi tiết về các phương thức xác thực và tệp pg_hba.conf .


0

Nếu bất cứ ai khác gặp phải vấn đề này, trong khi sử dụng pgAdmin, tôi khuyên bạn nên xem xét điều này: http : //www.homebrewandt Technology.com/blog/graphicalchangepostgresadminpassword


3
Bạn có thể muốn thêm các điểm nổi bật của bài viết mà bạn liên kết trực tiếp vào bài đăng của mình, nếu không câu trả lời này sẽ trở nên vô dụng khi (không nếu ) liên kết bị cũ.
mustaccio
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.