سه راه نصب، یک هدف: سرور سالم و امن
برای یادگیری و توسعه هر سه روش زیر کار میکند. برای سرور تولید، اوبونتو یا داکر رایجتر است. اولین تصمیم مهم انتخاب نسخه است: 8.4 LTS، مگر اینکه برنامهی قدیمی شما فقط با 8.0 آزموده شده باشد.
ویندوز
از نسخهی 8.1 به بعد ابزار قدیمی MySQL Installer کنار گذاشته شده و سرور به صورت یک فایل MSI مستقل ارائه میشود که در پایان MySQL Configurator را اجرا میکند. در Configurator نوع پیکربندی را Development Computer بگذارید، رمز root قوی تعیین کنید و گزینهی اجرا بهعنوان Windows Service را فعال نگه دارید. فایل تنظیمات در C:\ProgramData\MySQL\MySQL Server 8.4\my.ini ساخته میشود (پوشهی ProgramData مخفی است).
# در PowerShell: وضعیت سرویس و افزودن کلاینت به PATH همین نشست
Get-Service MySQL*
$env:Path += ";C:\Program Files\MySQL\MySQL Server 8.4\bin"
mysql -u root -p
اوبونتو
مخزن رسمی اوبونتو (22.04 و 24.04) نسخهی 8.0 را میدهد. نصب ساده است اما دو نکته دارد: کاربر root بهجای رمز با auth_socket احراز میشود (یعنی فقط sudo mysql کار میکند) و بلافاصله باید اسکریپت امنسازی را اجرا کنید.
sudo apt update
sudo apt install -y mysql-server
sudo systemctl enable --now mysql
sudo mysql_secure_installation # حذف کاربر ناشناس و دیتابیس test، غیرفعال کردن root از راه دور
sudo mysql -e "SELECT VERSION();"
برای 8.4 روی اوبونتو باید مخزن APT خود Oracle را اضافه کنید؛ دانلود از سایت Oracle از IP ایران معمولاً مسدود است. در این حالت داکر سادهترین مسیر است.
داکر (پیشنهاد برای توسعه و بسیاری از سرورها)
# اگر Docker Hub در دسترس نیست از میرور داخلی استفاده کنید، مثلاً:
# docker pull docker.arvancloud.ir/mysql:8.4
docker volume create mysql_data
docker run -d --name mysql84 --restart unless-stopped \
-p 127.0.0.1:3306:3306 \
-e MYSQL_ROOT_PASSWORD='Kashan#1403' \
-e TZ=Asia/Tehran \
-v mysql_data:/var/lib/mysql \
mysql:8.4 \
--character-set-server=utf8mb4 --collation-server=utf8mb4_0900_ai_ci
docker exec -it mysql84 mysql -u root -p
داده در volume نگهداری میشود و با حذف کانتینر از بین نمیرود. پارامترهای بعد از نام image مستقیماً به mysqld داده میشوند.
پس از نصب: چکلیست پنجدقیقهای
- نسخه و charset سرور را ببینید:
SELECT VERSION(), @@character_set_server; - root فقط از localhost وصل شود.
- برای هر برنامه کاربر جدا بسازید (درس بعد).
- پورت 3306 را روی اینترنت باز نکنید؛ اتصال از بیرون با تونل SSH یا VPN.
- از همین روز اول بکاپ خودکار داشته باشید (فصل هفتم).
نکتههایی که کمتر کسی میداند
- داکر قوانین فایروال UFW را دور میزند؛
-p 3306:3306پورت را روی همهی کارتهای شبکه باز میکند حتی اگر UFW آن را بسته باشد. همیشه127.0.0.1:را جلوی پورت بگذارید. - متغیر
MYSQL_ROOT_PASSWORDفقط بار اول و روی volume خالی اعمال میشود؛ عوض کردنش بعداً رمز را تغییر نمیدهد. - هر فایل
.sqlیا.shکه در/docker-entrypoint-initdb.dکانتینر بگذارید، فقط در اولین راهاندازی اجرا میشود؛ جای خوبی برای ساخت دیتابیس و کاربر اولیه است. - در اوبونتو اگر بخواهید root با رمز وصل شود:
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '...';اما بهتر است root را همانطور با socket نگه دارید و یک کاربر مدیر جدا بسازید. - در ویندوز، اگر پورت 3306 را نسخهی قدیمی XAMPP (که MariaDB است) گرفته باشد، سرویس جدید بالا نمیآید؛ با
netstat -ano | findstr 3306مقصر را پیدا کنید.