2012-03-07 15 views
9

Obecnie loguję się do PostgreSQL przy użyciu psql -U postgres. Jak zmienić nazwę użytkownika postgres na root?Jak zmienić nazwę domyślnego administratora postgretu na "root"?

Jeśli jestem już zalogowany jako postgres, wówczas próba ALTER USER postgres RENAME TO root powie ERROR: session user cannot be renamed.

Czy można zmienić nazwę użytkownika bez logowania jako użytkownik postgres? Nie sądzę, żebym miał innego superużytkownika, ponieważ jest to nowa instalacja PostgreSQL.

Nawiasem mówiąc, używam Gentoo na Amazon EC2.

+1

Wyobrażam sobie: zaloguj się jako postgres, stwórz drugiego superużytkownika, zaloguj się jako nowy superużytkownik i uruchom swój ALTER –

+2

Dlaczego to zrobiłeś? Nie możesz uruchomić postmastera jako "root", ponieważ będzie on uruchamiany tylko wtedy, gdy zostanie uruchomiony jako nieuprzywilejowany użytkownik. –

+0

Czy użytkownik 'postgres' w systemie Linux musi pasować do roli' postgres' w bazie danych? Loguję się jako "root", więc chcę tylko wpisać 'psql -d coś', aby się zalogować jako przeciwny do' psl -U postgres -d something'. – hobbes3

Odpowiedz

13

Powinieneś być w stanie stworzyć nowego superużytkownika postgreza o nazwie root, logując się jako użytkownik postgresu i (przy powłoce);

createuser --superuser root 
psql> create database root owner root 

Po tym, po zalogowaniu się jako root, powinieneś być w stanie zrobić, co chcesz z użytkownikiem postgres.

+0

Czy chcesz napisać to w 'psql'? Wyglądało na to, że nic nie robi. – hobbes3

+0

@ hobbes3 Nie, ze zwykłej powłoki, nie w psql. –

+0

@ hobbes3 Nie masz przy sobie skrzynki gentoo, tylko ubuntu, ścieżki mogą nie być skonfigurowane, jeśli masz problem. –

2

Można spróbować

update pg_authid set rolname ='root' where rolname = 'postgres'; 

Ale należy pamiętać, że mlaskanie katalogi systemowe ręką zawsze jest trochę niebezpieczne.

+0

To wydaje się działać. Jaka jest różnica między rolą a użytkownikiem? Czy zalogowałem się jako użytkownik lub rola 'postgres' kiedy zrobiłem' psql -U postgres'? – hobbes3

+1

@ hobbes3: AFAIK "użytkownik" i "grupa" to terminy historyczne, które następnie zostały zwinięte do "roli". Tak więc terminy te są w dużym stopniu zamienne. Więc jesteś zalogowany z rolą/użytkownikiem "postgres". –

+1

@ hobbes3: We współczesnym PostgreSQL "użytkownicy" to [role z loginem] (http://www.postgresql.org/docs/current/interactive/sql-createuser.html), "grupy" nie istnieją. Wewnętrznie są tylko role. –

4

Co o:

ALTER ROLE postgres RENAME TO root; 

stosując inną rolę administratora?

+0

"BŁĄD: użytkownik sesji nie może zostać zmieniony". Zauważ, że OP był zalogowany jako 'postgres'. – Jawa