কীভাবে ব্যবহারকারীর পক্ষে অতি বিশেষাধিকার দেওয়া যায়?


44

আমি একটি ব্যবহারকারী তৈরি করেছি এবং ব্যবহারকারীর জন্য সুযোগ-সুবিধা দিয়েছি।

`grant all privileges on db1.* to user1@'%' with grant option;

আমার ডাটাবেসে ডাম্প আমদানি করতে আমি mysql ওয়ার্কবেঞ্চ ব্যবহার করছি। ডাটাবেস db1 এ ডাম্প আমদানি করার সময়, ত্রুটি ঘটেছিল তা উল্লেখ করে

ERROR 1227 (42000) at line 49: Access denied; you need (at least one of) the SUPER privilege(s) for this operation

এই ডাম্পগুলিতে সমস্ত টেবিল সফলভাবে আমদানি করা হয় তবে ডাটাবেসে রুটিন আমদানি করার সময় ত্রুটি ঘটে। সুবিধায় কোনও সমস্যা আছে, আমি ব্যবহারকারী 1 কে দিয়েছি। আপনার পরামর্শ দিন.

উত্তর:


35

রাজনৈতিকভাবে সঠিক অর্থে, আপনি যা চেয়েছিলেন তা অসম্ভব। কেন?

সুপার বিশেষাধিকার একটি বিশ্বব্যাপী বিশেষাধিকার, না একটি ডাটাবেস স্তর সুযোগ।

আপনি যখন ব্যবহারকারী তৈরি করেছেন

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@'%'। তারপরে, আপনার পুনরায় লোড করতে সক্ষম হওয়া উচিত।

দর্শনের জন্য একই জিনিস


মারিয়্যাডবি এবং আপডেট স্টেটমেন্ট ব্যবহার করে "ERROR 1348 (HY000): কলাম 'সুপার_প্রভিভ' আপডেটযোগ্য নয় '
c4f4t0r


-6

রুট ব্যবহারকারীর সাথে লগইন করুন এবং ডাটাবেস নির্বাচন করুন এবং নিম্নলিখিত এসকিএল কোয়েরি চালান

SET @ @ গ্লোবাল.এসকিউএল_মোড = 'NO_ENGINE_SUBSTITUTION'


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