Windows:如何将我的 PostgreSQL 用户设置为超级用户?

Posted

技术标签:

【中文标题】Windows:如何将我的 PostgreSQL 用户设置为超级用户?【英文标题】:Windows: how can I set my PostgreSQL user to the superuser? 【发布时间】:2015-07-13 01:39:19 【问题描述】:

我正在尝试使用 PostgreSQL 9.4 创建数据库。我在命令提示符下键入“psql”,然后它要求输入密码。我提供了我在安装过程中设置的密码,但它说身份验证失败。上网查了一下,我的结论是我需要使用超级用户,名为“postgres”,也就是系统用户,密码是我安装时设置的。

我现在正在尝试将 PostgreSQL 设置为这个超级用户。我花了很多时间上网寻找解决方案,但无法解决问题。我试过postgres ALTER USER myuser WITH SUPERUSER(我在Windows命令提示符下写的),但它说“alter”无法识别。现在,当我尝试使用 PostgreSQL 时,我的主要问题是我收到错误:“角色 MYUSERNAME 不存在”。(这是在我编辑 pg_hba.conf 使其不要求密码)

【问题讨论】:

您是否使用CREATE USER/ROLE 创建了 myusername 用户? @ColonelThirtyTwo 不,我没有。据我了解,我从未创建过 MYUSERNAME 用户;这就是为什么它告诉我这个角色不存在。我在安装过程中创建了一个 postgres 超级用户。 【参考方案1】:

默认情况下,psql 使用操作系统名称登录到同名数据库。如果您想以postgres 用户身份登录,您应该这样做:

psql -u postgres <any other options>

如果要求输入密码,请提供postgres 用户的密码。您现在已连接到 postgres 数据库,除了创建新用户(对安装来说是全局的)和其他数据库之外,您真的不应该做任何事情。

在控制台中,您可以创建新用户,例如:

CREATE ROLE myusername LOGIN PASSWORD secret;

还有新的数据库,例如:

CREATE DATABASE myowndb;
ALTER DATABASE myowndb OWNER TO myusername;

然后您使用\q 从控制台注销。

为了能够使用新数据库访问 PostgreSQL,您必须编辑 pg_hba.conf 文件(示例,修改以匹配您的网络设置):

host myowndb myusername 192.168.0.0/16 md5

现在您从Control PanelAdministrative tools 中的Services 选项卡重新启动PostgreSQL 服务器。

然后你就可以登录到你的新数据库了:

psql -u myusername -d myowndb

或者使用其他客户端,例如pgAdminIII

【讨论】:

@hashemelezabi:如果不想每次都指定-u postgres(或-u myusername),可以设置环境变量PGUSER,它会“覆盖”当前用户名:@987654321 @ 谢谢帕特里克。你的方法有效,我能够创建一个数据库。但是,由于我每次都需要将其设置为用户“postgres”,因此我无法在命令提示符下执行其他命令,因为如果我使用 '\q' 退出控制台,用户似乎被设置回 MYUSER。因此,我想设置 PGUSER 变量 @a_horse_with_no_name。但我做不到。让我设置这个变量的语法是什么? @HashemElezabi: google.com/… @HashemElezabi 我不明白你的问题到底是什么。一旦你创建了一个新用户和一个拥有新用户所有权的数据库,你就不再需要 postgres 用户了。无论如何,您可以将PGUSER 设置为环境变量:开始菜单,右键单击计算机,属性...,高级系统设置(无论如何在 Win 7 上)。 @a_horse_with_no_name:哦,我应该这样设置。好的,我知道如何设置它,但它的值应该是多少?postgres?谢谢。帕特里克:我创建了一个新用户(顺便说一句,CREATE ROLE 给了我一个语法错误,所以我使用了CREATE USER),我按照你的所有步骤操作,但最后它仍然说role myuser does not exist,虽然当我尝试@ 987654347@查看角色,我找到myuser。从你所说的我得出结论,ppl不要使用postgres用户;它仅用于在开始时创建其他用户。我说的对吗?

以上是关于Windows:如何将我的 PostgreSQL 用户设置为超级用户?的主要内容,如果未能解决你的问题,请参考以下文章