আমি কীভাবে মাইএসকিউএল রুট ব্যবহারকারীর পূর্ণ সুযোগগুলি পুনরুদ্ধার করতে পারি?


108

সারণী পরিবর্তন করার ক্ষমতা সহ আমি আমার মাইএসকিউএল রুট ব্যবহারকারী থেকে দুর্ঘটনাক্রমে কিছু সুবিধাদি সরিয়েছি removed এই ব্যবহারকারীর মূল অবস্থাতে (সমস্ত সুযোগ-সুবিধা সহ) পুনরুদ্ধার করার কোনও উপায় আছে কি?

UPDATE mysql.user SET Grant_priv = 'Y', Super_priv = 'Y' WHERE User = 'root';
# MySQL returned an empty result set (i.e. zero rows).
FLUSH PRIVILEGES ;
# MySQL returned an empty result set (i.e. zero rows).


#1045 - Access denied for user 'root'@'localhost' (using password: YES)
GRANT ALL ON *.* TO 'root'@'localhost'

1
দ্বিতীয় ত্রুটিটি একটি পাসওয়ার্ড সমস্যার মতো দেখায়। সম্ভবত আপনার 'রুট' @ 'লোকালহোস্ট' অ্যাকাউন্টটি ইতিমধ্যে অনুমান করার জন্য আমার দোষ। "ড্রপ ব্যবহারকারী 'রুট' @ 'স্থানীয় হোস্ট'; GRANT সব বিশেষ অধিকার: পুনরায় চালানোর --skip-অনুদান-টেবিল সঙ্গে mysqld, এবং To 'রুট' @ '%';" পরিবর্তে? আপনাকে কোন অ্যাকাউন্টে অ্যাক্সেস দেওয়া উচিত তা জানার সর্বোত্তম উপায় হ'ল "নির্বাচন ব্যবহারকারী, হোস্ট FROM mysql.user যেখানে ব্যবহারকারী = 'রুট';" চালানো ... এটি আপনাকে হোস্টনাম দেবে যা @ এর পরে ব্যবহার করা উচিত GRANT কমান্ডের প্রতীক।
ডিএমআই

1
মোডদের পক্ষে বিষয়টিকে অফ-টপিক হিসাবে চিহ্নিত করা খারাপ বিষয়, যখন এটি অফ-টপিকটি না হয় তবে বিষয়টির জন্য এটির জন্য উপযুক্ত আরও একটি স্ট্যাক এক্সচেঞ্জ সাইট থাকতে পারে it (মোডগুলিতে লজ্জা দিন Here) এটি এখানে যেতে পারে: dba.stackexchange.com
জন ডেভিস

আমি সম্মত হয়েছি, আমি আবার খুলতে ভোট দিয়েছি। যদি এটি ডিবিএ সাইটের অস্তিত্বের কারণে বন্ধ ছিল, তবে কমপক্ষে এটি উল্লেখ করা উচিত ছিল এবং ওপি সেখানে নির্দেশিত ছিল। (অথবা সম্ভাব্যভাবে অন্য প্রশ্নের নকল হিসাবে এখানে বন্ধ)
অবিশ্বাস্য

উত্তর:


148

যদি GRANT ALLকাজ না করে, চেষ্টা করুন:

  1. বন্ধ করুন mysqldএবং --skip-grant-tablesবিকল্পটি দিয়ে এটি পুনরায় চালু করুন ।
  2. mysqldন্যায়সঙ্গত: সহ সার্ভারের সাথে সংযুক্ত করুন mysql(যেমন কোনও -pবিকল্প নেই, এবং ব্যবহারকারীর নাম প্রয়োজন হতে পারে না)।
  3. মাইএসকিএল ক্লায়েন্টে নিম্নলিখিত কমান্ডগুলি ইস্যু করুন:

    UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';

    FLUSH PRIVILEGES;

এর পরে, আপনার চালানো GRANT ALL ON *.* TO 'root'@'localhost';এবং এটি কাজ করা উচিত।


7
1. কীভাবে স্রেফ: মাইএসকিএল সার্ভারের সাথে সংযোগ স্থাপন করবেন 2. যখন আমি আপডেট আপডেট করেছি mysql.user SET গ্র্যান্ট_প্রাইভ = '1' যেখানে ব্যবহারকারী = 'রুট'; ফ্ল্যাশ বেসামালিকাগুলি; আমি কোয়েরি ঠিক আছে, 0 টি সারি প্রভাবিত (0.00 সেকেন্ড) সারি মিলেছে: 2 টি পরিবর্তন হয়েছে: 0 সতর্কতা: 0 কোয়েরি ঠিক আছে, 0 টি সারি প্রভাবিত (0.00 সেকেন্ড)। আমি যখন রুট ব্যবহারকারী হিসাবে পিএইচপিএমআইএডমিনে লগইন করেছি, তখনও আমি "কোনও সুযোগ সুবিধার্থে" দেখতে পাচ্ছি না।
স্টিভেন

