یکی از رایج‌ترین خطاهای اتصال به پایگاه داده در سرورهای لینوکسی و هاست‌های سی‌پنل، خطای Error connecting to MySQL: Access denied for user است. این خطا زمانی رخ می‌دهد که کاربر تعریف‌ شده در MySQL اجازه‌ی دسترسی به دیتابیس را ندارد یا رمز عبور وارد شده صحیح نیست. کاربران و توسعه‌دهندگان وب هنگام کار با سایت‌های وردپرسی یا پنل‌های مدیریتی مانند DirectAdmin و cPanel معمولا با این مشکل مواجه می‌شوند.
در این مقاله، به‌صورت گام‌ به‌ گام یاد می‌گیریم چگونه این خطا را تحلیل و برطرف کنیم تا ارتباط با MySQL بدون مشکل برقرار شود. پس تا انتها همراه ما باشید.

چرا خطای Access denied for user رخ می‌دهد؟

این خطا از خطاهای احراز هویت (Authentication Error) در MySQL است. زمانی‌که MySQL نتواند کاربر (مانند da_admin) را شناسایی کند یا رمز عبور اشتباه باشد، اتصال را رد می‌کند.
در این حالت، معمولا با پیغام خطای زیر روبه‌رو می‌شوید:

Error connecting to MySQL: Access denied for user 'da_admin'@'localhost'
دلایل اصلی بروز این خطا عبارتند از:
  • رمز عبور کاربر در فایل پیکربندی اشتباه است.
  • کاربر تعریف‌ شده در MySQL وجود ندارد.
  • کاربر از میزبان (Host) نادرستی تلاش به اتصال دارد.
  • سطح دسترسی کاربر به دیتابیس حذف شده است.
  • تنظیمات امنیتی یا فایروال مانع اتصال می‌شود.
اگر هر یک از این موارد رخ دهد، خطای Access denied for user نمایش داده می‌شود. پس برای رفع خطا مراحل زیر را انجام دهید.

1- بررسی ریشه‌ای خطا Error connecting to MySQL: Access denied for user

قبل از هرگونه تغییر یا اقدام اصلاحی، باید منشا اصلی خطا را شناسایی کنید. با مشاهده‌ دقیق پیام خطا در محیط‌های مختلف و تحلیل لاگ‌های MySQL می‌توانیدمتوجه شوید که مشکل از رمز عبور، سطح دسترسی، یا میزبان اتصال است. این مرحله پایه‌ای‌ ترین گام برای رفع کامل خطای Access denied for user محسوب می‌شود.

مشاهده پیام خطا در محیط‌های مختلف

این خطا ممکن است در محیط‌های زیر ظاهر شود:

  • هنگام ورود به phpMyAdmin
  • اتصال وردپرس یا جوملا به دیتابیس
  • اجرای دستورات در SSH یا MySQL CLI
  • استفاده از اسکریپت‌های PHP مانند mysqli_connect()
که در تمامی این حالت ها معمولا پیام خطای Error connecting to MySQL: Access denied for user ‘da_admin@localhost’ نمایش داده می شود.

بررسی لاگ‌های MySQL

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

sudo cat /var/log/mysql/error.log
اگر در خروجی عبارت‌هایی مانند Access denied یا Authentication failed مشاهده کردید، نشان‌دهنده‌ی عدم احراز هویت صحیح است.
در این مرحله باید موارد زیر را بررسی کنید:
  1. آیا نام کاربری (da_admin) درست وارد شده است؟
  2. رمز عبور در فایل‌های پیکربندی مانند wp-config.php با MySQL هم‌خوانی دارد؟
  3. آیا کاربر از localhost به MySQL متصل می‌شود یا از IP دیگر؟
  4. آیا کاربر مجاز به دسترسی به دیتابیس موردنظر است؟

2. رفع خطای دسترسی دیتابیس از طریق کنترل پنل (cPanel و DirectAdmin)

در کنترل پنل‌هایی مانند cPanel و DirectAdmin می‌توان به‌راحتی کاربر و رمز عبور را اصلاح کرد.

تغییر رمز عبور کاربر دیتابیس

در صورتی که رمز عبور در فایل تنظیمات (مثل wp-config.php) با مقدار واقعی در MySQL متفاوت باشد، باید آن را یکسان کنید برای این کار:
  1. وارد کنترل پنل شوید.
  2. از بخش MySQL Databases، کاربر مربوطه (da_admin)را انتخاب کنید.
  3. گزینه Change Password را بزنید و رمز جدیدی انتخاب کنید.
  4. رمز جدید را در فایل پیکربندی وب‌سایت خود (مثلا در وردپرس wp-config.php) وارد نمایید:
define('DB_USER', 'da_admin');
define('DB_PASSWORD', 'new_password');
📌 نکته: برای جلوگیری از کش شدن تنظیمات قدیمی، مرورگر یا کش PHP را پاک کنید.

بررسی و اعطای مجدد دسترسی‌ها (Privileges)

اگر رمز عبور درست است اما هنوز خطا دریافت می‌کنید، این احتمال وجود دارد که دسترسی کاربر حذف شده‌ باشند. برای حل این مشکل مراحل زیر را انجام دهید.

  1. وارد phpMyAdmin شوید.
  2. از منوی سمت چپ، گزینه Privileges را انتخاب کنید.
  3. روی کاربر موردنظر کلیک کرده.
  4. با انتخاب دیتابیس مربوطه، تیک گزینه ALL PRIVILEGES را فعال کنید.
  5. در انتها تغییرات را ذخیره کنید.

