MySQL آشنا، بدون مدیریت سرور
MySQL هنوز دیتابیس اصلی بخش بزرگی از اپهای PHP، WordPress و سیستمهای قدیمیتر است. نسخهی 8.4 LTS برای پروژههایی که پایداری بلندمدت میخواهند و 9.7 برای جدیدترین قابلیتها در دسترس است.
ارتباط روی TLS رمزنگاری میشود و پارامترهای اجرایی از کنسول قابل تنظیماند. پشتیبان با mysqldump گرفته و جدا از دیسک دیتابیس نگهداری میشود.
مناسب برای
- دیتابیس Laravel و Symfony
- WordPress و WooCommerce
- مهاجرت اپهای قدیمی PHP
- سامانههای تراکنشی
از ساخت تا اتصال
ساخت
نسخه و فضای دیسک را انتخاب کنید.
--type mysql --version 8.4آمادهسازی
کاربر، رمز و دیسک ماندگار ساخته میشوند.
~90sلینک به اپ
متغیرهای
DATABASE_*به اپ تزریق میشوند.apps link-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 را بدهید.
sakoocloud db create --name app-db --type mysql --version 8.4 --storage 10
تنظیمات
متغیرهایی که به اپ تزریق میشوند
پیشوند پیشفرض DATABASE است؛ با --prefix میتوانید نام دیگری بدهید، مثلاً DATABASE.
| متغیر | مقدار |
|---|---|
DATABASE_URL | mysql://user:pass@host:3306/db |
DATABASE_HOST و DATABASE_PORT | آدرس و پورت داخلی |
DATABASE_USER و DATABASE_PASSWORD | نام کاربری و رمز تولیدشده |
DATABASE_NAME | نام دیتابیس |
پشتیبانگیری
پشتیبانها بهصورت dump منطقی گرفته و جدا از دیسک دیتابیس، روی فضای ذخیرهسازی سازگار با S3 نگهداری میشوند.
| نوع | در دسترس |
|---|---|
| پشتیبان دستی | همهی پلنها، از جمله پلن رایگان |
| زمانبندی خودکار | پلنهای پولی |
| بازگردانی | روی همان دیتابیس یا یک نمونهی تازه (backups clone) |
عملیات روزمره
| کار | دستور |
|---|---|
| اطلاعات اتصال | sakoocloud db credentials <id> |
| اتصال مستقیم با کلاینت mysql | sakoocloud 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'),
],
import mysql from "mysql2/promise";
const pool = mysql.createPool(process.env.DATABASE_URL);
import os
from sqlalchemy import create_engine
url = os.environ["DATABASE_URL"].replace("mysql://", "mysql+pymysql://")
engine = create_engine(url)
خطاهای رایج
از سیستم خودم وصل نمیشوم
علتآدرس داخلی فقط از اپهای همان پروژه در دسترس است.
راهحلبرای اتصال از بیرون، دسترسی عمومی را روشن کنید و آدرس و پورت خارجی را از sakoocloud db credentials بگیرید.
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.