繁体   English   中英

Postgres 用户不存在?

[英]Postgres user does not exist?

我刚刚安装了 Postgres,并且已经对它和各种配置进行了 1-2 个小时的修补。

我一直无法更改为 postgres 用户

$ su - postgres产生以下错误: su: unknown login: postgres

$ sudo -u postgres psql产生以下错误: sudo: unknown user: postgres

这些尝试是作为普通用户进行的。 以 root 身份尝试它们具有完全相同的结果。 我已经在 OS X 上通过 Homebrew 安装了 postgres,并且我已经多次阅读说明。

psql : 用我的默认用户名登录

psql -U postgres : 以 postgres 用户身份登录我

我似乎不需要 Sudo。

我将 Postgres.app 用于我的 OS X postgres 数据库。 它消除了确保安装正常运行和数据库服务器正常启动的麻烦。 在这里查看: http : //postgresapp.com

编辑:感谢@Erwin Brandstetter 纠正我对参数的使用。

通过psql --help ,当您没有为数据库名称设置选项(没有-d选项)时,它将是您的用户名,如果您没有-U ,则数据库用户名也将是您的用户名,等等。

但是通过initdb (创建第一个数据库)命令,它没有您的用户名作为任何数据库名称。 它有一个名为postgres的数据库。 第一个数据库总是在数据存储区初始化时由 initdb 命令创建的。 这个数据库叫做 postgres。

因此,如果您没有另一个名为您的用户名的数据库,则需要执行psql -d postgres才能使 psql 命令工作。 似乎默认情况下它提供了-d选项, psql postgres也可以使用。

如果您创建了另一个与您的用户名相同的数据库(应该使用createdb完成),那么您只能命令psql 似乎第一个数据库用户名被 brew 设置为您的机器用户名。

psql -d <first database name> -U <first database user name>

或者,

psql -d postgres -U <your machine username>
psql -d postgres

默认情况下会工作。

OS X 倾向于在系统帐户名前加上“_”; 您没有说明您使用的是哪个版本的 OS X,但至少在 10.8 和 10.9 中,_postgres 用户存在于默认安装中。 请注意,您将无法su到此帐户(root 用户除外),因为它没有密码。 另一方面, sudo -u _postgres应该可以正常工作。

这里的讨论和回答对我非常有帮助:

psql:致命:数据库“<用户>”不存在

psql -U postgres

在数据库名称的情况下对我工作正常:postgres 和用户名:postgres。 所以你不需要写 sudo。

在其他数据库的情况下,您可以尝试

psql -U yourdb postgres

正如 Postgres 帮助中给出的那样:

psql [OPTION]... [DBNAME [USERNAME]]

我使用su - postgressudo -u postgres psql得到与 kryshah 完全相同的错误。 DanielM 的回答也给出了错误。

错误设置时的输出

然而,从 przbabu 的评论中回答。

masi$ psql
psql: FATAL:  database "masi" does not exist
masi$ psql -U postgres
psql: FATAL:  role "postgres" does not exist
masi$ psql postgres
psql (9.4.1)
Type "help" for help.

我认为这个问题的某些部分可能在 OSX 的所有者设置中

masi$ ls -al /Users/
total 0
drwxr-xr-x   7 root      admin  238 Jul  3 09:50 .
drwxr-xr-x  37 root      wheel 1326 Jul  2 19:02 ..
-rw-r--r--   1 root      wheel    0 Sep 10  2014 .localized
drwxrwxrwt   7 root      wheel  238 Apr  9 19:49 Shared
drwxr-xr-x   2 root      admin   68 Jul  3 09:50 postgres
drwxr-xr-x+ 71 masi      staff 2414 Jul  3 09:50 masi

但是做sudo chown -R postgres:staff /Users/postgres会给出chown: invalid user: 'postgres:staff'

总之,这不是解决问题的方法。 使用 postgres 安装提供的工具来创建用户和数据库。

获得正确的设置和输出

postgres 安装后有特定的命令可以将新用户添加到数据库系统。 在 initdb 之后,按照此处所述运行以下命令

createuser --pwprompt postgres
createdb -Opostgres -Eutf8 masi_development
psql -U postgres -W masi_development

为避免一直请求密码,您可以选择此处所述的三种选择。

对我来说这是 macOS 上的解决方案重新安装 psql

brew install postgres

启动 PostgreSQL 服务器

pg_ctl -D /usr/local/var/postgres start

初始化数据库

initdb /usr/local/var/postgres

如果此命令抛出错误,则 rm 旧数据库文件并重新运行上述命令

rm -r /usr/local/var/postgres

创建一个新的数据库

createdb postgres_test
psql -W postegres_test

您将登录到此数据库并可以在此处创建用户进行登录

解决方法很简单:
以 root 身份登录
之后:

su - postgres

psql

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM