إصلاح: تعذّر الاتصال بـ MySQL على VPS (رفض الوصول أو حجب المنفذ)

القراءة المقدرة:1دقيقة

Summary: إذا ظهرت لك الرسالة "Access denied for user" أو تعذّر عليك الاتصال بـ MySQL عن بُعد على خادم VPS، فإليك كيفية تشخيص أكثر الأسباب شيوعًا وإصلاحها.

إذا ظهرت لك الرسالة “Access denied for user” أو تعذّر عليك الاتصال بـ MySQL عن بُعد على خادم VPS، فإليك كيفية تشخيص أكثر الأسباب شيوعًا وإصلاحها.

السبب 1: اسم مستخدم أو كلمة مرور خاطئة

اختبر بيانات اعتماد MySQL محليًا على خادم VPS أولًا:

mysql -u your_username -p

أدخل كلمة المرور عند المطالبة. إذا ظهرت لك “Access denied”، فأعد تعيين كلمة المرور:

# Log in as root
mysql -u root -p

# Reset a user's password
ALTER USER 'your_username'@'localhost' IDENTIFIED BY 'NewStrongPassword123!';
FLUSH PRIVILEGES;
EXIT;

السبب 2: MySQL غير قيد التشغيل

تحقق مما إذا كان MySQL يعمل:

systemctl status mysql

إذا كان متوقفًا أو فاشلًا، فشغّله:

systemctl start mysql
systemctl enable mysql

إذا فشل MySQL في البدء، فافحص سجل الأخطاء:

journalctl -u mysql -n 50 --no-pager

السبب 3: الاتصالات البعيدة محجوبة (المنفذ 3306)

افتراضيًا يستمع MySQL على localhost فقط وقد يكون المنفذ 3306 محجوبًا بواسطة جدار الحماية. للسماح لعنوان IP معين بالاتصال عن بُعد:

1. اسمح بالمنفذ 3306 في UFW:

# Only allow your specific IP (recommended)
ufw allow from YOUR_IP to any port 3306

# Or allow all (not recommended for production)
ufw allow 3306

2. جعل MySQL يستمع على جميع الواجهات — عدّل /etc/mysql/mysql.conf.d/mysqld.cnf وغيّر:

bind-address = 127.0.0.1

إلى:

bind-address = 0.0.0.0

ثم أعد تشغيل MySQL: systemctl restart mysql

3. امنح المستخدم صلاحية الوصول عن بُعد:

mysql -u root -p

GRANT ALL PRIVILEGES ON your_database.* TO 'your_username'@'YOUR_IP' IDENTIFIED BY 'your_password';
FLUSH PRIVILEGES;
EXIT;

السبب 4: انهيار MySQL بسبب قلة الذاكرة

في خطط VPS منخفضة الذاكرة (512MB–1GB)، قد ينهار MySQL عند نفاد الذاكرة. الحل هو إضافة ملف swap. راجع: كيفية إعداد ملف Swap على خادم VPS.

هل ما زالت تواجه مشكلات؟

تواصل مع دعم Veerhost عبر veerhost.com/support مع ذكر رسالة الخطأ الدقيقة وإصدار MySQL (mysql --version).

Launchpad