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 用户设置为超级用户?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 SQLite 迁移到 PostgreSQL (Rails)

我无法将我的 TablePlus 连接到数字海洋 postgresql 数据库

我如何将本地 PostgreSQL 数据库复制到 Heroku for Spring Boot 应用程序

如何使用 Windows 将我的 Django 项目连接到 MySql?

如何强制 PostgreSQL 使用某个索引?

如何将我的本地数据库还原到 Windows Azure 数据库?