রাজনৈতিকভাবে সঠিক অর্থে, আপনি যা চেয়েছিলেন তা অসম্ভব। কেন?
সুপার বিশেষাধিকার একটি বিশ্বব্যাপী বিশেষাধিকার, না একটি ডাটাবেস স্তর সুযোগ।
আপনি যখন ব্যবহারকারী তৈরি করেছেন
grant all privileges on db1.* to user1@'%' with grant option;
আপনি mysql.user
ব্যবহারকারীর = ব্যবহারকারী 1 এবং হোস্ট = '%' দিয়ে সারণীটি তৈরি করেছেন। অন্যান্য সমস্ত কলাম (বৈশ্বিক সুবিধাগুলি) 'এন' এ ডিফল্ট হয়েছিল। সেই কলামগুলির মধ্যে একটি হ'ল Super_priv
। টেবিলটি এখানে:
mysql> desc mysql.user;
+------------------------+-----------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------------+-----------------------------------+------+-----+---------+-------+
| Host | char(60) | NO | PRI | | |
| User | char(16) | NO | PRI | | |
| Password | char(41) | NO | | | |
| Select_priv | enum('N','Y') | NO | | N | |
| Insert_priv | enum('N','Y') | NO | | N | |
| Update_priv | enum('N','Y') | NO | | N | |
| Delete_priv | enum('N','Y') | NO | | N | |
| Create_priv | enum('N','Y') | NO | | N | |
| Drop_priv | enum('N','Y') | NO | | N | |
| Reload_priv | enum('N','Y') | NO | | N | |
| Shutdown_priv | enum('N','Y') | NO | | N | |
| Process_priv | enum('N','Y') | NO | | N | |
| File_priv | enum('N','Y') | NO | | N | |
| Grant_priv | enum('N','Y') | NO | | N | |
| References_priv | enum('N','Y') | NO | | N | |
| Index_priv | enum('N','Y') | NO | | N | |
| Alter_priv | enum('N','Y') | NO | | N | |
| Show_db_priv | enum('N','Y') | NO | | N | |
| Super_priv | enum('N','Y') | NO | | N | |
| Create_tmp_table_priv | enum('N','Y') | NO | | N | |
| Lock_tables_priv | enum('N','Y') | NO | | N | |
| Execute_priv | enum('N','Y') | NO | | N | |
| Repl_slave_priv | enum('N','Y') | NO | | N | |
| Repl_client_priv | enum('N','Y') | NO | | N | |
| Create_view_priv | enum('N','Y') | NO | | N | |
| Show_view_priv | enum('N','Y') | NO | | N | |
| Create_routine_priv | enum('N','Y') | NO | | N | |
| Alter_routine_priv | enum('N','Y') | NO | | N | |
| Create_user_priv | enum('N','Y') | NO | | N | |
| Event_priv | enum('N','Y') | NO | | N | |
| Trigger_priv | enum('N','Y') | NO | | N | |
| Create_tablespace_priv | enum('N','Y') | NO | | N | |
| ssl_type | enum('','ANY','X509','SPECIFIED') | NO | | | |
| ssl_cipher | blob | NO | | NULL | |
| x509_issuer | blob | NO | | NULL | |
| x509_subject | blob | NO | | NULL | |
| max_questions | int(11) unsigned | NO | | 0 | |
| max_updates | int(11) unsigned | NO | | 0 | |
| max_connections | int(11) unsigned | NO | | 0 | |
| max_user_connections | int(11) unsigned | NO | | 0 | |
| plugin | char(64) | YES | | | |
| authentication_string | text | YES | | NULL | |
| password_expired | enum('N','Y') | NO | | N | |
+------------------------+-----------------------------------+------+-----+---------+-------+
43 rows in set (0.00 sec)
mysql>
Super_priv
ঠিক পরে প্রদর্শিত হবে Show_db_priv
।
ডাটাবেস স্তরের সুবিধাগুলি পপুলিটেড হয়েছে mysql.db
। এই যে এটা:
mysql> desc mysql.db;
+-----------------------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------+---------------+------+-----+---------+-------+
| Host | char(60) | NO | PRI | | |
| Db | char(64) | NO | PRI | | |
| User | char(16) | NO | PRI | | |
| Select_priv | enum('N','Y') | NO | | N | |
| Insert_priv | enum('N','Y') | NO | | N | |
| Update_priv | enum('N','Y') | NO | | N | |
| Delete_priv | enum('N','Y') | NO | | N | |
| Create_priv | enum('N','Y') | NO | | N | |
| Drop_priv | enum('N','Y') | NO | | N | |
| Grant_priv | enum('N','Y') | NO | | N | |
| References_priv | enum('N','Y') | NO | | N | |
| Index_priv | enum('N','Y') | NO | | N | |
| Alter_priv | enum('N','Y') | NO | | N | |
| Create_tmp_table_priv | enum('N','Y') | NO | | N | |
| Lock_tables_priv | enum('N','Y') | NO | | N | |
| Create_view_priv | enum('N','Y') | NO | | N | |
| Show_view_priv | enum('N','Y') | NO | | N | |
| Create_routine_priv | enum('N','Y') | NO | | N | |
| Alter_routine_priv | enum('N','Y') | NO | | N | |
| Execute_priv | enum('N','Y') | NO | | N | |
| Event_priv | enum('N','Y') | NO | | N | |
| Trigger_priv | enum('N','Y') | NO | | N | |
+-----------------------+---------------+------+-----+---------+-------+
22 rows in set (0.00 sec)
mysql>
নোটিশ যে Super_priv
বিদ্যমান নেই mysql.db
।
খাঁটি এসকিউএল পদগুলিতে এটি দেখতে, ব্যবহারকারীরূপে লগইন করুন এবং চালান SHOW GRANTS;
আউটপুটে দুটি লাইন থাকবে:
GRANT USAGE ON *.* TO user1@'%' ...
GRANT ALL PRIVILEGES ON db1.* TO user1@'%' ...
আপনি চেষ্টা করতে পারেন এমন একটি হ্যাক রয়েছে তবে আমি সাধারণত এটির পরামর্শ দিই না।
স্টেপ 01) মাইএসকিএলকে রুট @ লোকালহোস্ট হিসাবে লগইন করুন (সমস্ত প্রাইভেস থাকা উচিত)
পদক্ষেপ 02) এই কোয়েরিটি চালান
UPDATE mysql.user SET Super_Priv='Y' WHERE user='user1' AND host='%';
পদক্ষেপ 03) এই কোয়েরিটি চালান
FLUSH PRIVILEGES;
তাত্ত্বিকভাবে কাজ করা উচিত। তারপরে, ব্যবহারকারী 1 কাজ করতে পারে (আমি কোনও গ্যারান্টি দিচ্ছি না)।
আপডেট 2014-12-19 15:24 EST
সবে জিজ্ঞাসা করেছেন মেটাফ্যানিয়েল
দুর্দান্ত ব্যাখ্যা, ধন্যবাদ। তবে যদি আপনি সমস্যাটি সমাধান করার জন্য সেই উপায়ে সই না করেন, তবে এই সুপার_প্রাইভ ব্যবহারকারীর পক্ষে সবচেয়ে ভাল উপায় কোনটি? ধন্যবাদ! - মেটাফ্যানিয়েল
যেহেতু কেবলমাত্র ডিবি অ্যাক্সেস সহ কোনও ব্যবহারকারীকে সুপার থাকতে পারে না , তাই কেবলমাত্র ডাম্পের মধ্যে ডিফাইনারটি নিজেই পরিবর্তন করতে পারেন is মূল ধারণাটি হ'ল একা একটি পাঠ্য ফাইলের রুটিনগুলিকে মাইএসকিএলড্প করা। তারপরে, এটিকে সংশোধন করুন user1@'%'
। তারপরে, আপনার পুনরায় লোড করতে সক্ষম হওয়া উচিত।
দর্শনের জন্য একই জিনিস