it-swarm.asia

إزالة متطلبات كلمة المرور ل postgres المستخدم

أنا أفهم أنه عند التثبيت ، ليس لدى PostgreSQL كلمة مرور لمستخدم جذر db (postgres):

postgres=# select usename, passwd is null from pg_shadow;
 usename  | ?column? 
----------+----------
 postgres | t
(1 row)

... وننصح المرء بوضعه مع:

alter role postgres password '<<very-secret>>';

(ثم ​​قم بتحديث pg_hba.conf الملف تبعا لذلك)

سؤالي هو: ما هو SQL الذي يجب استخدامه للعودة إلى الحالة السابقة عندما لم يكن هناك حاجة إلى كلمة مرور للمستخدم postgres.

بشكل عام ، كيف يمكنني إزالة متطلبات كلمة المرور لأي دور؟ أنا لا أسأل عن كيفية تغيير كلمة المرور بل كيفية إزالة متطلبات كلمة المرور (null passwd العمود في الجدول pg_shadow).

50
Marcus Junius Brutus

سواء كانت كلمة المرور مطلوبة أم لا علاقة لها بـ pg_shadow وما إذا كانت كلمة المرور محددة بالفعل للمستخدم. نعم ، أعلم أن هذا غريب.

يتحكم pg_hba.conf في طريقة المصادقة. إذا كنت تريد طلب كلمة مرور ، استخدم مصادقة md5. إذا كنت تريد السماح بتسجيل الدخول بدون كلمة مرور لأي شخص ، فاستخدم trust. إذا كنت ترغب في طلب نفس اسم المستخدم في نظام التشغيل كما هو الحال في PostgreSQL ، فاستخدم peer (UNIX ، فقط للاتصالات المحلية) أو sspi (Windows).

إذا كانت هناك مجموعة كلمات مرور ، ولكن pg_hba.conf لا تخبر PostgreSQL أن تطلبها ، فسيتم تجاهل كلمة المرور.

إذا أخبر pg_hba.conf PostgreSQL أن يطلب كلمة مرور ولكن لم يتم تعيين أي شيء ، فستفشل جميع محاولات تسجيل الدخول بغض النظر عن كلمة المرور التي يتم توفيرها.

63
Craig Ringer

مستخدم postgres بشكل افتراضي ليس لديه كلمة مرور. لإزالة كلمة مرور المستخدم (في هذه الحالة لمستخدم/دور postgres):

alter role postgres password null;

نحتاج أيضًا إلى تعيين المصادقة على trust في pg_hba.conf - عرض التفاصيل

15
lalligood

عملت هذا بالنسبة لي:

alter role postgres password '';

1
thouliha