দুঃখিত, উপরের পদক্ষেপগুলির পরে আপনার উচিত সমস্ত GRANT কমান্ড চালানো। মাইএসকিএলএডে সংযোগ স্থাপন করার জন্য, আমি বোঝাতে চাইছি আপনার কোনও পাসওয়ার্ডের প্রয়োজন হবে না - কোনও ইউজারনেম কাজ করবে কিনা, বা এটি "রুট" হওয়া দরকার কিনা তা আমি মনে করতে পারি না।
ডিএমআই

2
এটা কাজ করে না. স্টিভেন যেমন বলেছিলেন, ব্যবহারকারীর টেবিলের আপডেটটি 0 টি রেকর্ডকে প্রভাবিত করে । মূল ব্যবহারকারী অনুদান দিতে অক্ষম থাকে remains
সেরিন

1
হ্যাঁ, এটি কাজ করে। এবং যদি আপনি উইন্ডোতে থাকেন তবে পাসওয়ার্ড ছাড়াই কমান্ড লাইনে মাইএসকিএল অ্যাক্সেসের skip-grant-tablesজন্য অস্থায়ীভাবে [mysqld]আপনার মাইএসকিএল কনফিগারেশন ফাইলের বিভাগে যুক্ত করুন।
মার্কাস

1
আমি 9 ঘন্টারও বেশি সময় ধরে গ্রান্ট অংশে (এটি কাজ করে না) আটকেছিলাম এবং আপনার উত্তর আমাকে বাঁচিয়েছে ... আপনি একজন জীবনকর্মী.অনেক ধন্যবাদ
আলী এসএইচ

91

আপনি যদি rootভুল করে আপনার ব্যবহারকারীকে মুছে ফেলে থাকেন তবে আপনি একটি কাজ করতে পারেন:

  1. মাইএসকিউএল পরিষেবা বন্ধ করুন
  2. চালান mysqld_safe --skip-grant-tables &
  3. লিখুন mysql -u root -pএবং এন্টার টিপুন।
  4. আপনার পাসওয়ার্ড লিখুন
  5. Mysql কমান্ড লাইনে প্রবেশ করুন: use mysql;

তারপরে এই কোয়েরিটি সম্পাদন করুন:

insert into `user` (`Host`, `User`, `Password`, `Select_priv`, `Insert_priv`, `Update_priv`, `Delete_priv`, `Create_priv`, `Drop_priv`, `Reload_priv`, `Shutdown_priv`, `Process_priv`, `File_priv`, `Grant_priv`, `References_priv`, `Index_priv`, `Alter_priv`, `Show_db_priv`, `Super_priv`, `Create_tmp_table_priv`, `Lock_tables_priv`, `Execute_priv`, `Repl_slave_priv`, `Repl_client_priv`, `Create_view_priv`, `Show_view_priv`, `Create_routine_priv`, `Alter_routine_priv`, `Create_user_priv`, `ssl_type`, `ssl_cipher`, `x509_issuer`, `x509_subject`, `max_questions`, `max_updates`, `max_connections`, `max_user_connections`) 
values('localhost','root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','','0','0','0','0');

তারপরে mysqld পুনরায় আরম্ভ করুন

সম্পাদনা: 6 অক্টোবর, 2018

অন্য কারও যদি এই উত্তরটির প্রয়োজন হয়, আমি আজ ইন্ডিডব_ভার্সন 5.6.36-82.0 এবং 10.1.24-মারিয়াডিবি ব্যবহার করে চেষ্টা করেছি এবং আপনি যদি ব্যাকটিকগুলি সরিয়ে ফেলেন তবে এটি কার্যকর হয় (কোনও একটি উদ্ধৃতিই কেবল তাদের সরাবেন না):

insert into user (Host, User, Password, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv, File_priv, Grant_priv, References_priv, Index_priv, Alter_priv, Show_db_priv, Super_priv, Create_tmp_table_priv, Lock_tables_priv, Execute_priv, Repl_slave_priv, Repl_client_priv, Create_view_priv, Show_view_priv, Create_routine_priv, Alter_routine_priv, Create_user_priv, ssl_type, ssl_cipher, x509_issuer, x509_subject, max_questions, max_updates, max_connections, max_user_connections) 
values('localhost','root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','','0','0','0','0');

1
@Bipin, অদ্ভুত সেখানে একমাত্র mysqld.exeমধ্যে binফোল্ডার না mysqld_safe.exe। "Mysqld_safe" বলতে কী বোঝ?
পেসারিয়ার

