دیتابیس رابطه‌ای

MySQL مدیریت‌شده برای Laravel، WordPress و هر اپی

MySQL را با نسخه‌ای که اپ شما لازم دارد بسازید، به اپ لینک کنید و پشتیبان‌گیری را به پلتفرم بسپارید.

نسخه‌ها
9.7 (پیش‌فرض)، 8.4 LTS و 8.0
پورت
3306
در اپ
DATABASE_URL و DATABASE_*
پشتیبان
دستی و زمان‌بندی‌شده
لوگوی MySQL

MySQL آشنا، بدون مدیریت سرور

MySQL هنوز دیتابیس اصلی بخش بزرگی از اپ‌های PHP، WordPress و سیستم‌های قدیمی‌تر است. نسخه‌ی 8.4 LTS برای پروژه‌هایی که پایداری بلندمدت می‌خواهند و 9.7 برای جدیدترین قابلیت‌ها در دسترس است.

ارتباط روی TLS رمزنگاری می‌شود و پارامترهای اجرایی از کنسول قابل تنظیم‌اند. پشتیبان با mysqldump گرفته و جدا از دیسک دیتابیس نگهداری می‌شود.

مناسب برای

  • دیتابیس Laravel و Symfony
  • WordPress و WooCommerce
  • مهاجرت اپ‌های قدیمی PHP
  • سامانه‌های تراکنشی

از ساخت تا اتصال

  1. ساخت

    نسخه و فضای دیسک را انتخاب کنید.

    --type mysql --version 8.4
  2. آماده‌سازی

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

    ~90s
  3. لینک به اپ

    متغیرهای DATABASE_* به اپ تزریق می‌شوند.

    apps link-db

خروجی ساخت سرویس

sakoocloud db
sakoocloud db create --name app-db --type mysql --version 8.4
✔ Provisioning app-db · db_4n8x2p
ℹ Ready in ~90s. Get credentials: sakoocloud db credentials db_4n8x2p
sakoocloud apps link-db db_4n8x2p --app my-api
✔ Linked database. Env vars injected under DATABASE_*.
# DATABASE_URL=mysql://app:••••@…:3306/app-db

ساخت دیتابیس

برای پروژه‌هایی که نسخه‌ی مشخصی لازم دارند، --version را بدهید.

terminal
sakoocloud db create --name app-db --type mysql --version 8.4 --storage 10

تنظیمات

متغیرهایی که به اپ تزریق می‌شوند

پیشوند پیش‌فرض DATABASE است؛ با --prefix می‌توانید نام دیگری بدهید، مثلاً DATABASE.

متغیرمقدار
DATABASE_URLmysql://user:pass@host:3306/db
DATABASE_HOST و DATABASE_PORTآدرس و پورت داخلی
DATABASE_USER و DATABASE_PASSWORDنام کاربری و رمز تولیدشده
DATABASE_NAMEنام دیتابیس

پشتیبان‌گیری

پشتیبان‌ها به‌صورت dump منطقی گرفته و جدا از دیسک دیتابیس، روی فضای ذخیره‌سازی سازگار با S3 نگهداری می‌شوند.

نوعدر دسترس
پشتیبان دستیهمه‌ی پلن‌ها، از جمله پلن رایگان
زمان‌بندی خودکارپلن‌های پولی
بازگردانیروی همان دیتابیس یا یک نمونه‌ی تازه (backups clone)

عملیات روزمره

کاردستور
اطلاعات اتصالsakoocloud db credentials <id>
اتصال مستقیم با کلاینت mysqlsakoocloud db connect <id>
افزایش دیسک یا حافظهsakoocloud db resize <id> --storage 20
پشتیبان دستیsakoocloud db backups create <id>
ساخت نسخه‌ی staging از پشتیبانsakoocloud db backups clone <id> <backup-id>

اتصال از اپ

در Laravel کافی است DATABASE_URL را به اتصال mysql بدهید.

'mysql' => [
    'driver' => 'mysql',
    'url' => env('DATABASE_URL'),
],

رانتایم‌هایی که معمولاً به آن وصل می‌شوند

خطاهای رایج

از سیستم خودم وصل نمی‌شوم

علتآدرس داخلی فقط از اپ‌های همان پروژه در دسترس است.

راه‌حلبرای اتصال از بیرون، دسترسی عمومی را روشن کنید و آدرس و پورت خارجی را از sakoocloud db credentials بگیرید.

terminal
sakoocloud db public-access <db-id>
sakoocloud db credentials <db-id>

Access denied for user

علتنام کاربری یا رمز قدیمی است یا متغیرها بعد از تغییر رمز به اپ نرسیده‌اند.

راه‌حلمتغیرهای تزریق‌شده را استفاده کنید و بعد از تغییر رمز، اپ را دوباره مستقر کنید.

Too many connections

علتاتصال‌های باز از سقف max_connections بیشتر شده‌اند.

راه‌حلاستخر اتصال اپ را محدود کنید یا سقف را از کنسول بالا ببرید.

پرسش‌های متداول

MySQL 8.0 یا 8.4 یا 9؟

برای پروژه‌ی جدید 8.4 LTS پایدارترین انتخاب است. 8.0 برای سازگاری با سیستم‌های قدیمی است.

WordPress با این دیتابیس کار می‌کند؟

بله. مقادیر DATABASE_HOST، DATABASE_NAME، DATABASE_USER و DATABASE_PASSWORD را در wp-config.php بخوانید.

phpMyAdmin دارید؟

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

جزئیات بیشتر در راهنمای MySQL در مستندات و مرجع CLI.

سریع‌ترین مسیر از کد تا انتشار.

ابتدا ابزار خط فرمان را نصب کنید، سپس همین‌جا امتحان کنید. (بنویسید، یا یکی از پیشنهادهای پایین ترمینال را بزنید)

~/projects/my-app
امتحان کنید