在pg_ctl initdb
和pg_ctl start
命令之后运行以下命令时:
C:\Program Files\PostgreSQL\11\bin>psql.exe -U postgres -h localhost
我遇到以下错误:
role "postgres" doesn't exist
所有类似的问题都是关于Linux或Mac的,它们对我没有太大帮助,所以我不知道如何解决它。
答案 0 :(得分:1)
由于您在运行-U
时未使用initdb
指定用户名,因此引导程序超级用户具有与您运行initdb
的操作系统用户的名称。
因此您可以轻松地与
建立联系psql
如果要将用户名更改为postgres
,这很简单:
-- get the name of the current user in a variable
SELECT current_user \gset
CREATE ROLE dummy SUPERUSER;
-- connect as user "dummy"
\c - dummy
-- rename the bootstrap user to "postgres"
ALTER ROLE :"current_user" RENAME TO postgres;
-- remove "dummy"
\c - postgres
DROP ROLE dummy;
-- disconnect
\q