اتصال دیتابیس

یک دیتابیس مدیریت‌شده بسازید و اطلاعات اتصال آن را به App بدهید.

آخرین بازبینی:


این راهنما یک دیتابیس مدیریت‌شده می‌سازد، دسترسی محلی را با tunnel بررسی می‌کند و اطلاعات اتصال را از طریق متغیر محیطی به App می‌دهد.

PostgreSQLدیتابیس رابطه‌ای با پشتیبانی از extensionهای منتخب
MySQLدیتابیس رابطه‌ای برای workloadهای سازگار با MySQL
Redisذخیره‌ساز سریع key-value و cache

پیش‌نیازها

  • ورود به CLI و انتخاب پروژه
  • یک App موجود در همان پروژه
  • client مناسب موتور دیتابیس برای آزمون اتصال محلی

۱. دیتابیس را بسازید

در حالت تعاملی، CLI موتور، نسخه و plan را می‌پرسد:

abrun db create app-db

برای نمونه، می‌توانید موتور را مشخص کنید و انتخاب نسخه و plan را تعاملی انجام دهید:

abrun db create app-db --engine postgres

رمز اولیه فقط هنگام ساخت نمایش داده می‌شود. آن را در password manager یا secret store امن ذخیره کنید و terminal را در زمان ساخت share نکنید.

وضعیت دیتابیس را تا فعال‌شدن بررسی کنید:

abrun db inspect app-db

۲. اطلاعات اتصال را بخوانید

نمایش عادی credentialها رمز را پنهان نگه می‌دارد:

abrun db credentials app-db

فقط وقتی واقعاً به رمز نیاز دارید و محیط terminal خصوصی است، آن را آشکار کنید:

abrun db credentials app-db --show-password

خروجی شامل host، port، databaseName، username و password است. این مقادیر را در issue، مستندات یا repository کپی نکنید.

۳. اتصال محلی را با tunnel بررسی کنید

یک پورت آزاد محلی انتخاب کنید:

abrun db tunnel app-db --port 5432

تا زمانی که این command در حال اجرا است، client محلی را به 127.0.0.1:5432 وصل کنید و username، password و database name مرحله قبل را بدهید.

برای PostgreSQL:

psql 'host=127.0.0.1 port=5432 dbname=<database> user=<username>'

client رمز را جداگانه می‌پرسد؛ آن را داخل command قرار ندهید.

برای MySQL، port آزاد مناسب خود را به tunnel بدهید و client را مجبور به TCP کنید:

abrun db tunnel app-db --port 3306 mysql --protocol=TCP --host=127.0.0.1 --port=3306 --user=<username> --password <database>

گزینه --password بدون مقدار باعث می‌شود client رمز را امن‌تر درخواست کند.

برای Redis:

abrun db tunnel app-cache --port 6379 redis-cli -h 127.0.0.1 -p 6379 --user <username> --askpass PING

از قرار دادن password در -a یا URI خط فرمان خودداری کنید. در هر سه حالت، با Ctrl+C فرایند tunnel را ببندید.

۴. اطلاعات اتصال را به App بدهید

نام متغیر به framework برنامه بستگی دارد. اگر برنامه از DATABASE_URL استفاده می‌کند، URL را محلی بسازید و مقدار واقعی را به‌جای placeholderها قرار دهید:

postgres://<username>:<password>@<host>:<port>/<database>

سپس آن را تنظیم کنید:

abrun app env set <app> 'DATABASE_URL=<connection-url>'

این command ممکن است در history شل باقی بماند. برای production و CI، مقدار را از secret store وارد کنید و از hard-code کردن آن بپرهیزید. جزئیات بیشتر در متغیرهای محیطی آمده است.

۵. نتیجه را بررسی کنید

پس از اعمال متغیر، وضعیت و لاگ برنامه را بررسی کنید:

abrun app inspect <app> abrun app logs <app> --tail 100

یک endpoint یا عملیات واقعی برنامه را اجرا کنید که به دیتابیس query می‌زند. فعال‌بودن App به‌تنهایی ثابت نمی‌کند اتصال دیتابیس درست است.

رفع مشکل

  • connection refused: host و port را دوباره از credentialها بخوانید؛ برای اتصال محلی tunnel باید همچنان باز باشد.
  • authentication failed: username، password و database name را بدون فاصله اضافه بررسی کنید.
  • App به دیتابیس نمی‌رسد: مطمئن شوید هر دو resource در یک پروژه هستند و متغیر روی App درست تنظیم شده است.
  • تغییر دیده نمی‌شود: لاگ runtime را بررسی و در صورت نیاز App را restart کنید.

قدم بعدی

این صفحه مفید بود؟

بازخورد شما به بهترشدن مستندات کمک می‌کند.