[英]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 -U postgres
在数据库名称的情况下对我工作正常:postgres 和用户名:postgres。 所以你不需要写 sudo。
在其他数据库的情况下,您可以尝试
psql -U yourdb postgres
正如 Postgres 帮助中给出的那样:
psql [OPTION]... [DBNAME [USERNAME]]
我使用su - postgres
和sudo -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.