Tôi quên mật khẩu tôi đã nhập trong quá trình cài đặt postgres


205

Tôi đã quên hoặc nhập sai (trong quá trình cài đặt) mật khẩu cho người dùng mặc định của Postgres. Tôi dường như không thể chạy nó và tôi gặp lỗi sau:

psql: FATAL:  password authentication failed for user "hisham"
hisham-agil: hisham$ psql 

Có cách nào để thiết lập lại mật khẩu hoặc làm cách nào để tạo một người dùng mới với các đặc quyền siêu người dùng?

Tôi mới sử dụng Postgres và mới cài đặt lần đầu tiên. Tôi đang cố gắng sử dụng nó với Rails và tôi đang chạy Mac OS X Lion.


1
Tôi không thể nhận xét về câu trả lời nào, vì vậy phải làm theo cách này. Tôi đã làm những gì SaiyanGirl nói, tuy nhiên tôi vẫn cần nhập mật khẩu, đó là 'postgres' để đăng nhập, sau đó tôi có thể đặt lại mật khẩu
Pascale

Câu trả lời:


359
  1. tìm tập tin pg_hba.conf- nó có thể được định vị, ví dụ như trong /etc/postgresql-9.1/pg_hba.conf.

    cd /etc/postgresql-9.1/

  2. Sao lưu nó

    cp pg_hba.conf pg_hba.conf-backup

  3. đặt dòng sau (là dòng không bị thiếu đầu tiên hoặc là dòng duy nhất):

Đối với tất cả các lần xuất hiện bên dưới (cục bộ và máy chủ lưu trữ), phần sao chép ngoại lệ nếu bạn không có bất kỳ thay đổi nào như sau, không nên sử dụng tính năng MD5 hoặc ngang hàng.

local  all   all   trust
  1. khởi động lại máy chủ PostgreSQL của bạn (ví dụ: trên Linux :)

    sudo /etc/init.d/postgresql restart

    Nếu dịch vụ (daemon) không bắt đầu báo cáo trong tệp nhật ký:

    kết nối cục bộ không được hỗ trợ bởi bản dựng này

    bạn nên thay đổi

    local all all trust

    đến

    host all all 127.0.0.1/32 trust

  2. bây giờ bạn có thể kết nối như bất kỳ người dùng nào. Kết nối dưới dạng siêu người dùng postgres(lưu ý, tên siêu người dùng có thể khác trong cài đặt của bạn. pgsqlVí dụ, trong một số hệ thống, nó được gọi . )

    psql -U postgres

    hoặc là

    psql -h 127.0.0.1 -U postgres

    (lưu ý rằng với lệnh đầu tiên, bạn sẽ không luôn luôn được kết nối với máy chủ cục bộ)

  3. Đặt lại mật khẩu ('thay thế my_user_name bằng postgres vì bạn đang đặt lại người dùng postgres )

    ALTER USER my_user_name with password 'my_secure_password';

  4. Khôi phục cái cũ pg_hba.confvì nó rất nguy hiểm để giữ xung quanh

    cp pg_hba.conf-backup pg_hba.conf

  5. khởi động lại máy chủ, để chạy an toàn pg_hba.conf

    sudo /etc/init.d/postgresql restart

Đọc thêm về tệp pg_hba đó: http://www.postgresql.org/docs/9.1/static/auth-pg-hba-conf.html


9
Rồi bắt đầu psql? Tôi vẫn đang được nhắc nhập mật khẩu và tôi không biết nó
CodyBugstein

4
Câu trả lời này KHÔNG có tác dụng với tôi, sau khi tôi thực hiện bước 3, dịch vụ đã thắng Bắt đầu, tôi không biết, có thể nó là hệ điều hành (W8), nó chỉ thắng đượctet.
Scaramouche

3
có ai cho Windows không?
Mahesha999

2
Hãy ghi nhớ thứ tự các mục trong pg_hba.conf là quan trọng. Nếu bạn thêm "cục bộ tất cả niềm tin" vào cuối tệp, nó sẽ không hoạt động như bạn mong đợi, vì các bản ghi trước sẽ được khớp trước. Vì vậy, đặt nó ở đầu tập tin để có những gì bạn mong đợi.
Tagar

6
Nếu bạn đang ở trên cửa sổ có lỗi này, hãy tiếp tục cuộn đến câu trả lời của @SaiyanGirl. Chỉ cần sửa đổi các cột METHOD của các mục hiện có thành 'tin cậy', sau đó thay đổi lại khi bạn hoàn thành
sean.hudson

99

Khi kết nối với postgres từ dòng lệnh, đừng quên thêm -h localhostdưới dạng tham số dòng lệnh. Nếu không, postgres sẽ cố gắng kết nối bằng chế độ xác thực PEER.

Dưới đây cho thấy việc thiết lập lại mật khẩu, đăng nhập thất bại với xác thực PEER và đăng nhập thành công bằng kết nối TCP.

# sudo -u postgres psql
could not change directory to "/root"
psql (9.1.11)
Type "help" for help.

postgres=# \password
Enter new password:
Enter it again:
postgres=# \q

Không:

# psql -U postgres -W
Password for user postgres:
psql: FATAL:  Peer authentication failed for user "postgres"

Làm việc với -h localhost:

# psql -U postgres -W  -h localhost
Password for user postgres:
psql (9.1.11)
SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256)
Type "help" for help.

