Re: Update "usename" in pg_user

Поиск
Список
Период
Сортировка
Искать
От
Ron
Тема
Re: Update "usename" in pg_user
Дата
Msg-id
0098d2d1-c8a5-42a4-9be3-3a854cb2ff17@gmail.com
Ответ на
Список
Дерево обсуждения
Update "usename" in pg_user Bernd Lentes <bernd.lentes@helmholtz-muenchen.de>
Re: Update "usename" in pg_user Alvaro Herrera <alvherre@alvh.no-ip.org>
Re: Update "usename" in pg_user "Dischner, Anton" <Anton.Dischner@med.uni-muenchen.de>
Re: Update "usename" in pg_user Ron <ronljohnsonjr@gmail.com>
Re: Update "usename" in pg_user "David G. Johnston" <david.g.johnston@gmail.com>
Re: Update "usename" in pg_user Holger Jakobs <holger@jakobs.com>
Re: Update "usename" in pg_user Paul Smith* <paul@pscs.co.uk>
RE: Update "usename" in pg_user Bernd Lentes <bernd.lentes@helmholtz-muenchen.de>
Re: Update "usename" in pg_user Laurenz Albe <laurenz.albe@cybertec.at>
Re: Update "usename" in pg_user "David G. Johnston" <david.g.johnston@gmail.com>
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@email.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@example.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@email.com;" to the following line:
BashALTER USER $user RENAME TO $user@example.com;

 

Best,

 

Anton


--
Born in Arizona, moved to Babylonia.
В списке pgsql-admin по дате отправления
От: Holger Jakobs
Дата:
От: David G. Johnston
Дата:
FAQ