وبلاگ نت‌آرامآموزش، تجربه و راهکارهای زیرساخت

خطای 1044 هنگام درون‌ریزی دیتابیس؛ کاربر چرا به پایگاه داده دسترسی ندارد؟

علت Access denied for user to database، پیشوند دیتابیس سی‌پنل، مجوز کاربر و دستور USE یا CREATE DATABASE در فایل بکاپ را بررسی کنید.

انتشار:
توسط تیم فنی نت‌آرام
۷ دقیقه زمان مطالعه
۰ دیدگاه
محتوای تخصصی، ساده و کاربردی
هماهنگ با هویت حرفه‌ای نت‌آرام
بازگشت به لیست مقالات
تصویر شاخص مقاله خطای 1044 هنگام درون‌ریزی دیتابیس؛ کاربر چرا به پایگاه داده دسترسی ندارد؟ در وبلاگ نت‌آرام
محتوای آموزشی وبلاگ نت‌آرام
فایل پایگاه داده را در هاست جدید درون‌ریزی می‌کنید، اما خطایی شبیه ERROR 1044: Access denied for user ... to database ... ظاهر می‌شود. این پیام می‌گوید حسابی که درخواست را اجرا کرده، اجازه لازم برای دسترسی به آن پایگاه داده یا انجام عمل موردنظر را ندارد. ممکن است نام دیتابیس داخل فایل با نام دیتابیس هاست جدید فرق داشته باشد، یا کاربر درست به پایگاه داده وصل نشده باشد.
پیش از تغییر دسترسی، نام کاربر، میزبان و دیتابیس موجود در خود خطا را یادداشت کنید. آن‌ها را در تیکت عمومی همراه رمز منتشر نکنید. قرار نیست برای رفع این مشکل به کاربر دسترسی مدیر کل سرور بدهیم؛ هدف، دسترسی مناسب به دیتابیس درست و فقط برای کار موردنیاز است.

۱۰۴۴ با خطای رمز اشتباه چه فرقی دارد؟

در خطای 1044 معمولاً نام کاربر و دیتابیسی که دسترسی به آن رد شده نمایش داده می‌شود. خطای 1045 بیشتر درباره ردشدن ورود همان حساب و میزبان است و می‌تواند به نام کاربری، رمز یا شیوه احراز هویت مربوط باشد. هر دو را باید با متن کامل خطا و تنظیم واقعی بررسی کرد. فهرست خطاهای رسمی MySQL این دو کد را جدا تعریف می‌کند.
اگر وردپرس پیام عمومی اتصال به پایگاه داده می‌دهد و کد ۱۰۴۴ مشخص نیست، از خطای واقعی و راهنمای اتصال وردپرس شروع کنید. عوض‌کردن رمز همه کاربران دیتابیس یا فعال‌کردن دسترسی سراسری، قدم اول مناسبی نیست.

پیش از درون‌ریزی، از دیتابیس مقصد محافظت کنید

اگر دیتابیس مقصد اکنون اطلاعات سایت فعال را دارد، قبل از هر Import از آن و فایل اصلی بکاپ قابل بازیابی بگیرید. درون‌ریزی می‌تواند جدول بسازد، داده اضافه کند یا بسته به محتوای فایل، جدول‌های قبلی را تغییر دهد. خطای نیمه راه نیز لزوماً همه تغییرات قبلی را برنمی‌گرداند.
برای آزمایش، بهتر است در همان حساب میزبانی یک دیتابیس خالی و جدا بسازید و نتیجه را آنجا ببینید. اگر فرایند درون‌ریزی قبلی تا نیمه انجام شده، قبل از تکرار بررسی کنید کدام جدول‌ها ساخته شده‌اند. تکرار کورکورانه می‌تواند به خطای رکورد تکراری یا داده ناقص منجر شود. راهنمای خطای Duplicate entry هنگام Import برای آن وضعیت است.

