Re: Update "usename" in pg_user

From: Ron <ronljohnsonjr(at)gmail(dot)com>
To: pgsql-admin(at)lists(dot)postgresql(dot)org
Subject: Re: Update "usename" in pg_user
Date: 2023-11-14 14:57:11
Message-ID: 0098d2d1-c8a5-42a4-9be3-3a854cb2ff17@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-admin

On 11/14/23 08:38, Dischner, Anton wrote:
>
> Hi all,
>
> thats what Bard has to offer:
>
> write me a bash script to rename all users for postgresql. i want to
> append "@email.com"
>
> Sure, here is a bash script to rename all users for PostgreSQL and append
> "@email.com":
> Bash#!/bin/bash
>
> # Get all users
> users=$(psql -c "SELECT usename FROM pg_user;" | grep -v "postgres")
>
> # Rename all users
> for user in $users; do
> psql -c "ALTER USER $user RENAME TO $user(at)email(dot)com;"
> done
>

A one-liner, that might have to be modified for double-quote handling:
psql -c "SELECT format('ALTER ROLE %s RENAME TO \"%s(at)example(dot)com\";',
username, username) FROM pg_user WHERE username != 'postgres'\gexec"

The two username uses can be shrunk to one with appropriate use of %s
modifiers that I don't remember off the top of my head.

>
> # Display success message
> echo "All users have been renamed successfully."
>
> To use this script, simply save it as a file with a .sh extension (e.g.,
> rename_users.sh) and make it executable by running the following command:
> Bashchmod +x rename_users.sh
>
> Then, you can run the script to rename all users by running the following
> command:
> Bash./rename_users.sh
>
> This script will rename all users in the current PostgreSQL database. If
> you want to rename all users in a specific database, you can specify the
> database name as an argument to the psql command. For example, to rename
> all users in the database "my_database", you would run the following command:
> Bashpsql -d my_database -c "SELECT usename FROM pg_user;" | grep -v "postgres"
>
> You can also modify the script to append a different string to the end of
> the usernames. For example, to append the string "@example.com", you would
> change the line "ALTER USER $user RENAME TO $user(at)email(dot)com;" to the
> following line:
> BashALTER USER $user RENAME TO $user(at)example(dot)com;
>
> Best,
>
> Anton
>

--
Born in Arizona, moved to Babylonia.

In response to

Responses

Browse pgsql-admin by date

  From Date Subject
Next Message David G. Johnston 2023-11-14 15:04:20 Re: Update "usename" in pg_user
Previous Message Holger Jakobs 2023-11-14 14:51:53 Re: Update "usename" in pg_user