Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

मैसकल में कर्सर के पास उपयोगकर्ता के अलावा अन्य अधिकार हैं?

हाँ, डिज़ाइन के अनुसार, एक कर्सर समान SELECT से भिन्न व्यवहार कर सकता है क्वेरी व्यवहार कर सकती है यदि इसे उस उपयोगकर्ता द्वारा निष्पादित किया गया था जिसने प्रक्रिया को बुलाया था।

अगर आप DEFINER निर्दिष्ट नहीं करते हैं जब आप एक संग्रहीत प्रोग्राम (प्रोक, फ़ंक्शन, ट्रिगर, या ईवेंट) या एक दृश्य बनाते हैं, तो ऑब्जेक्ट, जब एक्सेस किया जाता है, तो उस उपयोगकर्ता के विशेषाधिकारों के साथ चलता है जिसने इसे मूल रूप से परिभाषित किया था, न कि उस उपयोगकर्ता के जिसने इसे लागू किया था।

आपके पास यहां तीन विकल्प हैं:

  • वर्तमान DEFINER की अनुमतियों को सत्यापित या संभावित रूप से संशोधित करें उपयोगकर्ता यदि उपयुक्त हो; या,
  • एक अलग DEFINER निर्दिष्ट करें उपयोगकर्ता संग्रहीत प्रोग्राम या दृश्य को परिभाषित करते समय... आप ऐसा तब तक कर सकते हैं जब तक आप (वस्तु बनाने वाले व्यक्ति) के पास SUPER विशेषाधिकार, और ऑब्जेक्ट का आह्वान (एक्सेस) करने वाले उपयोगकर्ताओं के पास अस्थायी रूप से उस DEFINER के अधिकार होंगे इसके बजाय उपयोगकर्ता; या,
  • SQL SECURITY INVOKER प्रक्रियाओं, कार्यों और विचारों की परिभाषा के लिए (हालांकि ट्रिगर या ईवेंट नहीं), जिसके कारण ऑब्जेक्ट को उस उपयोगकर्ता के विशेषाधिकारों के साथ चलाना पड़ता है, जो इसे लागू करता है, निश्चित के बजाय, जो कि डिफ़ॉल्ट व्यवहार है।

मौजूदा निश्चितकर्ता की अनुमतियों को देखने के लिए, उदाहरण के लिए यदि आप DEFINER=`someguy`@`localhost`:

देखते हैं
mysql> SHOW GRANTS FOR 'someguy'@'localhost';

आप SHOW CREATE PROCEDURE procedure_name; के साथ, प्रक्रिया की परिभाषा में वर्तमान निश्चित पा सकते हैं। ।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मैं उन पंक्तियों की संख्या कैसे गिन सकता हूं जो एक MySQL क्वेरी लौटाती हैं?

  2. MySQL वर्कबेंच का उपयोग करके EC2 इंस्टेंस के माध्यम से Amazon RDS इंस्टेंस से कनेक्ट करना

  3. MySQL और एक टेबल लॉक करें, पढ़ें, और फिर छोटा करें

  4. क्या मुझे mysql_real_escape_string का उपयोग करके अपेक्षित पूर्णांक मान से बचना चाहिए या क्या मैं केवल (int)$expectedinteger का उपयोग कर सकता हूं

  5. MySQL त्रुटि के आसपास कार्य करना लॉक प्राप्त करने का प्रयास करते समय डेडलॉक मिला; लेनदेन को पुनः आरंभ करने का प्रयास करें