مقدمه :
برخی شرایطی پیش می آید که کلمه عبور (password ) کاربر Postgres را فراموش کرده ایم و احتیاج به بازیابی آن داریم. در این مستند در خصوص راهکاریی که در این مورد وجود دارد صحبت خواهیم کرد.
اجرای عملیات بازیابی :
برای این کار باید ابتدا محل فایل pg_hba.conf رو پیدا کنیم. این فایل در مسیر data directroy قرار گرفته. اگر این مسیر را نمی دانید یکی از راه های پیدا کردنش استقاده از دستور pg_lsclusters می باشد که خروجی مشابه زیر دارد.
Ver Cluster Port Status Owner Data directory Log file
12 main 5432 online postgres /var/lib/postgresql/12/main /var/log/postgresql/postgresql-12-main.log
همانطور که مشاهده می کنید مسیر data directory این مسیر می باشد:
/var/lib/postgresql/12/main
ابتدا یک فایل پشتیبان از این فایل می گیریم و بعد محتوی فایل اصلی را ویرایش می کنیم.همه Method های اعتبارسنجی را از Md5 به Trust تغییر میدیم و سپس یکبار سرویس ها رو Restart می کنیم.
برای Restart یا از pg_ctl استفاده کنید یا از دستور سیستم عاملی systemctl
Pg_ctl restart -D &PGDATA
Or
Systemctl restart postgresql.service
با این کار به کاربر postgres اجازه دادیم بدون کنترل کردن کلمه عبورش ( در سرور) وارد پایگاه داده بشود. حالا با ابزار psql با کاربر postgres وارد پایگاه داده می شویم و کلمه عبور را تغییر میدهیم و در ادامه همه تنظمیات فایل pg_hba را به حالت قبل برمی گردانیم و دوباره سرویس را restart می کنیم
با دستور زیر کلمه عبور را تغییر می دهیم.
ALTER USER postgres WITH PASSWORD 'new_password';
در ضمن hba مخفف host-based authentication می باشد.