Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1queJH-001AIP-05 for pgsql-admin@arkaria.postgresql.org; Sun, 22 Oct 2023 19:40:27 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1queJD-0010pz-H7 for pgsql-admin@arkaria.postgresql.org; Sun, 22 Oct 2023 19:40:24 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1queJC-0010mN-LH for pgsql-admin@lists.postgresql.org; Sun, 22 Oct 2023 19:40:23 +0000 Received: from mail-yb1-xb33.google.com ([2607:f8b0:4864:20::b33]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1queJ6-001mzY-FT for pgsql-admin@lists.postgresql.org; Sun, 22 Oct 2023 19:40:21 +0000 Received: by mail-yb1-xb33.google.com with SMTP id 3f1490d57ef6-d9caf5cc948so2448538276.0 for ; Sun, 22 Oct 2023 12:40:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1698003615; x=1698608415; darn=lists.postgresql.org; h=in-reply-to:from:references:to:content-language:subject:user-agent :mime-version:date:message-id:from:to:cc:subject:date:message-id :reply-to; bh=Q3pBe5pXefxhockhHikWzSyhVJ1/Yr0/5ZQ0pK0jCCQ=; b=F2yJQMFheN6qF5LyTL8p+jgHekElqcbDuFR9bLTwURCoyc/7NlKpxUWmm2HDefYeSj 0RpCHWReRf6+89BPsjdtrcKWHCE+/OOnKUBgwTVvy17YEvQgahwnDAgN4cNTzo8u7JaC S1pD4cQgY0GD6fqtsxBfwwwvYlHNHvYWaVbdq6YSvMWrheiT9MjBBBwV6MuGXxIw7iIk 6WuhYhCPBDR01pZaEeqiHf7xXh1xlvGrmKbsRxOUwozd1RhG8UMU1jO2NzF3E97pfLLc 0YFz32W1VxaZCcEGE768buK7AekprzBMi1AJHIPQJHIuJ6WhbEiHFsfQ1NQ42yoKgLCj u79w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1698003615; x=1698608415; h=in-reply-to:from:references:to:content-language:subject:user-agent :mime-version:date:message-id:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=Q3pBe5pXefxhockhHikWzSyhVJ1/Yr0/5ZQ0pK0jCCQ=; b=Bt6C4ThxGwp0nlNqP9QejtYti1TUBdfOZyRDGkSZdbMG6KloHpCfxqSspuD1xRkD9/ Yv/HkMfo/o2PLmwQb0SW/LTqiZ2fqlRnT0QyptvQQS6l7gxHkqmiSZCxDrE7EV8/3bWo IWHihiPNsgdZCuVppjivDflWCkN0JpDXic1sRfhUOHgGmLrwnHINt8h22DY88RHY+iGl YXP++fpgLSN8pQTOMPZqqZ67IczSNcLOJaq1ehVpkPS0LhsKo+eXferptDSrNBd/sJI1 mT29DAmfnTuRfYs8Cx1RnuL2yhPpVPKaIwTLRC//7N7LBf/iHijkmkngN+/nywYZHCzh Lyhw== X-Gm-Message-State: AOJu0Yz5EBsM3iV1IR3zKluv6+2eQgLBZKggJfx/1IqebSy3W6hPbrzd 5S2Z+HOfKqczBX7Gs9cGlwFwiokOTT8= X-Google-Smtp-Source: AGHT+IHqU9AtKBntAUSok4flp267XlFYwet4Vg3+5UDMwIG/tHUK2bKEYDsu+8v8svo1a9rbA5G7jA== X-Received: by 2002:a25:2e0a:0:b0:d9a:f977:b591 with SMTP id u10-20020a252e0a000000b00d9af977b591mr6679622ybu.17.1698003615174; Sun, 22 Oct 2023 12:40:15 -0700 (PDT) Received: from ?IPV6:2600:1700:bd2c:b810:2124:20ee:567:da69? ([2600:1700:bd2c:b810:2124:20ee:567:da69]) by smtp.googlemail.com with ESMTPSA id w1-20020a25c701000000b00d9cceda7947sm2196851ybe.3.2023.10.22.12.40.14 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 22 Oct 2023 12:40:14 -0700 (PDT) Content-Type: multipart/alternative; boundary="------------iUNPLlw3hIDswKQdjOp4mP0U" Message-ID: <5e4394dd-99b4-41b8-af38-e41f52415140@gmail.com> Date: Sun, 22 Oct 2023 14:40:13 -0500 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: User/Roles, Owner, and privileges migration strategy Content-Language: en-US To: pgsql-admin@lists.postgresql.org References: From: Ron In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------iUNPLlw3hIDswKQdjOp4mP0U Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 10/21/23 21:51, ADITYA DUVURI wrote: > Hi Team, > > Let me take a user scenario here, I have an On-premises PostgreSQL > instance with 50 databases. Out of which I need to migrate only 15 > databases. There are around 10 different users and roles and millions of > different database objects. > In this example at the database level the owner for some objects are - > image.png > > When I perform pg_dump with owners and ACL. the statements formed are - > > * Create Table2 > * Alter Owner Table2 to user2 > * Grant All privileges on Table2 to user2 > > The issue while restoring the above dump file created in any > on-premises/AWS/GCP PostgreSQL instance fails since the grant statements > have to be executed first before the Alter owner statement. Did you first run "pg_dumpall --globals-only" against the on-prem server?  (Maybe you did, and I missed it.) That has all of the CREATE and ALTER ROLE statements.  You'll have to edit it first, though, to remove references to role "postgres", and other statements that are outdated, or irrelevant to AWS RDS. -- Born in Arizona, moved to Babylonia. --------------iUNPLlw3hIDswKQdjOp4mP0U Content-Type: multipart/related; boundary="------------Zi0gQE4mrNFtSRuReavBxvmp" --------------Zi0gQE4mrNFtSRuReavBxvmp Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: 8bit On 10/21/23 21:51, ADITYA DUVURI wrote:
Hi Team,

Let me take a user scenario here, I have an On-premises PostgreSQL instance with 50 databases. Out of which I need to migrate only 15 databases. There are around 10 different users and roles and millions of different database objects.
In this example at the database level the owner for some objects are - 
image.png

When I perform pg_dump with owners and ACL. the statements formed are -
  • Create Table2
  • Alter Owner Table2 to user2
  • Grant All privileges on Table2 to user2
The issue while restoring the above dump file created in any on-premises/AWS/GCP PostgreSQL instance fails since the grant statements have to be executed first before the Alter owner statement.

Did you first run "pg_dumpall --globals-only" against the on-prem server?  (Maybe you did, and I missed it.)

That has all of the CREATE and ALTER ROLE statements.  You'll have to edit it first, though, to remove references to role "postgres", and other statements that are outdated, or irrelevant to AWS RDS.

--
Born in Arizona, moved to Babylonia.
--------------Zi0gQE4mrNFtSRuReavBxvmp Content-Type: image/png; name="image.png" Content-Disposition: inline; filename="image.png" Content-Id: Content-Transfer-Encoding: base64 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 wEzc+4F/4/MF3mr4oVQLpnbTELs+NMk8u+YConI5KbWhR453XqTnS9/bI6KlX3rea6+8dnre Hi28PpFxbRuvrdXSLz3vtQeugHs/cA18vvg3r52et0cLr09kXNvGa2u19EvP59rr91fYPy/3 /5Smi5WTLpzejK6woHiXnpybtQF445RqqVZjcq6nn4q08YzGMENvDL39VKmNt79FxgauLJLD aQ1oXdRqA7irnrzWOhqtCW+cUr3W6ljO9fRTkTae0Rhm6I2ht5+KtDltykOpJm16wfr9jBvG HRYTuApbe/aosTVW6lerw3TOUXZ+O+bOvaAlhlPrl84L7KL5lua1zeVRtZoBsF96r9KjJr1P 5frVaj2dc5Sd3465c79piWHX+km79Nhp+k9Key+gtkjAlewoUp1D66JnTm/jKcn1i9bn6jqW 8VfP4fFiyJ2LxhxtJ++fHiraF1ihZ48S5C3wP7111ELn0NrrmbNWt7Xxcv2ie8DqvULGXz2H x4shdy4as9eu9L7J6z050mPaQ2l6sXoB0cWyWhMauLvZBb+yTkqxUpsxrB+eJM1b7v3AtfD5 4j1G10/apYeanUc5S/6f0h2BA09gC76F1lhv/5StWfk6d+x2al4rGoNto33SYyZ7w9AcWDEP 0IL8A66j9/OB1nFv/5TdF/Q+lR67nZrXisZg22if9BiRfpZIzcqDiKkPpWngrRdSaj+64MBM uwpU59E/31IH6frO2nhbXCGGFrtyEshJ8681H0vtr1pvwCq79nKdR/98S62l63vi3n6FGK5q yU9KV9lVrMBJpzcmqTPvWK00186NuzcG2690rHQ6f4DZVtcM8Ban7w/pvTB3rFaay7u3z9Qb g+1XOu5s+kPprIU5XThARE+eprWh37eONVpjdzFjPxl1hRiAK9MaGa0T7v3AP/h8sd6MPWvU FWK4isv9pDR9Y7hB4Qlm5vGKmrjDhmhjPLUvlGJYuX4yz6nrBXbh3g/0mVkrK+qOzxcxJz9f nLrm1G3++u4dkhrv0buBRfM4baffn9w4dmxeO+bwrIphdNxoP/ZKPAn5jLexOd9yv4jWStpO v++9N82g98aVMeyYw7MqhlXjihVjllz6oXTnQgCtIjeO1k3iCjnvxRC98fXovanW5K6ndo2j McxeP9u+NLY3J3An5DPeLrrvt9TKFerKi6H1/tgiOnZLDLnrqV3jaAyz18+2966ldewen59J srNIIKUAeoNs6ZcuTss8YvdC4nlqNWCluVrSkvO5tpGc1jbeeeHNUZL28+YsKfXriaEkMpaY FUNPv9I6pGati4wTaYd3quWHzcGWHGrpl+Z5a672xgjsVKszK62Hkpa6yrWN1I228c4Lb46S tJ83Z0mpX08MJZGxxKwYevqV1iE1a11knEi7klv89d2RCwRWk/ys5ah3/kpqse66jpkx5NpG xqi1WXEuotZ3dGzgishpvJ23t99p76/Fuus6ZsaQaxsZo9ZmxbmIlWO36PpJKfAG1ACeiLxG DfkBrEed4YlG8/o2/9ARAAAAAOB5eCgFAAAAABzDQykAAAAA4BgeSgEAAAAAx/BQCgAAAAA4 hodSAAAAAMAxPJQCAAAAAI75fH9/Z3+hzNfX1++vAABP8rPv//4K+BP3fgBAr5HPF59fhd9y yi/2xdtRA3gi8ho15AewHnWGJxrNa/76LgAAAADgGB5KAQAAAADH8FAKAAAAADiGh1IAAAAA wDE8lAIAAAAAjuGhFAAAAABwDA+lAAAAAIBjeCgFAAAAABzDQykAAAAA4Jiuh9LP5/PfY7dT 8wIeWxf2QBnrA9zHyX3t1LzAFdjaswfKWJ/74SelndKNQQ+8j/fekxt5uiasTZzmUnoA2CNX f3IAK3j5Rf7l6ZqwNm00n+yxEw+lHWpv0ok3EefY9/rXr1//OizyIi9dJ+Sx7wBnUYPYyeZT +tkivW+Se3npOiGvtn/Vzs3GQ2kj+8awQbxbmgs5udzAP1ibOPYd4CxqEDvx+WIMaxNX29vs Gu7Y23go7WTfKJV7Dc8UuWHk8IEFI9h3gLOoQazG5wucUMq1nfvb52ey7GyS3KVAagWj5/T1 XJGUxlW1Pun4OdE5vbHS83bcyPy1Nrg+eR+93BDR97k1nyJzlMbMzaFKY1kt/bwYSrx2vbGr lvFnx9DSL42z9L2ozZ32K5F2Xhu8Vy0/armY5p9tqyK5mUrHq40RndMbKz1vx43MX2sDCMkV L/9ENJdaczYyR2nM3ByqNJbV0s+LocRr1xu7ahl/dgwt/dI4c3HnXktF2ghp57WpWfqTUr2I VOl10dNHSZtZc+prdnHlaz0A0ZMLudzq4Y1TyvnS60LO9fRTkTae0Rhm6I2ht5/KtdE9ZzRf gF16amC0bmbNqa/ZeqMGcUJPvuXyt4c3TqmuSq8LOdfTT0XaeEZjmKE3ht5+qtTG29siY8+y 7KFUL0Iv1rtoYS8816+2MF5fkfa356zaPMAdaA6XaiGnp4asdM5Rdn475s76bInhausHnJDm cSSfvdqJ1I3I9RVpf3vOqs0D4B9aJ6V6y+mpUyudc5Sd3465cw9oieHU+qXzrrb0J6W1C6gt Xq5fdDFa++q5XDzROa3adeEZdrzHOkctPz21/K2Nl+sXrYWemmkh46+ew+PFkDsXjbn32th3 cCW1PN6599T66rlcPNE5LWoQM+zII52jVgOeWo3Uxsv1i9ZbT122kPFXz+HxYsidi8YcbSfv nx4q2nfUsofSFRcwY0yv+LzzNSfeQDzDSN7lrMy/UqzkfMzs9WPfwZWsyMEZY3p77MgeTA3i ykZyO2dljpdipa5i7r5+l/nXd2fdEOTr3FGjb5ZtN/IGUjyI6s0VzdVZuWZzX2smPXY7Na8V jcG20T7psRr7Du5opDZsX1tr9qjRmrHtRuqIGsSV9Oaj1sOsfLb1pXWZHrudmteKxmDbaJ/0 mEned3uIFfPkXOah9EpaC9G+Wa19cT+73mOdx24Kb5Cur9bXzuu/QgweG8+unASerLWOqEHM tiuPdB7980r3tpXS9dUa3nn9V4ihxa6cFI97KJXF8w5PS2LYtpGxAc/pjSmtl9yxWmmunRt3 bwy2X+kYZeefMR5wd2mN5Q5Py95CDeKOWnJ8hbQmc8dqpblkbXatT28Mtl/pWGn1+vCT0h+9 i2z7rU4EXFNP7qS5ot+3jvWWnJPrPH2tV4hBse8Ac3Dvx5Xx+WI9uc7T13qFGK7iMg+lI2/I rDfTJoZXwNyU0KLn5lIycyx1hxy2Ma5Yg4hSDLvWj30HTzOSx7NqQMbRsby9hRrE1cy8H84c S92hTmyMK9YgohTDyvWTeU5db86tflI6snC68OkYtTFL5+zr3JTeqXcDi+ZL2k6/b5lrNplb j1V2zOFZFcPouLYf+w7eZKQWS3VXG7N0zr5ODWIVm1u1PE1FczJtp9+3zDWbzK3HKjvm8KyK YXTcaL/V+94lH0pzixNdMK9daUHt67VFt+OvfnNwbfb9L+WdvB7NXdHSdhUvhpV5Hx27JYbc 9dSucTSGFetnx+zpD9xBa61avXVnX6/VFjWInWyOlXJbXo/Wh2hpu4oXw8raio7dEkPuemrX OBrD7PWz7Utje3PO9PkJKHsFEkRkUdI2eq6nr6hdvLSvjV/rq2y/6Fh6PjJ+Kjc27kHe78j7 F80Lb6xczlneeaFtvPPCm6Mk7efNWVLq1xNDSWQsMSuGnn6ldVDRa7Bq6yPj1c7j3Wr5YXNx JI9zbez5lLSvjV/rq2y/6Fh6PjJ+Kjc2oCSnIjkSzT1vrFxeW955oW2888KboyTt581ZUurX E0NJZCwxK4aefqV1SM1aFxkn0q7kcj8pLV1M5CKlTa2/Pee9AZH5AFHLO+Gdv5JarLuuY2YM ubaRMWptVpwD3q5WN55abaXnuPfjTmq5LbzzV1KLddd1zIwh1zYyRq3NinMRtb6jY7fo+kkp 8AbUAJ6IvEYN+QGsR53hiUbzml8JAwAAAAA4hodSAAAAAMAxPJQCAAAAAI7hoRQAAAAAcAwP pQAAAACAY3goBQAAAAAcw0MpAAAAAOCYz/f3d/YXynx9ff3+CgDwJD/7/u+vgD9x7wcA9Br5 fPH5Vfgtp//5z3/++vvvv39/B7wPNYAnIq9RQ34A61FneKLRvOav7wIAAAAAjuGhFAAAAABw DA+lAAAAAIBjeCgFAAAAABzDQykAAAAA4BgeSgEAAAAAx/BQCgAAAAA4hodSAAAAAMAxPJQC AAAAAI7hoRQAAAAAcAwPpQAAAACAY3goBQAAAAAcw0MpAAAAAOAYHkoBAAAAAMfwUAoAAAAA OIaHUgAAAADAMTyUAgAAAACO4aEUAAAAAHAMD6UAAAAAgGN4KAUAAAAAHPLXX/8frRKipHq7 T6UAAAAASUVORK5CYII= --------------Zi0gQE4mrNFtSRuReavBxvmp-- --------------iUNPLlw3hIDswKQdjOp4mP0U--