Cách đặt mật khẩu người dùng postgresql trong tập lệnh bash


12

Tôi muốn đặt mật khẩu cho người dùng máy chủ Postgresql mặc định , postgres. Tôi đã làm điều đó bằng cách sử dụng:

sudo -u postgres psql
# \password postgres

Tôi muốn thực hiện bước này trong nhiều máy, vì vậy tôi muốn tạo một bashkịch bản để làm tương tự. Làm thế nào để thực hiện điều này trong bash?


Nâng cao câu hỏi: Nhiều câu hỏi về Server Fault có thể được học từ tài liệu, sách, trang web ... Người đã đánh giá thấp bạn sẽ không dạy bạn sử dụng manlệnh. Hãy chắc chắn để thử man psqltrong tương lai.

Câu trả lời:


9

Theo tài liệu, bạn có thể chạy các lệnh meta thông qua --commandtùy chọn.

sudo -u postgres psql --command '\password postgres'

Các trích dẫn duy nhất đảm bảo rằng shell không coi dấu gạch chéo ngược là ký tự thoát.


Cảm ơn, tôi chỉ làm như vậy, nhưng với một sự khác biệt nhỏ : sudo -u postgres psql --command "\password". Tự hỏi, tại sao câu hỏi của tôi đã bị hạ thấp.
saji89

@ saji89: Đó không phải là downvote của tôi, nhưng tôi đoán bởi vì điều này có thể dễ dàng học được bằng cách đọc tài liệu.
Sven

@ saji89 Khi bạn sử dụng dấu ngoặc kép, shell xử lý dấu gạch chéo ngược như một ký tự thoát, tức là một hướng dẫn để coi ký tự tiếp theo là một ký tự chứ không phải là một ký tự đặc biệt. Để có được một dấu gạch chéo ngược theo nghĩa đen bên trong hai lần, bạn phải sử dụng "\\...".
Ansgar Wiechers

@AnsgarWiechers, Cảm ơn vì sự điều chỉnh đó. Nhưng phần buồn cười là dòng đó đang làm việc cho tôi. Từ những gì tôi đọc được tại gnu.org/software/bash/manual/html_node/Double-Quotes.html Nó nói: The backslash retains its special meaning only when followed by one of the following characters: ‘$’, ‘`’, ‘"’, ‘\’, or newline.Tôi nghĩ đó là lý do tại sao "\password"hoạt động tốt.
saji89

22

Thay vì sử dụng \passwordlệnh psql , dự kiến ​​một thiết bị đầu cuối tương tác, bạn có thể sử dụng:

ALTER USER postgres WITH PASSWORD 'newpassword';

Nói, thông qua một psql -clệnh:

sudo -u postgres psql -c "ALTER USER postgres WITH PASSWORD 'newpassword';"

VỚI, không phải SET (15 ký tự)
ChocoDeveloper
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.