postgres=#

7
Cảm ơn các mẹo liên quan đến tùy chọn "-h", đã giúp tôi.
Bunkerbewohner

Không cần thiết trên Windows cmd.exe
Fabien Haddadi

1
Câu trả lời hay nhất cho mac
Muhammad Umar

72

Tệp pg_hba.conf( C:\Program Files\PostgreSQL\9.3\data) đã thay đổi kể từ khi những câu trả lời này được đưa ra. Điều làm việc cho tôi, trong Windows, là mở tệp và thay đổi METHODtừ md5thành trust:

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128                 trust

Sau đó, bằng cách sử dụng pgAdmin III, tôi đã đăng nhập bằng cách không sử dụng mật khẩu và thay đổi postgres'mật khẩu người dùng bằng cách đi đếnFile -> Change Password


Điều này không hoạt động vì PGAdmin vẫn yêu cầu mật khẩu hiện tại ... Tôi đặt lại thành 'tin tưởng' và khởi động lại PGAdmin. Vẫn không thể thiết lập lại mà không cần nhập mật khẩu HIỆN TẠI ...
gen b.

1
Khi bạn thay đổi phương thức, trustbạn có thể làm theo điều này và thay đổi mật khẩu trong cmd
Gilad Green

12

Chỉ cần một lưu ý, trên Linux Bạn có thể chỉ cần chạy sudo su - postgresđể trở thành người dùng postgres và từ đó thay đổi những gì cần thiết khi sử dụng psql.


3
bạn vẫn cần mật khẩu sau khi chạy psql
Snow

8
  1. Chỉnh sửa tập tin /etc/postgresql/<version>/main/pg_hba.confvà tìm dòng sau:

    local   all             postgres                                md5
  2. Chỉnh sửa dòng và thay đổi md5ở cuối trustvà lưu tệp

  3. Tải lại dịch vụ postgresql

    $ sudo service postgresql reload
  4. Điều này sẽ tải các tập tin cấu hình. Bây giờ bạn có thể sửa đổi postgresngười dùng bằng cách đăng nhập vào trình psqlbao

    $ psql -U postgres
  5. Cập nhật postgresmật khẩu người dùng

    alter user postgres with password 'secure-passwd-here';
  6. Chỉnh sửa tệp /etc/postgresql/<version>/main/pg_hba.confvà thay đổi trusttrở lại md5và lưu tệp

  7. Tải lại dịch vụ postgresql

    $ sudo service postgresql reload
  8. Xác minh rằng thay đổi mật khẩu đang hoạt động

    $ psql -U postgres -W

Có quá khó để đưa ra một giải pháp Windows? Không phải ai cũng sử dụng Linux với sudo. Làm thế nào tôi có thể làm điều đó trên Windows ??
gen b.

7

Tôi chỉ gặp vấn đề này trên Windows 10 và vấn đề trong trường hợp của tôi là tôi chỉ đang chạy psqlvà mặc định là đã cố gắng đăng nhập bằng tên người dùng Windows của tôi ("Nathan"), nhưng không có người dùng PostgreQuery nào có tên đó, và nó đã không nói với tôi điều đó.

