সংক্ষেপে, মারিয়াডিবিতে
UPDATE mysql.user SET plugin = 'mysql_native_password',
Password = PASSWORD('NEWPASSWORD') WHERE User = 'root';
যেখানে আপনি চান পাসওয়ার্ড এবং বাকী সমস্ত শব্দ দিয়ে NEWPASSWORD প্রতিস্থাপন করুন।
এখানে সমস্যাটি হ'ল মারিয়াডিবি বা মাইএসকিউএল ইনস্টল / আপডেট করা থাকলে (বিশেষত যদি কোনও পাসওয়ার্ড ছাড়াই রুট সেট করা থাকে) তবে ব্যবহারকারীদের টেবিলে পাসওয়ার্ডটি আসলে খালি (বা উপেক্ষা করা) থাকে এবং লগ-ইন করা সিস্টেম ব্যবহারকারীর উপর নির্ভর করে একটি মাইএসকিউএল ব্যবহারকারীকে। সিস্টেম রুটে স্যুইচ করে আপনি নীচে এটি পরীক্ষা করতে পারেন, এবং তারপরে টাইপ করুন:
mysql -uroot -p
তারপরে কোনও পাসওয়ার্ড বা ভুল পাসওয়ার্ড প্রবেশ করান । আপনি সম্ভবত ঢুকতে হবে। (এমনকি আপনি যা ইউনিক্স রুট থেকে লগ ইন করতে সক্ষম হতে পারে কেবল # mysql
যেমন পাসওয়ার্ড অপ্রাসঙ্গিক এবং ব্যবহারকারী সংজ্ঞায়িত করা হয়)।
তাহলে কি হচ্ছে? ঠিক আছে, আপনি যদি রুট হিসাবে লগ ইন করেন এবং নিম্নলিখিতগুলি করেন:
select User,host,plugin from mysql.user;
+----------------+-----------+-----------------------+
| User | host | plugin |
+----------------+-----------+-----------------------+
| root | localhost | auth_socket |
+----------------+-----------+-----------------------+
আপনি নোট করবেন auth_socket
(যা unix_socket
মারিয়াডিবিতে পড়তে পারে )। এই সকেটগুলি পাসওয়ার্ডগুলি উপেক্ষা করে এবং সম্পর্কিত ইউনিক্স ব্যবহারকারীকে কোনও পাসওয়ার্ড চেক ছাড়াই অনুমতি দেয় । এজন্য আপনি রুট দিয়ে লগ ইন করতে পারবেন তবে অন্য কোনও ব্যবহারকারীর সাথে নয়।
সুতরাং সমাধানটি ব্যবহারকারীর আপডেট auth_socket/unix_socket
এবং সঠিকভাবে কোনও পাসওয়ার্ড সেট না করা।
মারিয়াডিবিতে (<10.2, নীচে মন্তব্যগুলি দেখুন) যা 2017 এর হিসাবে উবুন্টু সংস্করণ 16 এ রয়েছে এটি যথেষ্ট হওয়া উচিত। নিউপ্যাসওয়ার্ড আপনার পাসওয়ার্ড। mysql_native_password
আপনি ভার্ব্যাটিম টাইপ করুন।
UPDATE mysql.user SET plugin = 'mysql_native_password', Password = PASSWORD('NEWPASSWORD') WHERE User = 'root';
(এটি সম্ভব যে প্লাগইনটি খালি সেট করা কার্যকর হবে Y ওয়াইএমএমভি I আমি এটি চেষ্টা করি নি So তাই এটি বিকল্প।
UPDATE mysql.user SET plugin = '', Password = PASSWORD('NEWPASSWORD') WHERE User = 'root';
অন্যথায়:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'NEWPASSWORD';
তারপর
FLUSH PRIVILEGES;
রেকর্ডের জন্য, ব্যবহারকারীকে মুছে ফেলা এবং এটি '%' দিয়ে পুনরুদ্ধার করার সমাধানটি আমাকে পুরোপুরি ডাটাবেস থেকে লক করে ফেলেছে এবং আপনি যদি grant
বিবৃতিটি ঠিক সঠিকভাবে না পান তবে অন্যান্য সমস্যার কারণ হতে পারে - আপনার কাছে ইতিমধ্যে থাকা রুটটি সহজভাবে আপডেট করা সহজ।
আমার অভিজ্ঞতা হিসাবে, সমস্যাটি কেবলমাত্র রুট ব্যবহারকারীদের সাথেই ঘটে, কারণ অন্যান্য ব্যবহারকারীরা প্রাথমিকভাবে ইনস্টল / আপডেটের অংশ না হয়ে ম্যানুয়ালি যোগ করা হবে।