2011-07-06 12 views
6

मैं अपने MySQL परीक्षण डेटाबेस पर दो उपयोगकर्ता बनाना चाहता हूं, एक रिपोर्ट को उत्पन्न करने के लिए प्रासंगिक तालिकाओं तक केवल पढ़ने के लिए, अन्य, एक ही टेबल पर पढ़ने-लिखने के उपयोग के साथ। यह एक उपप्रणाली का परीक्षण करने के लिए है जो आम तौर पर केवल पढ़ने वाले उपयोगकर्ता से जुड़ता है लेकिन कुछ कार्यों के लिए रीड-राइट उपयोगकर्ता को स्विच करता है। मैंने रीड-राइट उपयोगकर्ता को सही विशेषाधिकारों के साथ बनाया है, और अब मुझे एक ही उपयोगकर्ता के केवल पढ़ने के संस्करण की आवश्यकता है।MySQL एक उपयोगकर्ता की प्रतिलिपि

मैं स्क्रैच से केवल पढ़ने के संस्करण को नहीं बनाना चाहता क्योंकि मुझे बहुत सारे विशेषाधिकार सेट करना पड़ा, जो कि श्रमिक था। क्या कोई तरीका है कि मैं मौजूदा उपयोगकर्ता के आधार पर एक नया उपयोगकर्ता बना सकता हूं और फिर नए उपयोगकर्ता से INSERT/UPDATE/DELETE निजीकरण हटा सकता हूं? CREATE USER 'user2' LIKE 'user1' या इसी तरह की कुछ? अगर यह ऐसा करना संभव है तो मुझे इसे MySQL दस्तावेज़ों में नहीं मिला।

उत्तर

4

मुझे दो विकल्प मिले।

1 यदि आप विंडोज उपयोगकर्ता हैं, तो आप MySQL व्यवस्थापक का उपयोग कर सकते हैं। http://wb.mysql.com/utilities/man/mysqluserclone.html

गुड लक: http://dev.mysql.com/doc/administrator/en/mysql-administrator-user-administration-user-accounts.html

2 आप Mysql उपयोगिताएँ से mysquserclone आदेश का उपयोग कर सकते हैं।

+0

मैं प्रशासक डाउनलोड करने गया लेकिन MySQL.com के अनुसार यह विकास बंद कर दिया गया है। वर्कबेंच उस कार्यक्षमता का समर्थन करता है? – GordonM

+0

दोनों लिंक मर गए हैं। – halloei

7

किसी अन्य तालिका में डालने के बारे में, कॉलम अपडेट करें? कुछ ऐसा:

CREATE TABLE user_tmp LIKE user; 
INSERT INTO user_tmp SELECT * FROM user WHERE host ='localhost' AND USER ='root'; 
UPDATE user_tmp SET user = 'readonlyuser', Insert_priv = 'N', Update_priv = 'N', 
    Delete_priv = 'N', /* TODO: ADAPT TO YOUR SUITS */ LIMIT 1; 
INSERT INTO user select * FROM user_tmp; 
DROP TABLE user_tmp; 
+0

धन्यवाद! मैं कुछ स्थानीयहोस्ट उपयोगकर्ताओं में बैच-एड करने का एक तरीका ढूंढ रहा था, और इसने% उपयोगकर्ताओं को उनकी अनुमतियों और सब कुछ के साथ कॉपी करना आसान बना दिया। +1 –

+1

अच्छा समाधान, लेकिन चेतावनी दीजिये कि आपको इन तालिकाओं को अद्यतन करने की आवश्यकता नहीं है। http://dev.mysql.com/doc/refman/5.7/en/grant-tables.html: से «INSERT, UPDATE, या DELETE जैसे विवरणों का उपयोग करके अनुदान तालिकाओं का प्रत्यक्ष संशोधन निराश हो गया है और स्वयं ही किया गया है जोखिम। सर्वर ऐसी संशोधनों के परिणामस्वरूप विकृत होने वाली पंक्तियों को अनदेखा करने के लिए स्वतंत्र है। » वैसे भी, आपको इसके बाद फ्लश प्राइवेट की आवश्यकता है: « स्टार्टअप पर, और रनटाइम पर जब फ्लश प्राइवेटजेस निष्पादित किया जाता है, तो सर्वर उपयोगकर्ता तालिका पंक्तियों की जांच करता है। » –

+0

विशिष्ट विशेषाधिकार तालिकाओं को क्लोन करने के लिए भी सोचें (table_priv, column_priv, procs_priv, proxies_priv) –

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