3. رفع خطا عدم دسترسی به MySQL در سرور

اگر دسترسی مدیریتی (Root) به سرور دارید، می‌توانید از طریق خط فرمان برای رفع خطا استفاده کنید.

تغییر رمز عبور کاربر Root در MySQL

اگر به کنترل پنل دسترسی ندارید، می‌توانید رمز عبور Root دیتابیس MySQL را از طریق خط فرمان تغییر دهید. کافی است دستور زیر را در خط فرمان MySQL اجرا کنید.
sudo mysqladmin -u root -p password 'new_password'
اگر رمز عبور Root را فراموش کرده‌اید یا در صورت بروز خطا، MySQL را در حالت امن اجرا کنید. برای این کار دستور زیر را اجرا کنید.
sudo systemctl stop mysql
sudo mysqld_safe --skip-grant-tables &
mysql -u root
حالا در محیط MySQL رمز عبور جدید را تنظیم کنیدیا اصطلاحا رمز را ریست کنید.
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
FLUSH PRIVILEGES; --skip-grant-tables &
mysql -u root

ایجاد کاربر جدید با دسترسی کامل

اگر کاربر da_admin حذف شده یا به هر دلیلی مشکل پیدا کرده است، می توانید با استفاده از دستور زیر کاربر جدید ایجاد کنید. البته این روش مخصوص مدیران سرور و توسعه‌دهندگانی است که به SSH دسترسی دارند.

CREATE USER 'da_admin'@'localhost' IDENTIFIED BY 'new_password';
GRANT ALL PRIVILEGES ON database_name.* TO 'da_admin'@'localhost';
FLUSH PRIVILEGES;

4. بررسی تنظیمات Localhost و دسترسی از راه دور

در MySQL، میزبان (Host) بخش مهمی از شناسایی کاربر است. یعنی هر کاربر با ترکیب «نام کاربری + میزبان» شناخته می‌شود.
بنابراین da_admin@localhost با [email protected] دو کاربر متفاوت هستند.
اگر برنامه یا اسکریپت شما روی سرور دیگری اجرا می شود، باید دسترسی از راه دور را فعال کنید. برای این کار دستور زیر را اجرا کنید.

GRANT ALL PRIVILEGES ON database_name.* TO 'da_admin'@'%' IDENTIFIED BY 'new_password';
FLUSH PRIVILEGES;
سپس در فایل پیکربندی MySQL گزینه‌ی اتصال از همه‌ی IPها را فعال کنید.پس کد زیر را اجرا کنید.
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
در ادامه خط زیر را پیدا کنید و مقدار آن را به صفر تغییر دهید مانند زیر.
bind-address = 0.0.0.0

نکات فنی خطای Access denied for user در سرورها

برای جلوگیری از بروز مجدد خطای اتصال دیتابیس cPanel یا دایرکت ادمین، توصیه های فنی زیر را جدی بگیرید.

  • رمزهای عبور ساده را هرگز استفاده نکنید. از ترکیب حروف بزرگ، کوچک و نمادها استفاده کنید.
  • در سرورهایی با دسترسی از راه دور، پورت 3306 را برای IPهای خاص محدود کنید
  • از نسخه‌های جدید MySQL 8.x استفاده کنید؛ زیرا در سال 2025 الگوریتم‌های رمزنگاری به‌روزرسانی شده‌اند.
  • پس از هر تغییر، حتما سرویس را ریستارت کنید. از دستور” sudo systemctl restart mysql ” استفاده کنید
بر اساس مستندات رسمی Oracle MySQL (2025)، استفاده از پلاگین caching_sha2_password به‌جای mysql_native_password توصیه شده است.

جمع بندی ؛ مشکل یوزر da_admin

همانطور که در این مقاله نیز به آن پرداخته شد،خطای Error connecting to MySQL: Access denied for user یکی از متداول‌ ترین مشکلات در اتصال به دیتابیس است. اما با بررسی دقیق پیام خطا، همسان‌سازی رمز عبور، و تنظیم صحیح سطح دسترسی‌ها می‌توان در کمتر از چند دقیقه آن را برطرف کرد. پیشنهاد می‌کنیم برای جلوگیری از بروز مجدد خطا:
1- از رمزهای قوی و یکتا استفاده کنید.
2- به‌صورت منظم کاربران غیر ضروری را حذف کنید.
3- از ابزارهای مدیریتی مانند phpMyAdmin یا MySQL CLI برای کنترل دسترسی‌ها استفاده کنید.
برای اطمینان از عملکرد پایدار دیتابیس، پیشنهادما استفاده از سرور مجازی لینوکس استفاده کنید تا کنترل کامل بر MySQL و فایل‌های تنظیماتی داشته باشید. امیدوارم این مقاله آموزشی از بلاگ وب داده نیز برای شما مفید باشد.

سوالات متداول درباره خطای Error connecting to MySQL

در DirectAdmin چطور کاربر را به دیتابیس متصل کنم؟

از بخش MySQL Management کاربر را انتخاب کرده و از قسمت Link User to Database دیتابیس مربوطه را وصل کنید.

منابع و رفرنس ها:

  1. Oracle MySQL Documentation, 2025 Edition
  2. cPanel MySQL Management Guide, 2024
  3. DirectAdmin Database Troubleshooting, 2024
سارا صالحی ریحانی
سارا صالحی ریحانی

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

مقاله‌ها: 69
پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *