標籤:帳號密碼 密碼認證 oca Owner ase 最好 _id 資料 如何
問題:致命錯誤: 使用者 "postgres" Ident 認證失敗
說明:這個是由於沒有配置遠端存取且認證方式沒改造成的,只需要更改使用帳號密碼認證即可。
解決:找到pg_hba.conf(find / -name pg_hba.conf),METHOD的ident修改為md5,且把ip端改為0.0.0.0/0,或者想要的IP地址即可。修改完成後直接reload即可。
特別吐槽:網上說直接trust,其實這個意思是只驗證使用者名稱,不驗證密碼!千萬不要這樣使用!!!
METHOD指定如何處理用戶端的認證。常用的有ident,md5,password,trust,reject
ident是Linux下PostgreSQL預設的local認證方式,凡是能正確登入伺服器的作業系統使用者(註:不是資料庫使用者)就能使用本使用者映射的資料庫使用者不需密碼登入資料庫。使用者對應檔為pg_ident.conf,這個檔案記錄著與作業系統使用者匹配的資料庫使用者,如果某作業系統使用者在本檔案中沒有映射使用者,則預設的映射資料庫使用者與作業系統使用者同名。比如,伺服器上有名為user1的作業系統使用者,同時資料庫上也有同名的資料庫使用者,user1登入作業系統後可以直接輸入psql,以user1資料庫使用者身份登入資料庫且不需密碼。很多初學者都會遇到psql -U username登入資料庫卻出現“username ident 認證失敗”的錯誤,明明資料庫使用者已經createuser。原因就在於此,使用了ident認證方式,卻沒有同名的作業系統使用者或沒有相應的映射使用者。解決方案:1、在pg_ident.conf中添加映射使用者;2、改變認證方式。
md5是常用的密碼認證方式,如果你不使用ident,最好使用md5。密碼是以md5形式傳送給資料庫,較安全,且不需建立同名的作業系統使用者。
password是以純文字密碼傳送給資料庫,建議不要在生產環境中使用。
trust是只要知道資料庫使用者名稱就不要求輸入密碼或ident就能登入,建議不要在生產環境中使用。
reject是拒絕認證。
在檔案尋找 listen_addresses,他的值說明
如果希望只能從本機電腦訪問PostgreSQL資料庫,就將該項設定為‘localhost‘;
如果希望從區域網路訪問PostgreSQL資料庫,就將該項設定為PostgreSQL資料庫的區域網路IP地址;
如果希望從互連網訪問PostgreSQL資料庫,就將該項設定為PostgreSQL資料庫的互連網IP地址;
如果希望從任何地方都可以訪問PostgreSQL資料庫,就將該配置項設定為“*”;
建立使用者:
# 先建立資料庫使用者dbuserpostgres=# create user dbuser with password ‘密碼‘;# 建立系統使用者adduser dbuser# 修改系統使用者密碼passwd dbuser
修改dbuser的密碼:
# 切換使用者為postgresu postgres# 登入psql# 修改dbuser的密碼postgres=# alter user dbuser with password ‘自己的password‘;
# 或者
postgres=# \password dbuser
給dbuser分配資料庫許可權:
# 建立資料庫時分配postgres=# create database 資料庫名稱 owner dbuser;# 建立資料庫後賦予使用者postgres許可權postgres=# grant all privileges on database 資料庫名稱 to dbuser;
以dbuser的身份串連資料庫:
su dbuserpsql -d 資料庫名
參考:
46047483
http://www.ruanyifeng.com/blog/2013/12/getting_started_with_postgresql.html
PostgreSQL遠端連線組態管理/帳號密碼分配(解決:致命錯誤: 使用者 "postgres" Ident 認證失敗)