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 Panel
上Administrative 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 应用程序