قدم اول: نام کامل دیتابیس و کاربر را از سی‌پنل بردارید

در سی‌پنل وارد بخش Databases و سپس MySQL Database Manager یا Manage My Databases شوید. در نسخه‌های متفاوت نام گزینه می‌تواند فرق کند. نام کامل دیتابیس مقصد و کاربری را که باید با آن کار کند یادداشت کنید. اگر پیشوند حساب فعال باشد، نامی مانند account_shop می‌بینید؛ نام نمونه shop به‌تنهایی لزوماً همان نام واقعی نیست. پیشوند هم در نام دیتابیس و هم در نام کاربر ممکن است وجود داشته باشد.
در همین بخش ببینید آیا کاربر موردنظر به دیتابیس مقصد اضافه شده است یا فقط ساخته شده است. ساخت کاربر و ساخت دیتابیس دو مرحله جدا هستند. از بخش افزودن کاربر به دیتابیس، کاربر و دیتابیس درست را انتخاب کنید، سپس مجوزهای لازم برای عملیات موردنظر را مطابق راهنمای برنامه و سیاست سرویس بدهید. نام و ظاهر گزینه‌ها در نسخه‌های سی‌پنل متفاوت است.
برای نمونه، درون‌ریزی ساختار و داده ممکن است به مجوز ساخت جدول و درج داده نیاز داشته باشد؛ برنامه‌ای که فقط گزارش می‌خواند به همان مجموعه دسترسی نیاز ندارد. از اعطای دسترسی به همه دیتابیس‌ها یا مجوز مدیریتی سراسری صرفاً برای رفع خطا خودداری کنید. مستندات MySQL Manager سی‌پنل مسیر مدیریت و ارتباط کاربر با دیتابیس را شرح می‌دهد.
در سی‌پنل، دیتابیس و کاربر جدید را از ابزار خود سی‌پنل بسازید، نه با ساخت مستقیم آن‌ها در phpMyAdmin. سی‌پنل هشدار می‌دهد ساخت مستقیم از phpMyAdmin می‌تواند نگاشت حساب و عملکرد بکاپ و بازیابی را دچار مشکل کند.

قدم دوم: داخل فایل SQL دنبال نام دیتابیس قبلی بگردید

اگر فایل بکاپ متعلق به هاست دیگری است، ممکن است شامل دستورهایی مانند نمونه زیر باشد:
کد / دستورCREATE DATABASE `old_account_shop`; USE `old_account_shop`;
در این مثال، حتی اگر در phpMyAdmin دیتابیس جدید را انتخاب کرده باشید، دستور USE داخل فایل تلاش می‌کند کار را روی دیتابیس قدیمی ادامه دهد. دستور CREATE DATABASE هم ممکن است در هاست اشتراکی با کاربری که مجوز ساخت دیتابیس ندارد رد شود. نام واقعی و دستور خطادار را از پیام Import و فایل بکاپ خودتان پیدا کنید.
اگر به سایت قبلی دسترسی دارید، از دیتابیس درست یک خروجی سازگار تهیه کنید که به‌جای ایجاد یا انتخاب دیتابیس قدیمی، شامل ساختار و داده جدول‌های موردنیاز باشد. گزینه‌های Export در نسخه‌های phpMyAdmin متفاوت‌اند؛ پیش از انتخاب، پیش‌نمایش را بخوانید و فایل اصلی را نگه دارید. سپس در phpMyAdmin مقصد ابتدا نام دیتابیس آزمایشی و خالی را در ستون کناری انتخاب کنید و همان فایل مناسب را در تب Import بارگذاری کنید.
اگر ناچار به ویرایش فایل هستید، فقط روی یک کپی کار کنید و اثر دستورهای انتخاب دیتابیس، نام‌های صریح جدول‌ها، رویه‌ها و دستورهای تغییر ساختار را با فرد آشنا به SQL بررسی کنید. حذف خودکار همه خط‌های دارای نام قدیمی یا جایگزینی بی‌قید متن می‌تواند داده یا دستورهای دیگر را خراب کند. فایل بزرگ یا حساس را در ابزار آنلاین ناشناس بارگذاری نکنید.

