त्वरित संस्करण:
इस डेटाबेस में तालिकाओं तक पहुँचने के लिए डेटाबेस स्वामी को सक्षम करने के लिए मुझे क्या आदेश जारी करना चाहिए और क्या यह उस स्वामी के खाते से किया जा सकता है?
लंबा संस्करण:
मैं आरडीएस पर एक डेटाबेस बना रहा हूं। मेरे पास एक 'रूट' उपयोगकर्ता है जिसे मैंने अमेज़ॅन के साथ कॉन्फ़िगर किया है।
अमेज़ॅन स्वचालित रूप से समूह भूमिका 'rds_superuser' बनाता है जो बहुत विशेषाधिकार प्राप्त है, लेकिन वास्तव में सुपरसुसर नहीं है।
मैं आवेदन के लिए एक डेटाबेस और उपयोगकर्ता इस प्रकार बना रहा हूं:
create database master_integration;
CREATE ROLE master_application LOGIN ENCRYPTED PASSWORD '...' VALID UNTIL 'infinity';
GRANT ALL ON DATABASE master_integration TO GROUP rds_superuser WITH GRANT OPTION;
GRANT ALL ON DATABASE master_integration TO GROUP master_application;
\c master_integration;
ALTER DEFAULT PRIVILEGES GRANT INSERT, SELECT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER ON TABLES TO rds_superuser;
मैंने इस स्क्रिप्ट को अपडेट किया कि क्रेग रिंगर द्वारा सुझावों को प्रतिबिंबित करने के बारे में कि मैं इसे कैसे संभालूं।
जब एप्लिकेशन कनेक्ट होता है (तो मास्टर_एप्पलिकेशन क्रेडेंशियल के साथ) यह टेबल बनाता है (और इसलिए मालिक है)।
मेरा मुद्दा यह है कि मैं प्रश्नों को चलाने के लिए अपने प्रशासनिक (मूल) लॉग इन का उपयोग नहीं कर सकता क्योंकि उपयोगकर्ता के पास तालिका में कोई विशेषाधिकार नहीं है।
मैं आवेदन पत्र से निम्नलिखित को चलाने से पहले इसे हल करने में सक्षम रहा हूं:
GRANT ALL privileges ON ALL TABLES IN SCHEMA public to rds_superuser;
लेकिन ऐसा लगता है कि किसी अधीनस्थ उपयोगकर्ता के अनुदान को निजी तौर पर किसी प्रशासनिक उपयोगकर्ता को वापस देना है।
तो ... क्या कोई ऐसा आदेश है जो मैं एप्लिकेशन से तालिकाओं को बनाने से पहले या बाद में चला सकता हूं जो यह सुनिश्चित करेगा कि डेटाबेस का मालिक डेटाबेस के भीतर तालिकाओं तक पहुंच सकता है?
डिफ़ॉल्ट विशेषाधिकार को फिर से आज़माने के बाद अपडेट करें ...
यह अभी भी तालिकाओं तक पहुंच प्रदान नहीं करता है; मैं देख रहा हूं कि इसे कहीं और सुझाया जा रहा है और यह पूरी तरह से समझ में आता है, लेकिन यह मेरे लिए काम नहीं कर रहा है। साइकल शेल से:
master_integration=> \ddp
Default access privileges
Owner | Schema | Type | Access privileges
------------------+--------+-------+-------------------------------------------
integration_root | | table | integration_root=arwdDxt/integration_root+
| | | rds_superuser=arwdDxt/integration_root
(1 row)
master_integration=> \dp users
Access privileges
Schema | Name | Type | Access privileges | Column access privileges
--------+-------+-------+-------------------+--------------------------
public | users | table | |
(1 row)
एकीकरण_रोट मेरा सुपरयूजर-ईश उपयोगकर्ता है और उपयोगकर्ता मेरे डेटाबेस में एक तालिका है।
अपडेट करें
मुझे अमेज़न पर किसी से काफी बेकार प्रतिक्रिया मिली।
उन्होंने मुझसे मास्टर_एप्लीकेशन लॉगिन से ALTER DEFAULT PRIVILEGES पर कॉल करने के लिए कहा। हालांकि यह शायद काम करेगा, यह मेरे सवाल का जवाब नहीं देगा (जो है कि मैं इसे पूरी तरह से rds_superuser खाते से कैसे बना सकता हूं)।
मैंने उनसे इसे स्पष्ट करने के लिए कहा और वे चले गए।