2011-09-22 5 views
12

मुझे डेटाबेस में किसी भी विशेषाधिकार के साथ सभी उपयोगकर्ताओं को चुनना है (उदा। डेटाबेस 'mysql')। कोई सुझाव? धन्यवाद।उपयोगकर्ताओं को डेटाबेस के लिए किसी भी विशेषाधिकार के साथ दिखाएं। MySQL

उत्तर

7

mysql डेटाबेस में देखें (एक वास्तविक डीबी mysql MySQL सर्वर के अंदर, बस स्पष्ट होने के लिए)।

SELECT 'db', User, Host 
FROM db 
WHERE Db='mydatabase' 

UNION 

SELECT 'table', User, Host 
FROM tables_priv 
WHERE Db='mydatabase' 

UNION 

SELECT 'col', User, Host 
FROM columns_priv 
WHERE Db='mydatabase' 

आप दिखाना चाहिए कि तुम क्या जरूरत है: वहाँ तीन तालिकाओं (db, tables_priv, और columns_priv) जहां db/तालिका/स्तंभ privs जमा हो जाती है है।

24

सभी उपयोगकर्ताओं और उनके अनुमानित विशेषाधिकारों का एक अच्छा दृश्य। यदि कोई पासवर्ड है, तो यह एन्क्रिप्टेड स्ट्रिंग द्वारा होगा; यदि नहीं, तो यह क्षेत्र खाली है। चयन एक बहुत ही सामान्य निजी है; सम्मिलित करें डेटाबेस के भीतर टेबल हेरफेर की अनुमति देता है; शटडाउन प्रमुख प्रणाली में परिवर्तन की अनुमति देता है, और केवल रूट द्वारा प्रयोग योग्य होना चाहिए; अनुमति देने की क्षमता दूसरों से अलग है।

SELECT user, host, password, select_priv, insert_priv, shutdown_priv, grant_priv 
FROM mysql.user 

व्यक्तिगत डेटाबेस के लिए अनुमतियां देखें।

SELECT user, host, db, select_priv, insert_priv, grant_priv FROM mysql.db 
12
  • database privilegesmysql.db

  • table privileges में जमा हो जाती mysql.tables_priv

  • column privileges में जमा हो जाती mysql.columns_priv

  • routine privileges में जमा हो जाती 012,398 में जमा हो जाती

    delimiter // 
    
    CREATE PROCEDURE list_privileges (IN db_name CHAR(50)) 
    BEGIN 
        SELECT concat(Db,'.', '*') as 'what', User, Host, '...' as 'perms' 
        FROM mysql.db 
        WHERE Db=db_name 
        UNION 
        SELECT concat(Db,'.', Table_name), User, Host, table_priv 
        FROM mysql.tables_priv 
        WHERE Db=db_name and table_priv != '' 
        UNION 
        SELECT concat(Db,'.', Table_name, '(', Column_name,')'), User, Host, Column_priv 
        FROM mysql.columns_priv 
        WHERE Db=db_name 
        UNION 
        SELECT concat(Db,'.', Routine_name, '()'), User, Host, Proc_priv 
        FROM mysql.procs_priv 
        WHERE Db=db_name; 
    END// 
    
    delimiter ; 
    

    उदाहरण:

    mysql> call list_privileges("testlink2"); 
    +-----------------------------+-----------+-----------+---------+ 
    | what      | User  | Host  | perms | 
    +-----------------------------+-----------+-----------+---------+ 
    | testlink2.*     | testlink2 | %   | ...  | 
    | testlink2.*     | testlink2 | localhost | ...  | 
    | testlink2.executions  | testlink2 | %   | Select | 
    | testlink2.users(id)   | testlink2 | %   | Select | 
    | testlink2.list_privileges() | testlink2 | %   | Execute | 
    +-----------------------------+-----------+-----------+---------+ 
    5 rows in set (0.00 sec) 
    
    Query OK, 0 rows affected (0.00 sec) 
    

आप विशेषाधिकार सूची एक दुकान प्रक्रिया को परिभाषित कर सकते

संबंधित मुद्दे

 संबंधित मुद्दे