اگر در خط فرمان با کاربر برنامه وصل می‌شوید

این مرحله برای کسی است که SSH و مشتری MySQL یا MariaDB در اختیار دارد. نام کاربر نمونه را با نام کامل واقعی جایگزین کنید:
کد / دستورmysql -u account_user -p
پس از اجرا، برنامه رمز را جداگانه می‌خواهد؛ آن را داخل خود فرمان ننویسید تا در تاریخچه پوسته ذخیره نشود. اگر اتصال با خطای ۱۰۴۵ رد شد، ابتدا نام، رمز و میزبان مجاز را بررسی کنید. در هاست‌هایی که دسترسی خط فرمان دیتابیس ندارند، از پنل یا مدیر سرویس استفاده کنید.
اگر وارد محیط MySQL شدید، این دستور مجوزهای حساب مؤثر در نشست را نشان می‌دهد:
کد / دستورSHOW GRANTS FOR CURRENT_USER;
خروجی را برای نام دیتابیس مقصد و سطح دسترسی مربوط بخوانید. حسابی که برنامه با آن اجرا می‌شود ممکن است با حسابی که phpMyAdmin در پنل میزبانی استفاده می‌کند یکسان نباشد. بنابراین موفقیت Import از داخل پنل به‌تنهایی ثابت نمی‌کند کاربر تنظیم‌شده در برنامه هم به دیتابیس دسترسی دارد.
اگر دیتابیس به کاربر برنامه وصل نیست، در سی‌پنل ارتباط و مجوز لازم را اصلاح کنید. در سرور شخصی بدون پنل نیز تغییر مجوز باید توسط مدیر دیتابیس و محدود به همان حساب، میزبان و دیتابیس انجام شود. دادن GRANT سراسری یا استفاده دائمی از کاربر root در فایل تنظیمات سایت، راه مناسبی برای رفع سریع خطا نیست.

اگر باز هم خطا می‌بینید

نام دیتابیسی را که در پیام خطا آمده با نام کامل مقصد مقایسه کنید. اگر نام خطا هنوز قدیمی است، احتمال دارد فایل SQL یا تنظیم برنامه همچنان همان نام را انتخاب کند. اگر نام درست است، مجوز حسابی را بررسی کنید که واقعاً دستور را اجرا می‌کند، نه صرفاً کاربری که فکر می‌کنید استفاده می‌شود.
اگر خطا به جدول یا دستور دیگری تغییر کرده، متن تازه را جداگانه تحلیل کنید؛ هر خطای Import به معنی مشکل مجوز نیست. نسخه‌های MySQL و MariaDB، نوع فایل و سازگاری collation نیز ممکن است علت مستقل باشند. پیش از بازگردانی روی سایت اصلی، شمار جدول‌ها، داده نمونه و عملکرد ورود و یک عملیات آزمایشی را در نسخه جدا بررسی کنید.
پس از موفقیت، اطلاعات اتصال برنامه را با نام کامل دیتابیس و کاربر درست تطبیق دهید، دسترسی‌های موقت غیرضروری را بردارید و فایل بکاپ را در محلی غیرعمومی نگه دارید. برای میزبانی سایت وردپرسی، صفحه هاست وردپرس نت‌آرام را ببینید؛ حل ۱۰۴۴ همچنان به نام، کاربر و مجوز واقعی دیتابیس وابسته است.
برچسب‌ها:
اشتراک‌گذاری:
لینکدینتلگرامایکس
مقاله قبلی
مقاله قبلی وجود ندارد.

دیدگاه‌ها (۰)

دیدگاه‌های تاییدشده و پاسخ‌های تیم نت‌آرام