2012-03-07 16 views
9

私は現在psql -U postgresを使ってPostgreSQLにログインしています。 postgresのユーザー名をrootに変更するにはどうすればよいですか?デフォルトのpostgresスーパーユーザの名前を "root"に変更するにはどうすればよいですか?

すでにpostgresとしてログインしている場合、ALTER USER postgres RENAME TO rootを試してみると、ERROR: session user cannot be renamedと表示されます。

ログを使わないでユーザー名をpostgresと変更することはできますか?これはPostgreSQLを新しくインストールしたので、他のスーパーユーザーはいないと思います。

ところで、私はAmazon EC2でGentooを実行しています。

+1

postgresとしてログインし、2番目のスーパーユーザーを作成し、新しいスーパーユーザーとしてログインし、ALTERを実行してください。 –

+2

なぜこれをやりますか?特権を持たないユーザとして実行した場合にのみ開始されるため、ポストマスターを「root」として実行することはできません。 –

+0

Linuxの 'postgres'ユーザは、データベースの' postgres'ロールとマッチする必要がありますか?私は 'root'でログインしますので、' psl -U postgres -d something'に反対するように 'psql -d something'と入力するだけです。 – hobbes3

答えて

13

rootという新しいpostgresスーパーユーザーを作成するには、postgresユーザーと(シェルで)入力してログインする必要があります。

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

その後、rootとしてログインすると、postgresユーザーで必要な作業を行うことができます。

+0

あなたはそれを 'psql'の中に入力すると言っていますか?それは何もしていないようだった。 – hobbes3

+0

@ hobbes3いいえ、通常のシェルからはpsqlではありません。 –

+0

@ hobbes3 gentoo boxを手軽に利用できます。ちょうどubuntuですが、問題が発生している場合はパスが設定されていない可能性があります。 –

2

あなたは

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

を試してみてくださいしかし、手作業でシステムカタログをむしゃむしゃは常に少し危険であることを、知ることができます。

+0

これはうまくいくようです。役割とユーザーの違いは何ですか? psql -U postgresを実行したとき、私は 'postgres'ユーザまたはロールとしてログインしましたか? – hobbes3

+1

@ hobbes3:AFAIK "user"と "group"は、歴史的用語で、 "role"にまとめられています。ですから、これらの用語は大きな意味を持ちます。あなたはロール/ユーザー "postgres"でログインしていました。 –

+1

@ hobbes3:現代のPostgreSQLでは、「ユーザー」は[ログインしたロール](http://www.postgresql.org/docs/current/interactive/sql-createuser.html)で、「グループ」には存在しません。内部的には役割だけがあります。 –

4

何について:

ALTER ROLE postgres RENAME TO root; 

が異なるスーパーユーザー役割を使用していますか?

+0

"ERROR:セッションユーザーの名前を変更できません"。 OPが 'postgres'としてログインしていたことに注意してください。 – Jawa

関連する問題