# راهنمای کامل نصب MySQL + Nginx + phpMyAdmin روی Ubuntu 24.04

## مشخصات سیستم

- Ubuntu 24.04.1 LTS
- MySQL 8
- Nginx
- PHP 8.3
- phpMyAdmin

---

# 1) تنظیم مخازن Ubuntu روی Mirror آروان

فایل سورس:

```bash
nano /etc/apt/sources.list

محتوا:

deb http://mirror.arvancloud.ir/ubuntu noble main restricted universe multiverse
deb http://mirror.arvancloud.ir/ubuntu noble-updates main restricted universe multiverse
deb http://mirror.arvancloud.ir/ubuntu noble-backports main restricted universe multiverse
deb http://mirror.arvancloud.ir/ubuntu noble-security main restricted universe multiverse

آپدیت:

apt clean
apt update

بررسی سورس‌های اضافی:

grep -R "ubuntu.com" /etc/apt/

در صورت وجود فایل اضافی:

mv /etc/apt/sources.list.d/ubuntu.sources /etc/apt/sources.list.d/ubuntu.sources.bak

2) نصب MySQL

apt install mysql-server -y

بررسی وضعیت:

systemctl status mysql

بررسی نسخه:

mysql --version

3) تنظیم رمز برای root در MySQL

ورود:

mysql

تنظیم پسورد:

ALTER USER 'root'@'localhost'
IDENTIFIED WITH caching_sha2_password
BY 'YourStrongPassword!';

FLUSH PRIVILEGES;
EXIT;

تست ورود:

mysql -u root -p

4) نصب Nginx

apt install nginx -y

فعال‌سازی:

systemctl enable nginx
systemctl restart nginx

بررسی:

systemctl status nginx

5) نصب PHP و افزونه‌ها

apt install php-fpm php-mysql php-cli php-mbstring php-zip php-gd php-json php-curl unzip -y

بررسی نسخه:

php -v

6) نصب phpMyAdmin

apt install phpmyadmin -y

هنگام نصب:

  • web server → چیزی انتخاب نشود

  • dbconfig-common → Yes

7) تنظیم phpMyAdmin روی Nginx

ساخت فایل:

nano /etc/nginx/conf.d/phpmyadmin.conf

محتوا:

server {
    listen 80;
    server_name pma.example.com;

    root /usr/share/phpmyadmin;
    index index.php;

    location / {

        auth_basic "Restricted";
        auth_basic_user_file /etc/nginx/.pma_pass;

        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
    }

    location ~ /\.ht {
        deny all;
    }
}

تست nginx:

nginx -t

ریلود:

systemctl reload nginx

8) فعال‌سازی Basic Auth برای phpMyAdmin

نصب ابزار:

apt install apache2-utils -y

ساخت یوزر:

htpasswd -c /etc/nginx/.pma_pass admin

رمز عبور وارد کنید.

9) اتصال دامنه

DNS:

A Record

مثال:

pma.example.com -> YOUR_SERVER_IP

10) نصب SSL رایگان Let's Encrypt

apt install certbot python3-certbot-nginx -y

دریافت SSL:

certbot --nginx -d pma.example.com

11) رفع خطای phpMyAdmin controluser

خطا:

mysqli::real_connect():
Access denied for user 'phpmyadmin'@'localhost'

ویرایش فایل:

nano /etc/phpmyadmin/config.inc.php

پیدا کردن:

$dbuser='phpmyadmin';
$dbpass='...';

$cfg['Servers'][$i]['controluser'] = $dbuser;
$cfg['Servers'][$i]['controlpass'] = $dbpass;

کامنت کردن:

// $dbuser='phpmyadmin';
// $dbpass='...';

// $cfg['Servers'][$i]['controluser'] = $dbuser;
// $cfg['Servers'][$i]['controlpass'] = $dbpass;

ریستارت سرویس‌ها:

systemctl restart php8.3-fpm
systemctl restart nginx

12) دستورات مفید

ریستارت nginx:

systemctl restart nginx

ریستارت PHP:

systemctl restart php8.3-fpm

ریستارت MySQL:

systemctl restart mysql

تست nginx:

nginx -t

بررسی پورت‌ها:

ss -tulpn

نرم‌افزارهای نصب شده

  • MySQL 8

  • Nginx

  • PHP 8.3

  • phpMyAdmin

  • Certbot

  • Basic Auth