اطلاعاتِ اتصال#
روی کارتِ دیتابیس در SERVICES:
| فیلد | توضیح |
|---|---|
| host | میزبانِ داخلی، در دسترس از اپهای همان سازمان |
| user / password | رمز با SHOW نمایش داده میشود |
| database | نامِ دیتابیس |
| url | آدرسِ کاملِ اتصال — همین را استفاده کنید |
سادهترین و امنترین راه: اتصالِ اپ به دیتابیس — همین مقادیر را خودش بهصورتِ DATABASE_URL و DB_* در اپ میگذارد.
فرمتِ URL#
URLِ روی کارت آمادهی استفاده است. اگر خودتان میسازید:
text
postgresql://USER:PASSWORD@HOST:5432/DATABASE
mysql://USER:PASSWORD@HOST:3306/DATABASE
mongodb://USER:PASSWORD@HOST:27017/?authSource=admin
redis://default:PASSWORD@HOST:6379/0
کاراکترهای خاصِ رمز را URL-encode کنید.
اتصال از بیرونِ پلتفرم#
host داخلی از اینترنت در دسترس نیست. برای اتصال از لپتاپ یا ابزارِ BI، دسترسی از بیرون را فعال کنید — و بعد از کار خاموشش کنید.
عوض کردنِ رمز#
در بخشِ Connection، owner و admin دکمهی ROTATE PASSWORD را میبینند. یک رمزِ تصادفیِ جدید ساخته میشود و:
- در خودِ دیتابیس عوض میشود. رمزِ قبلی از همان لحظه کار نمیکند.
- اپهایی که به این دیتابیس لینک شدهاند
DB_PASSWORDوDATABASE_URLجدید را میگیرند و بنرِ REDEPLOY REQUIRED نشان میدهند. تا redeploy نکنید، اتصالهای جدیدِ آن اپ با رمزِ قبلی رد میشوند. - هر جای دیگری که رمز را دستی گذاشتهاید (لپتاپ، ابزارِ BI، CI) باید دستی بهروز شود.
- MySQL، MariaDB، MongoDB و Redis چند ثانیه restart میشوند. PostgreSQL restart نمیشود.
اگر رمز لو رفته باشد، اول rotate کنید و بعد اپهای لینکشده را redeploy کنید.
بهترین روشها#
- Connection pool: اندازهی pool را محدود کنید (ORM یا PgBouncer). هر connection از RAMِ پکِ دیتابیس سهم میگیرد.
- Migration: اول روی محیطِ تست، بعد production؛ از شِلِ کانتینرِ اپ اجرا کنید.
- Secret: رمز را در گیت commit نکنید؛ از متغیرهای تزریقشده بخوانید.
خطاهای رایج#
| خطا | علتِ محتمل |
|---|---|
Connection refused | دیتابیس STOPPED است، یا host/port اشتباه |
password authentication failed | رمز اشتباه یا کاراکترِ خاصِ encode نشده |
| timeout از بیرون | host داخلی را استفاده کردهاید؛ دسترسی از بیرون لازم است |
