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?
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:
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:
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 -u
KHÔNG mở khóa người dùng UNIX.
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.
/etc/shadow
là nơi giữ mật khẩu @lzap.
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:
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;
su
ngườ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 su
cho tài khoản đó.
sudo
thay vì su
.
sudo su - postgres
: \
sudo -u postgres
.
Trong Windows, hãy làm như sau (QUAN TRỌNG: Sử dụng tài khoản quản trị viên Windows ):
Sau khi cài đặt, mở <PostgreSQL PATH>\data\pg_hba.conf
.
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
Khởi động lại dịch vụ PostgreSQL (có thể không cần thiết).
(Tùy chọn) Mở dấu nhắc lệnh và thay đổi trang mã thành 1252:
cmd.exe /c chcp 1252
Đăng nhập vào PostgreSQL. Sẽ không cần mật khẩu (chú ý tham số chữ hoa -U):
psql -U postgres
(Tùy chọn, được khuyến nghị vì lý do bảo mật) Thay đổi postgres
mật khẩu của người dùng:
\password postgres
và thay đổi "niềm tin" trở lại "md5" pg_hba.conf
.
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_database
Tên cơ sở dữ liệu của bạn ở đâu .