Vì vậy, giải pháp là chạy psql -U postgreschứ không chỉ psql, và sau đó mật khẩu tôi nhập lúc cài đặt đã hoạt động.


5

Thêm câu trả lời cho Người dùng Windows cho phiên bản postgres mới nhất (> 10),

Đi đến vị trí cài đặt postgres của bạn và tìm kiếm pg_hba.conf, bạn sẽ tìm thấy nó trong..\postgres\data\pg_hba.conf

Mở tệp đó bằng notepad, tìm dòng này,

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# IPv4 local connections: 
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5
#..

Thay đổi phương thức từ md5 sang tin tưởng,

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# IPv4 local connections: 
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128                 trust
# ...

Bây giờ hãy truy cập SQL Shell của bạn (PSQL) và để trống mọi thứ,

Server [localhost]:
Database [postgres]:
Port [8000]:
Username [postgres]: 

Nó sẽ không yêu cầu mật khẩu lần này và bạn sẽ đăng nhập,

Bây giờ chạy dòng này, ALTER USER yourusername WITH SUPERUSER

Bây giờ bạn có thể rời khỏi vỏ với \ q

Một lần nữa hãy truy cập tệp pg_hba.conf và thay đổi METHOD từ tin cậy sang md5 một lần nữa và lưu nó.

Bây giờ hãy đăng nhập với người dùng và mật khẩu mới của bạn và bạn có thể kiểm tra \ du cho các thuộc tính của nó.


1

Để cài đặt Windows, một người dùng Windows được tạo. Và "psql" sử dụng người dùng này để kết nối với cổng. Nếu bạn thay đổi mật khẩu người dùng PostgreSQL, nó sẽ không thay đổi mật khẩu Windows. Dòng lệnh juste dưới đây chỉ hoạt động nếu bạn có quyền truy cập vào dòng lệnh.

Thay vào đó, bạn có thể sử dụng ứng dụng GUI của Windows "c: \ Windows \ system32 \ lusrmgr.exe". Ứng dụng này quản lý người dùng được tạo bởi Windows. Vì vậy, bây giờ bạn có thể sửa đổi mật khẩu.


1

Những gì tôi đã làm để giải quyết vấn đề tương tự là:

Mở tệp pg_hba.conf bằng trình chỉnh sửa gedit từ thiết bị đầu cuối:

sudo gedit /etc/postgresql/9.5/main/pg_hba.conf

Nó sẽ hỏi mật khẩu. Nhập mật khẩu đăng nhập quản trị viên của bạn. Điều này sẽ mở gedit với các tập tin. Dán dòng sau:

host  all   all  127.0.0.1/32  trust

chỉ dưới đây -

# Database administrative login by Unix domain socket

Lưu và đóng nó. Đóng thiết bị đầu cuối và mở lại và chạy lệnh này:

psql -U postgres

Bây giờ bạn sẽ vào bảng điều khiển psql. Bây giờ thay đổi mật khẩu bằng cách nhập này:

ALTER USER [your prefered user name] with password '[desired password]';

Nếu nó nói người dùng không tồn tại thì thay vì ALTERsử dụng CREATE.

Cuối cùng, xóa dòng nhất định mà bạn đã dán trong pg_hba và lưu nó.


0

Nếu bạn đang ở trong windows, bạn có thể chạy

net user postgres postgres

và đăng nhập vào postgres với postgres / postgres là người dùng / mật khẩu


0

Tệp .pgpass trong thư mục chính của người dùng hoặc tệp được tham chiếu bởi PGPASSFILE có thể chứa mật khẩu được sử dụng nếu kết nối yêu cầu mật khẩu (và không có mật khẩu nào được chỉ định khác). Trên Microsoft Windows, tệp được đặt tên% APPDATA% \ postgresql \ pgpass.conf (trong đó% APPDATA% đề cập đến thư mục con Dữ liệu ứng dụng trong hồ sơ người dùng).

Tập tin này nên chứa các dòng có định dạng sau:

tên máy chủ: cổng: cơ sở dữ liệu: tên người dùng: mật khẩu

