{"id":624,"date":"2025-03-22T08:00:00","date_gmt":"2025-03-22T08:00:00","guid":{"rendered":"https:\/\/datablog.roman-halliday.com\/?p=624"},"modified":"2025-03-18T14:27:26","modified_gmt":"2025-03-18T14:27:26","slug":"getting-admin-access-to-postgresql-in-gcp-using-cloud-sql-studio","status":"publish","type":"post","link":"https:\/\/datablog.roman-halliday.com\/index.php\/2025\/03\/22\/getting-admin-access-to-postgresql-in-gcp-using-cloud-sql-studio\/","title":{"rendered":"Getting admin access to PostgreSQL in GCP, using Cloud SQL Studio"},"content":{"rendered":"\n<p>I was asked by a friend to work (or at least suggest) some magic with PostgreSQL hosted in GCP. He had inherited a system configured by someone who had left the organisation, leaving some gaps in documentation and most importantly some admin passwords.<\/p>\n\n\n\n<p>In this case, it was the PostgreSQL which was being used for a production system. He didn&#8217;t have the database password for any of the users on it (everything had been done in the hosted application, for which admin access was available). When he needed to log in and see some information in the database, he was stuck.<\/p>\n\n\n\n<p>It turns out that it&#8217;s not so easy (or at least wasn&#8217;t at the time of this story) to do wheat I (or my friend) would normally do&#8230; Instead there is a bit of extra working around which isn&#8217;t so well documented (hence i thought I&#8217;d share my experience here).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The usual approach (which doesn&#8217;t work in GCP)<\/h2>\n\n\n\n<p>Using the system superuser (root\/administrator) account and launching <code>psql<\/code> and logging in as the <code>postgres<\/code> user (without actually giving a password):<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">sudo -u postgres psql postgres<\/pre>\n\n\n\n<p>Once in as the <code>postgres<\/code> user, creating the new one as required. Something like:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">CREATE ROLE myuser LOGIN PASSWORD 'mypass';<\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">The approach for GCP<\/h1>\n\n\n\n<p>Because GCP doesn&#8217;t allow someone to just jump into PostgreSQL from the root account, we had to get a little creative. The steps were:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Create user in <code>SQL -> &lt;database> -> Users<\/code><\/li>\n\n\n\n<li>Log in using Cloud SQL Studio (or your preferred tool)<\/li>\n\n\n\n<li>Grant\/copy access to databases\/objects as required from the existing user, to the new one.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Create a new user<\/h2>\n\n\n\n<p>Follow the guidance, see the Google Documentation here: <a href=\"https:\/\/cloud.google.com\/sql\/docs\/postgres\/create-manage-users\">Create and manage users<\/a><\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Users created with built-in authentication are granted the\u00a0<strong>cloudsqlsuperuser<\/strong>\u00a0role, and have the same set of attributes as the native\u00a0<strong>postgres<\/strong>\u00a0user. More details on this step can be found under the Google Community: <a href=\"https:\/\/www.googlecloudcommunity.com\/gc\/Databases\/CLOUDSQLADMIN-super-user-or-other-super-users-to-be-created\/m-p\/693968\">CLOUDSQLADMIN super user or other super users to be created<\/a><\/p>\n<\/blockquote>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\">Sign in to Cloud SQL Studio<\/h2>\n\n\n\n<p>Now you have a new user, you can use the built in SQL Studio: <a href=\"https:\/\/cloud.google.com\/sql\/docs\/mysql\/manage-data-using-studio\">Manage your data using Cloud SQL Studio<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Grant\/copy access<\/h2>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">-- Explained with: https:\/\/www.postgresql.org\/docs\/current\/user-manag.html\n\n-- Grant all by schema\nGRANT ALL ON SCHEMA public TO \"&lt;new_user>\";\n\n-- Clone user grants\nGRANT \"&lt;original_user>\" TO \"&lt;new_user>\";<\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">Cleaning up<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">Remove user<\/h2>\n\n\n\n<p>Normally, one would expect to drop the user simply:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">DROP ROLE \"&lt;new_user>\";<\/pre>\n<\/blockquote>\n\n\n\n<p>But, if anything has since been created leveraging the user\/role you may get an error:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Invalid request: failed to delete user new_user: . role \"new_user\" cannot be dropped because some objects depend on it<\/code><\/pre>\n\n\n\n<p>In which case, it&#8217;s time to clean up the permissions if we want to drop this new user (as with most databases, this is the reverse of granting):<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">-- Revoke if you used all permissions\nREVOKE ALL ON SCHEMA public FROM \"&lt;new_user>\";\n\n-- Revoke if you copied access:\nREVOKE \"&lt;original_user>\" FROM \"&lt;new_user>\";\n\n-- Revoke if you set database level permissions (not in the above guide)\nREVOKE ALL ON DATABASE &lt;database> FROM \"&lt;new_user>\";<\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">Notes &amp; Links<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">Looking into Ownership &amp; Permissions<\/h2>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">-- Table Permissions:\nSELECT *\n  FROM information_schema.role_table_grants \n WHERE 1=1\n   AND UPPER(grantee) = UPPER('new_user')\n;\n\n-- Ownership:\nSELECT *\n  FROM pg_tables \n WHERE 1=1\n   AND UPPER(tableowner) = UPPER('new_user')\n;\n\n-- Schema permissions:\n      SELECT r.usename AS grantor,\n             e.usename AS grantee,\n             nspname,\n             privilege_type,\n             is_grantable\n        FROM pg_namespace\nJOIN LATERAL (SELECT *\n                FROM aclexplode(nspacl) AS x) a\n          ON true\n        JOIN pg_user e\n          ON a.grantee = e.usesysid\n        JOIN pg_user r\n          ON a.grantor = r.usesysid \n       WHERE 1=1\n       --AND UPPER(e.usename) = UPPER('&lt;new_user>')\n;\n\n-- View Roles (and role memberships)\n-- psql uses the bellow query when you issue \\du command.\nSELECT r.rolname,\n       r.rolsuper,\n       r.rolinherit,\n       r.rolcreaterole,\n       r.rolcreatedb,\n       r.rolcanlogin,\n       r.rolconnlimit,\n       r.rolvaliduntil,\n       ARRAY(SELECT b.rolname\n               FROM pg_catalog.pg_auth_members m\n               JOIN pg_catalog.pg_roles b ON (m.roleid = b.oid)\n              WHERE m.member = r.oid) \n       AS memberof,\n       r.rolreplication,\n       r.rolbypassrls\n  FROM pg_catalog.pg_roles r\n WHERE r.rolname !~ '^pg_'\n --AND UPPER(r.rolname) = UPPER('new_user')\n ORDER BY 1\n;\n\n-- Code for \\l command looks at :\nSELECT d.datname    AS \"Name\",\n       pg_catalog.pg_get_userbyid(d.datdba)        AS \"Owner\",\n       pg_catalog.pg_encoding_to_char(d.encoding)  AS \"Encoding\",\n       d.datcollate AS \"Collate\",\n       d.datctype   AS \"Ctype\",\n       pg_catalog.array_to_string(d.datacl, E'\\n') AS \"Access privileges\"\n  FROM pg_catalog.pg_database d\n ORDER BY 1\n;<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><\/h2>\n","protected":false},"excerpt":{"rendered":"<p>I was asked by a friend to work some magic with PostgreSQL hosted in GCP. He had inherited a system with some gaps in documentation and most importantly admin passwords.<\/p>\n","protected":false},"author":1,"featured_media":663,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,76],"tags":[75,74],"class_list":["post-624","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-databases","category-postgesql","tag-gcp","tag-security"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Getting admin access to PostgreSQL in GCP, using Cloud SQL Studio - Rows Across The Lake<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/datablog.roman-halliday.com\/index.php\/2025\/03\/22\/getting-admin-access-to-postgresql-in-gcp-using-cloud-sql-studio\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Getting admin access to PostgreSQL in GCP, using Cloud SQL Studio - Rows Across The Lake\" \/>\n<meta property=\"og:description\" content=\"I was asked by a friend to work some magic with PostgreSQL hosted in GCP. He had inherited a system with some gaps in documentation and most importantly admin passwords.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/datablog.roman-halliday.com\/index.php\/2025\/03\/22\/getting-admin-access-to-postgresql-in-gcp-using-cloud-sql-studio\/\" \/>\n<meta property=\"og:site_name\" content=\"Rows Across The Lake\" \/>\n<meta property=\"article:published_time\" content=\"2025-03-22T08:00:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/datablog.roman-halliday.com\/wp-content\/uploads\/2025\/01\/magic-black-magic-hat-wand-1469121.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"857\" \/>\n\t<meta property=\"og:image:height\" content=\"1280\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"david\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@d_roman_h\" \/>\n<meta name=\"twitter:site\" content=\"@d_roman_h\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"david\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/datablog.roman-halliday.com\\\/index.php\\\/2025\\\/03\\\/22\\\/getting-admin-access-to-postgresql-in-gcp-using-cloud-sql-studio\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/datablog.roman-halliday.com\\\/index.php\\\/2025\\\/03\\\/22\\\/getting-admin-access-to-postgresql-in-gcp-using-cloud-sql-studio\\\/\"},\"author\":{\"name\":\"david\",\"@id\":\"https:\\\/\\\/datablog.roman-halliday.com\\\/#\\\/schema\\\/person\\\/575f96d2590c3085923ff9e1b565748b\"},\"headline\":\"Getting admin access to PostgreSQL in GCP, using Cloud SQL Studio\",\"datePublished\":\"2025-03-22T08:00:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/datablog.roman-halliday.com\\\/index.php\\\/2025\\\/03\\\/22\\\/getting-admin-access-to-postgresql-in-gcp-using-cloud-sql-studio\\\/\"},\"wordCount\":423,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/datablog.roman-halliday.com\\\/#\\\/schema\\\/person\\\/575f96d2590c3085923ff9e1b565748b\"},\"image\":{\"@id\":\"https:\\\/\\\/datablog.roman-halliday.com\\\/index.php\\\/2025\\\/03\\\/22\\\/getting-admin-access-to-postgresql-in-gcp-using-cloud-sql-studio\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/datablog.roman-halliday.com\\\/wp-content\\\/uploads\\\/2025\\\/01\\\/magic-black-magic-hat-wand-1469121.jpg\",\"keywords\":[\"gcp\",\"security\"],\"articleSection\":[\"Databases\",\"PostgeSQL\"],\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/datablog.roman-halliday.com\\\/index.php\\\/2025\\\/03\\\/22\\\/getting-admin-access-to-postgresql-in-gcp-using-cloud-sql-studio\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/datablog.roman-halliday.com\\\/index.php\\\/2025\\\/03\\\/22\\\/getting-admin-access-to-postgresql-in-gcp-using-cloud-sql-studio\\\/\",\"url\":\"https:\\\/\\\/datablog.roman-halliday.com\\\/index.php\\\/2025\\\/03\\\/22\\\/getting-admin-access-to-postgresql-in-gcp-using-cloud-sql-studio\\\/\",\"name\":\"Getting admin access to PostgreSQL in GCP, using Cloud SQL Studio - Rows Across The Lake\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/datablog.roman-halliday.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/datablog.roman-halliday.com\\\/index.php\\\/2025\\\/03\\\/22\\\/getting-admin-access-to-postgresql-in-gcp-using-cloud-sql-studio\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/datablog.roman-halliday.com\\\/index.php\\\/2025\\\/03\\\/22\\\/getting-admin-access-to-postgresql-in-gcp-using-cloud-sql-studio\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/datablog.roman-halliday.com\\\/wp-content\\\/uploads\\\/2025\\\/01\\\/magic-black-magic-hat-wand-1469121.jpg\",\"datePublished\":\"2025-03-22T08:00:00+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/datablog.roman-halliday.com\\\/index.php\\\/2025\\\/03\\\/22\\\/getting-admin-access-to-postgresql-in-gcp-using-cloud-sql-studio\\\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/datablog.roman-halliday.com\\\/index.php\\\/2025\\\/03\\\/22\\\/getting-admin-access-to-postgresql-in-gcp-using-cloud-sql-studio\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/datablog.roman-halliday.com\\\/index.php\\\/2025\\\/03\\\/22\\\/getting-admin-access-to-postgresql-in-gcp-using-cloud-sql-studio\\\/#primaryimage\",\"url\":\"https:\\\/\\\/datablog.roman-halliday.com\\\/wp-content\\\/uploads\\\/2025\\\/01\\\/magic-black-magic-hat-wand-1469121.jpg\",\"contentUrl\":\"https:\\\/\\\/datablog.roman-halliday.com\\\/wp-content\\\/uploads\\\/2025\\\/01\\\/magic-black-magic-hat-wand-1469121.jpg\",\"width\":857,\"height\":1280,\"caption\":\"magic black magic hat wand 1469121\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/datablog.roman-halliday.com\\\/index.php\\\/2025\\\/03\\\/22\\\/getting-admin-access-to-postgresql-in-gcp-using-cloud-sql-studio\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/datablog.roman-halliday.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Getting admin access to PostgreSQL in GCP, using Cloud SQL Studio\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/datablog.roman-halliday.com\\\/#website\",\"url\":\"https:\\\/\\\/datablog.roman-halliday.com\\\/\",\"name\":\"Rows Across The Lake\",\"description\":\"Data &amp; Databases\",\"publisher\":{\"@id\":\"https:\\\/\\\/datablog.roman-halliday.com\\\/#\\\/schema\\\/person\\\/575f96d2590c3085923ff9e1b565748b\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/datablog.roman-halliday.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/datablog.roman-halliday.com\\\/#\\\/schema\\\/person\\\/575f96d2590c3085923ff9e1b565748b\",\"name\":\"david\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/acddbc676a1d5c73795edcf0627ee39e5aa947da9033b58373e03d93122cb3b7?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/acddbc676a1d5c73795edcf0627ee39e5aa947da9033b58373e03d93122cb3b7?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/acddbc676a1d5c73795edcf0627ee39e5aa947da9033b58373e03d93122cb3b7?s=96&d=mm&r=g\",\"caption\":\"david\"},\"logo\":{\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/acddbc676a1d5c73795edcf0627ee39e5aa947da9033b58373e03d93122cb3b7?s=96&d=mm&r=g\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Getting admin access to PostgreSQL in GCP, using Cloud SQL Studio - Rows Across The Lake","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/datablog.roman-halliday.com\/index.php\/2025\/03\/22\/getting-admin-access-to-postgresql-in-gcp-using-cloud-sql-studio\/","og_locale":"en_GB","og_type":"article","og_title":"Getting admin access to PostgreSQL in GCP, using Cloud SQL Studio - Rows Across The Lake","og_description":"I was asked by a friend to work some magic with PostgreSQL hosted in GCP. He had inherited a system with some gaps in documentation and most importantly admin passwords.","og_url":"https:\/\/datablog.roman-halliday.com\/index.php\/2025\/03\/22\/getting-admin-access-to-postgresql-in-gcp-using-cloud-sql-studio\/","og_site_name":"Rows Across The Lake","article_published_time":"2025-03-22T08:00:00+00:00","og_image":[{"width":857,"height":1280,"url":"https:\/\/datablog.roman-halliday.com\/wp-content\/uploads\/2025\/01\/magic-black-magic-hat-wand-1469121.jpg","type":"image\/jpeg"}],"author":"david","twitter_card":"summary_large_image","twitter_creator":"@d_roman_h","twitter_site":"@d_roman_h","twitter_misc":{"Written by":"david","Estimated reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/datablog.roman-halliday.com\/index.php\/2025\/03\/22\/getting-admin-access-to-postgresql-in-gcp-using-cloud-sql-studio\/#article","isPartOf":{"@id":"https:\/\/datablog.roman-halliday.com\/index.php\/2025\/03\/22\/getting-admin-access-to-postgresql-in-gcp-using-cloud-sql-studio\/"},"author":{"name":"david","@id":"https:\/\/datablog.roman-halliday.com\/#\/schema\/person\/575f96d2590c3085923ff9e1b565748b"},"headline":"Getting admin access to PostgreSQL in GCP, using Cloud SQL Studio","datePublished":"2025-03-22T08:00:00+00:00","mainEntityOfPage":{"@id":"https:\/\/datablog.roman-halliday.com\/index.php\/2025\/03\/22\/getting-admin-access-to-postgresql-in-gcp-using-cloud-sql-studio\/"},"wordCount":423,"commentCount":0,"publisher":{"@id":"https:\/\/datablog.roman-halliday.com\/#\/schema\/person\/575f96d2590c3085923ff9e1b565748b"},"image":{"@id":"https:\/\/datablog.roman-halliday.com\/index.php\/2025\/03\/22\/getting-admin-access-to-postgresql-in-gcp-using-cloud-sql-studio\/#primaryimage"},"thumbnailUrl":"https:\/\/datablog.roman-halliday.com\/wp-content\/uploads\/2025\/01\/magic-black-magic-hat-wand-1469121.jpg","keywords":["gcp","security"],"articleSection":["Databases","PostgeSQL"],"inLanguage":"en-GB","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/datablog.roman-halliday.com\/index.php\/2025\/03\/22\/getting-admin-access-to-postgresql-in-gcp-using-cloud-sql-studio\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/datablog.roman-halliday.com\/index.php\/2025\/03\/22\/getting-admin-access-to-postgresql-in-gcp-using-cloud-sql-studio\/","url":"https:\/\/datablog.roman-halliday.com\/index.php\/2025\/03\/22\/getting-admin-access-to-postgresql-in-gcp-using-cloud-sql-studio\/","name":"Getting admin access to PostgreSQL in GCP, using Cloud SQL Studio - Rows Across The Lake","isPartOf":{"@id":"https:\/\/datablog.roman-halliday.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/datablog.roman-halliday.com\/index.php\/2025\/03\/22\/getting-admin-access-to-postgresql-in-gcp-using-cloud-sql-studio\/#primaryimage"},"image":{"@id":"https:\/\/datablog.roman-halliday.com\/index.php\/2025\/03\/22\/getting-admin-access-to-postgresql-in-gcp-using-cloud-sql-studio\/#primaryimage"},"thumbnailUrl":"https:\/\/datablog.roman-halliday.com\/wp-content\/uploads\/2025\/01\/magic-black-magic-hat-wand-1469121.jpg","datePublished":"2025-03-22T08:00:00+00:00","breadcrumb":{"@id":"https:\/\/datablog.roman-halliday.com\/index.php\/2025\/03\/22\/getting-admin-access-to-postgresql-in-gcp-using-cloud-sql-studio\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/datablog.roman-halliday.com\/index.php\/2025\/03\/22\/getting-admin-access-to-postgresql-in-gcp-using-cloud-sql-studio\/"]}]},{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/datablog.roman-halliday.com\/index.php\/2025\/03\/22\/getting-admin-access-to-postgresql-in-gcp-using-cloud-sql-studio\/#primaryimage","url":"https:\/\/datablog.roman-halliday.com\/wp-content\/uploads\/2025\/01\/magic-black-magic-hat-wand-1469121.jpg","contentUrl":"https:\/\/datablog.roman-halliday.com\/wp-content\/uploads\/2025\/01\/magic-black-magic-hat-wand-1469121.jpg","width":857,"height":1280,"caption":"magic black magic hat wand 1469121"},{"@type":"BreadcrumbList","@id":"https:\/\/datablog.roman-halliday.com\/index.php\/2025\/03\/22\/getting-admin-access-to-postgresql-in-gcp-using-cloud-sql-studio\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/datablog.roman-halliday.com\/"},{"@type":"ListItem","position":2,"name":"Getting admin access to PostgreSQL in GCP, using Cloud SQL Studio"}]},{"@type":"WebSite","@id":"https:\/\/datablog.roman-halliday.com\/#website","url":"https:\/\/datablog.roman-halliday.com\/","name":"Rows Across The Lake","description":"Data &amp; Databases","publisher":{"@id":"https:\/\/datablog.roman-halliday.com\/#\/schema\/person\/575f96d2590c3085923ff9e1b565748b"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/datablog.roman-halliday.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":["Person","Organization"],"@id":"https:\/\/datablog.roman-halliday.com\/#\/schema\/person\/575f96d2590c3085923ff9e1b565748b","name":"david","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/secure.gravatar.com\/avatar\/acddbc676a1d5c73795edcf0627ee39e5aa947da9033b58373e03d93122cb3b7?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/acddbc676a1d5c73795edcf0627ee39e5aa947da9033b58373e03d93122cb3b7?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/acddbc676a1d5c73795edcf0627ee39e5aa947da9033b58373e03d93122cb3b7?s=96&d=mm&r=g","caption":"david"},"logo":{"@id":"https:\/\/secure.gravatar.com\/avatar\/acddbc676a1d5c73795edcf0627ee39e5aa947da9033b58373e03d93122cb3b7?s=96&d=mm&r=g"}}]}},"_links":{"self":[{"href":"https:\/\/datablog.roman-halliday.com\/index.php\/wp-json\/wp\/v2\/posts\/624","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/datablog.roman-halliday.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/datablog.roman-halliday.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/datablog.roman-halliday.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/datablog.roman-halliday.com\/index.php\/wp-json\/wp\/v2\/comments?post=624"}],"version-history":[{"count":6,"href":"https:\/\/datablog.roman-halliday.com\/index.php\/wp-json\/wp\/v2\/posts\/624\/revisions"}],"predecessor-version":[{"id":733,"href":"https:\/\/datablog.roman-halliday.com\/index.php\/wp-json\/wp\/v2\/posts\/624\/revisions\/733"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/datablog.roman-halliday.com\/index.php\/wp-json\/wp\/v2\/media\/663"}],"wp:attachment":[{"href":"https:\/\/datablog.roman-halliday.com\/index.php\/wp-json\/wp\/v2\/media?parent=624"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/datablog.roman-halliday.com\/index.php\/wp-json\/wp\/v2\/categories?post=624"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/datablog.roman-halliday.com\/index.php\/wp-json\/wp\/v2\/tags?post=624"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}