我刚刚安装了Postgres,并且已经修补了它和各种配置1-2小时。
我坚持无法更改为postgres-user
$ su - postgres
会产生以下错误:su: unknown login: postgres
$ sudo -u postgres psql
会产生以下错误:sudo: unknown user: postgres
这些尝试是作为普通用户进行的。以root身份尝试它们具有完全相同的结果。我在OS X上通过Homebrew安装了postgres,我已经多次阅读了这些说明。
答案 0 :(得分:73)
psql
:使用我的默认用户名
psql -U postgres
:以postgres用户身份登录
似乎并不需要Sudo。
我将Postgres.app用于我的OS X postgres数据库。它消除了确保安装正常并且数据库服务器正确启动的麻烦。请在此处查看:http://postgresapp.com
编辑:感谢@Erwin Brandstetter纠正我对参数的使用。
答案 1 :(得分:17)
OS X倾向于在系统帐户名前加上“_”;你没有说你正在使用什么版本的OS X,但至少在10.8和10.9中,_postgres用户存在于默认安装中。请注意,您将无法su
到此帐户(root用户除外),因为它没有密码。另一方面,sudo -u _postgres
应该可以正常工作。
答案 2 :(得分:15)
按psql --help
,如果您没有为数据库名称设置选项(没有-d
选项),那么它就是您的用户名,如果您没有-U
,数据库用户名也是你的用户名等。
但是通过initdb
(创建第一个数据库)命令,它不会将您的用户名作为任何数据库名称。它有一个名为postgres
的数据库。 The first database is always created by the initdb command when the data storage area is initialized. This database is called 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
默认会有效。
答案 3 :(得分:3)
这里的讨论和答案对我很有帮助:
答案 4 :(得分:3)
psql -U postgres
在db名称的情况下工作得很好:postgres&amp;用户名:postgres。所以你不需要写sudo。
在其他数据库的情况下,您可以尝试
psql -U yourdb postgres
正如Postgres的帮助所示:
psql [OPTION]... [DBNAME [USERNAME]]
答案 5 :(得分:2)
我与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安装后有一些特定的命令可以将新用户添加到数据库系统。 在initdb之后,按照here
所述运行以下命令createuser --pwprompt postgres
createdb -Opostgres -Eutf8 masi_development
psql -U postgres -W masi_development
要始终避免密码请求,您有三个选项,如here所述。
答案 6 :(得分:2)
对我来说,这是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
您将登录到该数据库,并可以在此处创建用户进行登录
答案 7 :(得分:1)
解决方案很简单:
以root身份登录
之后:
su - postgres
psql