Postgresql createdb:数据库创建失败:错误:创建数据库的权限被拒绝
我对根用户、超级用户、用户和权限感到非常困惑!我无法在用户“athleticu”内创建数据库。以下是我使用的命令:-Postgresql createdb:数据库创建失败:错误:创建数据库的权限被拒绝,postgresql,root,permission-denied,role,Postgresql,Root,Permission Denied,Role,我对根用户、超级用户、用户和权限感到非常困惑!我无法在用户“athleticu”内创建数据库。以下是我使用的命令:- athleticu@ip-172-30-4-103:/home/ubuntu$createdb-T template0 simple_db1 createdb:数据库创建失败:错误:创建数据库的权限被拒绝 athleticu@ip-172-30-4-103:/home/ubuntu$sudo createdb-T template0 simple_db1 sudo:无法解析主机i
athleticu@ip-172-30-4-103:/home/ubuntu$createdb-T template0 simple_db1
createdb:数据库创建失败:错误:创建数据库的权限被拒绝
athleticu@ip-172-30-4-103:/home/ubuntu$sudo createdb-T template0 simple_db1
sudo:无法解析主机ip-172-30-4-103
createdb:无法连接到数据库模板1:致命:角色“根”不存在
请有人澄清我的疑问,告诉我应该写什么 root用户是系统上独立于Postgres的帐户。只有一个根用户 超级用户是Postgres中的一个帐户,可以访问所有内容。可能有许多超级用户 系统帐户和Postgres帐户是不同的,但除非在连接到数据库时指定Postgres用户名(通过诸如
psql
、createdb
、dropdb
等实用程序),否则,它将使用当前系统用户名,希望有一个同名的对应Postgres帐户。默认情况下,根用户在Postgres中没有相应的帐户
在*nix上安装Postgres时,它会创建名为Postgres
的超级用户和名为Postgres
的系统用户
因此,当您需要使用Postgres作为内置超级用户时,您有两个选择:
sudo su-postgres
成为postgres
系统用户并执行您的命令(createdb
,psql
等)。由于系统用户与数据库超级用户具有相同的名称,因此您的命令将作为相应的帐户进行连接-U
开关指定要执行的用户名,例如psql-U postgres…
根据您的Postgres服务器的身份验证设置,您可能需要使用其中一种或两种连接方法输入密码。嘿,我已经解决了这个问题。您需要做的是首先以postgres用户身份登录,如下所示:
$ su postgres
$ psql
postgres=# alter user athleticu createdb;
ALTER ROLE
希望它能帮助您:)在psql中键入
\du
,您将看到所有注册用户的列表以及每个用户拥有的权限类型。
为了向登录的用户(例如“user1”)授予权限,我必须使用该列表中的一个超级用户角色(例如“user2”)注销并登录,使用以下命令:
psql -U 'user2' -h localhost 'database2'
其中,“database2”是特定超级用户“user2”有权访问的数据库的名称。
以超级用户身份登录后,您可以通过以下方式向“user1”授予权限:
ALTER ROLE user1 WITH CREATEDB
或
然后以user1身份再次登录,他现在是超级用户
这很有帮助。新安装PostgreSQL后,您可以做的是创建具有某些权限的用户(请参阅): 如果希望
my user
能够执行任何操作,只需使用--superuser
标志即可:
my-user> sudo su - postgres -c "createuser <my-user> --superuser"
my user>sudo su-postgres-c“createuser--superuser”
您确定服务器的地址正确吗:“无法解析主机up-172-30-4-103”?您需要使用postgres超级用户进行连接。通常是postgres
。尝试createdb-U postgres….
实际上我正在使用:-sudo ssh-I“athleticu test keypair.pem”连接到AWS机器的实例 ubuntu@52.91.xxx.xxx
然后就变成这样:ubuntu@ip-172-30-4-103:~$
@patrick你是说我应该先登录到postgres
用户,然后再登录到athleticu
@一匹没有名字的马,谢谢当您在*nix上安装Postgres时
-您的评论中的*nix
是什么意思?它是指Unix/Linux吗?关于在ubuntu上使用postgres呢?请再澄清一点@dmfay*nix是指任何源于Unix或与Unix相关的操作系统,包括各种Linux发行版(Ubuntu就是其中之一)、BSDs和Mac OS X。
my-user> sudo su - postgres -c "createuser <my-user> --createdb"
my-user> createdb <my-db>
my-user> sudo su - postgres -c "createuser <my-user> --superuser"