এই সমস্যাটি সংশোধন করার জন্য আমি অনেক পদক্ষেপ চেষ্টা করেছি। এই সমস্যাটির সম্ভাব্য সমাধানের জন্য অনেকগুলি উত্স রয়েছে যা বাজে কথা থেকে ধারণাটি ছাঁটাই করা শক্ত। অবশেষে আমি এখানে একটি ভাল সমাধান খুঁজে পেয়েছি :
পদক্ষেপ 1: ডাটাবেস সংস্করণ সনাক্ত করুন
$ mysql --version
আপনি মাইএসকিউএল এর সাথে এরকম কিছু আউটপুট দেখতে পাবেন:
$ mysql Ver 14.14 Distrib 5.7.16, for Linux (x86_64) using EditLine wrapper
বা মারিয়াডিবির জন্য এর মতো আউটপুট:
mysql Ver 15.1 Distrib 5.5.52-MariaDB, for Linux (x86_64) using readline 5.1
আপনি পরে এটি ব্যবহার করবেন সে হিসাবে কোন ডাটাবেস এবং কোন সংস্করণ আপনি চালাচ্ছেন তা নোট করুন। এরপরে, আপনাকে ডাটাবেসটি থামাতে হবে যাতে আপনি এটি ম্যানুয়ালি অ্যাক্সেস করতে পারেন।
পদক্ষেপ 2: ডাটাবেস সার্ভার বন্ধ করা
রুট পাসওয়ার্ড পরিবর্তন করতে, আপনাকে আগেই ডাটাবেস সার্ভারটি বন্ধ করতে হবে।
আপনি মাইএসকিউএল এর সাথে এটি করতে পারেন:
$ sudo systemctl stop mysql
এবং মারিয়াডিবি এর সাথে:
$ sudo systemctl stop mariadb
পদক্ষেপ 3: অনুমতি চেক ছাড়াই ডাটাবেস সার্ভার পুনরায় চালু করা
আপনি যদি মাইএসকিউএল এবং মারিয়াডিবি ব্যবহার করেন তবে ব্যবহারকারীর সুবিধাগুলি সম্পর্কে তথ্য লোড না করে এটি আপনাকে পাসওয়ার্ড না দিয়ে রুট সুবিধাগুলি সহ ডাটাবেস কমান্ড লাইন অ্যাক্সেস করতে দেয়। এটি আপনাকে অজান্তেই ডাটাবেসে অ্যাক্সেস পাওয়ার অনুমতি দেবে।
এটি করার জন্য, আপনাকে ডাটাবেসগুলিকে অনুদানের টেবিলগুলি লোড করা থেকে বিরত করতে হবে, যা ব্যবহারকারীর সুবিধার তথ্য সংরক্ষণ করে। কারণ এটি কিছুটা সুরক্ষা ঝুঁকিপূর্ণ, অন্য ক্লায়েন্টদের সংযোগ স্থাপন থেকে বিরত রাখতে আপনার নেটওয়ার্কিংও এড়ানো উচিত।
অনুদানের টেবিলগুলি লোড না করে বা নেটওয়ার্কিং সক্ষম না করে ডাটাবেসটি শুরু করুন:
$ sudo mysqld_safe --skip-grant-tables --skip-networking &
এই কমান্ডের শেষে থাকা এম্পারস্যান্ডটি এই প্রক্রিয়াটিকে পটভূমিতে চালিত করবে যাতে আপনি আপনার টার্মিনালটি ব্যবহার চালিয়ে যেতে পারেন।
এখন আপনি মূল ব্যবহারকারী হিসাবে ডাটাবেসের সাথে সংযোগ করতে পারেন, যা পাসওয়ার্ডের জন্য জিজ্ঞাসা করা উচিত নয়।
$ mysql -u root
এর পরিবর্তে আপনি তাত্ক্ষণিকভাবে একটি ডাটাবেস শেল প্রম্পট দেখতে পাবেন।
মাইএসকিউএল প্রম্পট
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
মারিয়াডিবি প্রম্পট
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
এখন আপনার রুট অ্যাক্সেস রয়েছে, আপনি রুট পাসওয়ার্ড পরিবর্তন করতে পারেন change
পদক্ষেপ 4: রুট পাসওয়ার্ড পরিবর্তন করা
mysql> FLUSH PRIVILEGES;
এখন আমরা আসলে মূল পাসওয়ার্ড পরিবর্তন করতে পারি।
জন্য মাইএসকিউএল 5.7.6 এবং নতুন সেইসাথে MariaDB 10.1.20 এবং নতুন নিম্নলিখিত কমান্ড প্রয়োগ করুন:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
জন্য মাইএসকিউএল 5.7.5 বা তার বেশি বয়সের সেইসাথে MariaDB 10.1.20 এবং বয়স্ক জন্য ব্যবহার করুন:
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');
new_password
আপনার পছন্দের নতুন পাসওয়ার্ডের সাথে প্রতিস্থাপন নিশ্চিত করুন ।
নোট: যদি ALTER USER
কমান্ড না কাজ করে, এটি সাধারণত একটি বড় সমস্যা ইঙ্গিত আছে। তবে এর UPDATE ... SET
পরিবর্তে আপনি মূল পাসওয়ার্ডটি পুনরায় সেট করার চেষ্টা করতে পারেন ।
[গুরুত্বপূর্ণ] এটি নির্দিষ্ট রেখাটি যা আমার নির্দিষ্ট সমস্যাটিকে স্থির করেছে:
mysql> UPDATE mysql.user SET authentication_string = PASSWORD('new_password') WHERE User = 'root' AND Host = 'localhost';
এর পরে অনুদানের টেবিলগুলি পুনরায় লোড করতে ভুলবেন না।
উভয় ক্ষেত্রেই, আপনার নিশ্চিত হওয়া উচিত যে কমান্ডটি সফলভাবে সম্পাদিত হয়েছে।
Query OK, 0 rows affected (0.00 sec)
পাসওয়ার্ড পরিবর্তন করা হয়েছে, সুতরাং আপনি এখন ডাটাবেস সার্ভারের ম্যানুয়াল দৃষ্টান্তটি বন্ধ করতে এবং এটি আগের মতো পুনরায় চালু করতে পারেন।
পদক্ষেপ 5: সাধারণত ডাটাবেস সার্ভারটি পুনরায় চালু করুন
টিউটোরিয়ালটি ডেটাবেস পুনরায় আরম্ভ করার জন্য আরও কিছু পদক্ষেপে চলেছে, তবে আমি ব্যবহার করা একমাত্র টুকরাটি ছিল:
মাইএসকিউএল-এর জন্য, ব্যবহার করুন:
$ sudo systemctl মাইএসকিএল
মারিয়াডিবির জন্য, ব্যবহার করুন:
$ sudo systemctl start mariadb
এখন আপনি নিশ্চিত করতে পারবেন যে চালিয়ে নতুন পাসওয়ার্ডটি সঠিকভাবে প্রয়োগ করা হয়েছে:
$ mysql -u root -p
কমান্ডটি এখন নতুন বরাদ্দকৃত পাসওয়ার্ডের জন্য অনুরোধ করা উচিত। এটি প্রবেশ করান, এবং আপনার প্রত্যাশা অনুযায়ী ডাটাবেস প্রম্পটে অ্যাক্সেস পাওয়া উচিত।
উপসংহার
আপনার এখন মাইএসকিউএল বা মারিয়াডিবি সার্ভারে প্রশাসনিক অ্যাক্সেস পুনরুদ্ধার করা আছে। আপনার চয়ন করা নতুন রুট পাসওয়ার্ডটি শক্তিশালী এবং সুরক্ষিত এবং এটি নিরাপদ স্থানে রাখুন তা নিশ্চিত করুন।