हमारे उपयोगकर्ता डेटाबेस स्तर पर दिए गए SELECT के साथ, काफी कम-स्तरीय उपयोगकर्ता के रूप में उत्पादन डेटाबेस में लॉग इन करते हैं, और उन विशिष्ट तालिकाओं पर दिए गए INSERT/UPDATE/DELETE को एक्सेस करने की आवश्यकता होती है।क्या MySQL में अस्थायी तालिकाओं को अनुमतियां असाइन करने का कोई बेहतर तरीका है?
उनके पास अस्थायी तालिकाओं को बनाने की अनुमति भी है (हमें कुछ और जटिल प्रश्नों के लिए उनकी आवश्यकता है)। समस्या यह है कि जब तक वे अस्थायी तालिकाओं को बना सकते हैं, उनके पास INSERT तक पहुंच नहीं है!
हमने जो काम किया है वह एक ही नाम की एक "असली" (लगातार?) तालिका बनाना है (लेकिन केवल एक फ़ील्ड के साथ) और उसमें डालने के लिए उनके लिए पहुंच प्रदान करना है। फिर, जब एक ही नाम के साथ अस्थायी तालिका बनाई जाती है, तो सिस्टम उस तालिका का उपयोग करेगा, न कि लगातार तालिका।
mysql> CREATE TEMPORARY TABLE `testing` (`id` INTEGER AUTO_INCREMENT PRIMARY KEY, `name` VARCHAR(30));
Query OK, 0 rows affected (0.04 sec)
mysql> INSERT INTO `testing` (`name`) VALUES ('testing');
ERROR 1142 (42000): INSERT command denied to user 'stduser'@'office.companyname.co.uk' for table 'testing'
आप (रूट के रूप में, एक और सत्र में) तालिका को पहुंच प्रदान करने की कोशिश करते हैं, तो आप नहीं कर सकते: हम सम्मिलित प्रदान कर सकते हैं
mysql> GRANT INSERT ON testdb.testing TO 'stduser'@'%';
ERROR 1146 (42S02): Table 'testdb.testing' doesn't exist
तो मेरी सवाल है, मूल रूप से,/अपडेट/उसी नाम की "लगातार" तालिका के बिना अस्थायी तालिकाओं पर हटा दें?
मैंने अभी परीक्षण वातावरण पर यह कोशिश की है, और आप वास्तव में सही हैं! शर्म की बिट आपको रचना देना है (न केवल टेम्पलेट टेबल बनाएं), लेकिन आपको बहुत धन्यवाद। – Drarok