
我的問題
我可以設定使用者(例如postgres
:)的權限,以便該使用者只能從 TCP 本機登入,而無法從 Internet 登入嗎?
受信任的套接字與遠端密碼
我知道您可以初始化 postgres 以允許本地用戶無需密碼登錄,並允許遠端主機使用密碼登入:
initdb \
-D "$POSTGRES_DATA_DIR/" \
--username postgres --pwfile "$PWFILE" \
--auth-local=trust --auth-host=password
內部網路與互聯網
對於任何透過網路連接的系統,我希望使用具有非常非常強(不可記憶)隨機 128 位元字串的使用者。
然而,對於本地和 Intranet 訪問,我希望能夠擁有一個我可以記住(和輸入)的用戶名和密碼。
我可以這樣做嗎...還是我只需為每個允許連接的系統設定一個用戶,.pgpass
每個系統上都有一個?
(我不想在計算機之間共享明文文件中的密鑰)
答案1
您沒有提供有關您的 PostgreSQL 版本的任何信息,我假設您使用的是 PostgreSQL 12。
我可以設定使用者(例如:postgres)的權限,以便該使用者只能從 TCP 本地主機登錄,而不能從 Internet 登入嗎?
是的,使用pg_hba.conf
。您可能想先透過以下方式載入此內容hba_file
運行時配置。
然而,對於本地和 Intranet 訪問,我希望能夠擁有一個我可以記住(和輸入)的用戶名和密碼。
如果您想新增受密碼保護的僅限本機用戶,請新增
local <database_name> <local-only_user_name> scram-sha-256
在你的pg_hba.conf
。
您可能想先透過以下方式建立使用者CREATE ROLE
:
CREATE ROLE username LOGIN ENCRYPTED PASSWORD 'insert-your-password-here';
您可能還需要檢查host
並hostssl
記錄要新增至您的條目pg_hba.conf
以設定基於 Intranet 和 Internet 的身份驗證。
檢查連結文件以獲取更多資訊。