(Bạn có thể thêm nhận xét nhắc nhở vào tệp bằng cách sao chép dòng ở trên và trước nó bằng #.) Mỗi ​​trường trong bốn trường đầu tiên có thể là một giá trị bằng chữ, hoặc *, khớp với mọi thứ. Trường mật khẩu từ dòng đầu tiên phù hợp với các tham số kết nối hiện tại sẽ được sử dụng. (Do đó, hãy đặt các mục cụ thể hơn trước khi bạn sử dụng ký tự đại diện.) Nếu một mục cần chứa: hoặc \, hãy thoát ký tự này bằng. Tên máy chủ của localhost khớp với cả kết nối TCP (tên máy chủ localhost) và ổ cắm tên miền Unix (pghost trống hoặc thư mục ổ cắm mặc định) đến từ máy cục bộ. Trong máy chủ dự phòng, tên cơ sở dữ liệu sao chép khớp với các kết nối sao chép phát trực tuyến được thực hiện cho máy chủ chính. Trường cơ sở dữ liệu có ích hữu hạn vì người dùng có cùng mật khẩu cho tất cả các cơ sở dữ liệu trong cùng một cụm.

Trên các hệ thống Unix, các quyền trên .pgpass phải không cho phép mọi quyền truy cập vào thế giới hoặc nhóm; đạt được điều này bằng lệnh chmod 0600 ~ / .pgpass. Nếu các quyền ít nghiêm ngặt hơn mức này, tệp sẽ bị bỏ qua. Trên Microsoft Windows, giả định rằng tệp được lưu trữ trong một thư mục an toàn, do đó không có kiểm tra quyền đặc biệt nào được thực hiện.


Điều này làm việc cho tôi, nơi đường dẫn được mở rộng thành C: \ Users \ <user> \ AppData \ Roaming \ postgresql \ pgpass.conf. Ngoài ra, tắt và trên máy chủ PostgreSQL dường như có ích.
geodata

0

Nếu bạn đang chạy postgresql trên mac os, hãy thử những điều sau:

  1. Chỉnh sửa tệp pg_hba.conf

  2. sudo vi / Thư viện / PostgreQuery/9.2 / data / pg_hba.conf

  3. Thay đổi phương thức "md5" để tất cả người dùng "tin tưởng" ở gần cuối tệp

  4. Tìm tên của dịch vụ

  5. ls / Thư viện / LaunchDaemons

  6. Tìm kiếm postgresql

  7. Dừng dịch vụ postgresql

  8. sudo launchctl dừng com.edb.launchd.postgresql-9.2

  9. Bắt đầu dịch vụ postgresql

  10. khởi động sudo bắt đầu com.edb.launchd.postgresql-9.2

  11. Bắt đầu phiên psql dưới dạng postgres

  12. postgres psql

  13. (không nên hỏi mật khẩu vì cài đặt 'tin cậy')

  14. Đặt lại mật khẩu trong phiên psql bằng cách gõ

  15. THAY ĐỔI NGƯỜI DÙNG postgres với mật khẩu 'an toàn-mật khẩu mới';

  16. \ q
  17. đi vào

  18. Chỉnh sửa tệp pg_hba.conf

  19. Chuyển nó trở lại 'md5'

  20. Khởi động lại dịch vụ


-1

Đây là những gì làm việc cho tôi trên windows:

Chỉnh sửa tệp pg_hba.conf định vị tại C: \ Program Files \ PostgreQuery \ 9.3 \ data.

# IPv4 local connections: host all all 127.0.0.1/32 trust

Thay đổi phương thức từ tin cậy thành md5 và khởi động lại dịch vụ postgres trên windows.

Sau đó, bạn có thể đăng nhập bằng người dùng postgres mà không cần mật khẩu bằng cách sử dụng pgadmin. Bạn có thể thay đổi mật khẩu bằng File-> Thay đổi mật khẩu.

Nếu người dùng postgres không có đặc quyền siêu người dùng, thì bạn không thể thay đổi mật khẩu. Trong trường hợp này, đăng nhập với người dùng khác (pssql) với quyền truy cập siêu người dùng và cung cấp đặc quyền cho người dùng khác bằng cách nhấp chuột phải vào người dùng và chọn thuộc tính-> Đặc quyền vai trò.

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.