4
মাইএসকিউএল 5.5 এর জন্য আপনার আরও দুটি প্রাইভেসি প্রয়োজন, ইভেন্ট_প্রাইভ এবং ট্রিগার_প্রাইভ।
গ্রেগ বেল 23

আমি 5.5.5 এ ব্রেক হওয়ার কল্পনা করি
ওথিয়াস

1
@ পেসারিয়র - এই পোস্ট অনুসারে আপনার সত্যিকারের প্রয়োজন নেই mysqld_safe, কেবল সাধারণ মাইএসকিএলড বাইনারি চালান:mysqld.exe --skip-grant-tables
বি কেডব্লুডিজাইন

2
ERROR 1054 (42S22): Unknown column 'Password' in 'field list'
জেমি হুটার

24

আমি যখন রুট ব্যবহারকারী ছিল তখন মাইএসকিএল কনসোলে প্রদর্শিত না হওয়া মূল এবং ডাটাবেসের বিশেষাধিকারগুলিও সরিয়ে ফেলি, সুতরাং ব্যবহারকারী mysql>mysql -u 'userName' -p;এবং পাসওয়ার্ড দ্বারা পরিবর্তিত ব্যবহারকারী ;

UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';

FLUSH PRIVILEGES;

এই কমান্ডের পরে এটি সমস্ত ডেটাবেসের মূলকে দেখায়।

ধন্যবাদ


1
আমাকে জিনিসগুলির সংমিশ্রণ করতে হয়েছিল। আমাকে মাইএসকিএলড সার্ভিস বন্ধ করতে হবে, তারপরে mysqld_safe --skip-crant-tables চালিয়ে যেতে হবে, তারপরে উপরের UPDATE কমান্ডটি, তারপর mysql পুনরায় চালু করতে হবে, তারপরে সমস্ত কিছু চালান TO 'ব্যবহারকারী' @ 'লোকালহোস্ট';
নিক উডহামস

5

আমি রুটটিতে প্রবেশাধিকার এবং পুনরায় লোড করা অস্বীকার করেছিলাম। সুতরাং অনুমতিগুলি আপডেট করার পরে, ফ্ল্যাশ বেসামরিক কাজ করছে না (পুনরায় লোডের সুবিধার অভাবে)। সুতরাং আমি ইউবারআরট সুবিধাগুলি পুনরুদ্ধার করতে উবুন্টু 16.04 এ ডেবিয়ান-সিস-প্রিন্ট ব্যবহারকারী ব্যবহার করেছি। আপনি এই ফাইলটি থেকে ব্যবহারকারীর জন্য পাসওয়ার্ড পেতে পারেন

sudo cat /etc/mysql/debian.cnf

তুমি আমাকে বাঁচাও! গ্রান্ট --স্কিপ-গ্রান্ট-টেবিল মোডেও কাজ করছে না তাই উবুন্টু-সিস্টেম হিসাবে প্রবেশ করানো আমাকে আবার আমার মূল ব্যবহারকারী তৈরি করতে দেয় এবং আমি সমস্ত সুযোগ
লুনিক্স 15

4
GRANT ALL ON *.* TO 'user'@'localhost' with GRANT OPTION;

কেবলমাত্র সংশ্লিষ্ট পাসওয়ার্ড ব্যবহার করে রুট থেকে লগ ইন করুন এবং উপরের কমান্ডটি ব্যবহারকারী হিসাবে যা কিছু তা চালান run

উদাহরণ স্বরূপ:

GRANT ALL ON *.* TO 'root'@'%' with GRANT OPTION;

3
তবে যদি 'রুট' ব্যবহারকারীর প্রাইভেলজেজগুলি হারিয়ে যায়, তবে কীভাবে এই কাজ করতে পারে, মূল ব্যবহারকারীকে এটি করার জন্য উন্নততর সুবিধাগুলির প্রয়োজন হয় না? এটি আমার পক্ষে কার্যকর হয়নি।
তেরুংওয়া

3

প্রতিটি কলাম সুবিধায় mysql.userমান সহ সন্নিবেশ বা আপডেট করুন Y


2

আপনি যদি স্থানীয় কম্পিউটারে ডাব্লুএইচএমপি ব্যবহার করে থাকেন (মাইএসকিএল সংস্করণ 5.7.14) পদক্ষেপ 1: my.ini ফাইলটি খুলুন পদক্ষেপ 2: এই লাইনটি 'স্কিপ-গ্রান্ট-টেবিলগুলি' অর্ধ-কোলন পদক্ষেপ 3 সরিয়ে আন-মন্তব্য করুন: মাইএসকিএল পুনরায় চালু করুন সার্ভার পদক্ষেপ 4: মাইএসকিউএল কনসোল পদক্ষেপ 5 চালু করুন:

UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';
FLUSH PRIVILEGES;

পদক্ষেপ:: সমস্যার সমাধান !!!!

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.