ในแง่ที่ถูกต้องทางการเมืองสิ่งที่คุณเพิ่งถามไปไม่ได้ ทำไม
SUPER สิทธิ์เป็นสิทธิ์ทั่วโลกไม่ได้เป็นสิทธิพิเศษระดับฐานข้อมูล
เมื่อคุณสร้างผู้ใช้งานด้วย
grant all privileges on db1.* to user1@'%' with grant option;
คุณเติมข้อมูลตารางmysql.user
ด้วย user = user1 และ host = '%' คอลัมน์อื่น ๆ ทั้งหมด (สิทธิพิเศษระดับโลก) ได้รับการตั้งค่าเริ่มต้นเป็น 'N' 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
ในการมองเห็นสิ่งนี้ในเงื่อนไขบริสุทธิ์ของแท้เข้าสู่ระบบในฐานะผู้ใช้ 1 และเรียกใช้SHOW GRANTS;
เอาต์พุตจะมีสองบรรทัด:
GRANT USAGE ON *.* TO user1@'%' ...
GRANT ALL PRIVILEGES ON db1.* TO user1@'%' ...
มีแฮ็คที่คุณสามารถลองได้ แต่ปกติฉันจะไม่แนะนำ
ขั้นตอนที่ 01) เข้าสู่ระบบ mysql ในฐานะ root @ localhost (ควรมี privs ทั้งหมด)
ขั้นตอนที่ 02) เรียกใช้แบบสอบถามนี้
UPDATE mysql.user SET Super_Priv='Y' WHERE user='user1' AND host='%';
ขั้นตอนที่ 03) เรียกใช้แบบสอบถามนี้
FLUSH PRIVILEGES;
ในทางทฤษฎีควรทำงาน จากนั้น user1 อาจใช้งานได้ (ฉันไม่รับประกัน)
อัปเดต 2014-12-19 15:24 EST
เมตาฟาเนียลเพิ่งถาม
คำอธิบายที่ดีขอบคุณ อย่างไรก็ตามถ้าคุณไม่แนะนำวิธีการแก้ปัญหาแล้ววิธีอื่นเป็นวิธีที่ดีที่สุดในการแก่นผู้ใช้ Super_priv นี้หรือไม่? ขอบคุณ! - Metafaniel
เนื่องจากผู้ใช้ที่มีการเข้าถึงฐานข้อมูลเท่านั้นจึงไม่สามารถมีSUPERสิ่งเดียวที่ทำได้คือเปลี่ยน DEFINER ด้วยตนเองในการถ่ายโอนข้อมูล แนวคิดพื้นฐานคือการ mysqldump กิจวัตรคนเดียวกับไฟล์ข้อความ จากนั้นแก้ไข definer user1@'%'
ไป จากนั้นคุณควรโหลดซ้ำได้
สิ่งเดียวกันสำหรับมุมมอง