psql:致命:angular色“postgres”不存在
我是一个postgres新手。
我安装了mac的postgres.app。 我正在玩psql命令,我不小心丢弃了postgres数据库。 我不知道里面有什么
我目前正在制作一个教程: http : //www.rosslaird.com/blog/building-a-project-with-mezzanine/
而我卡在sudo -u postgres psql postgres
错误消息: psql: FATAL: role "postgres" does not exist
$哪个psql
/Applications/Postgres.app/Contents/MacOS/bin/psql
这是打印出来的psql -l
List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges ------------+------------+----------+---------+-------+--------------------------- user | user | UTF8 | en_US | en_US | template0 | user | UTF8 | en_US | en_US | =c/user + | | | | | user =CTc/user template1 | user | UTF8 | en_US | en_US | =c/user + | | | | | user =CTc/user (3 rows)
那么我应该采取哪些措施? 删除一切与psql相关的东西,并重新安装一切?
谢谢你的帮助!
请注意,错误消息不会谈论缺less的数据库,它会谈论缺less的angular色。 后来在login过程中,它可能会偶然发现丢失的数据库。
但是,第一步是检查缺less的angular色:命令\du
psql
中的输出是什么? 在我的Ubuntu系统上,相关的行看起来像这样:
List of roles Role name | Attributes | Member of -----------+-----------------------------------+----------- postgres | Superuser, Create role, Create DB | {}
如果superuser
没有至less一个angular色,那么你有一个问题:-)
如果有的话,你可以使用它来login。 看看你的\l
命令的输出: template0
和template1
数据库上的user
权限与我的Ubuntu系统上超级用户postgres
的权限相同。 所以我认为你的设置简单地使用user
作为超级用户。 所以你可以试试这个命令来login:
sudo -u user psql user
如果user
真的是数据库超级用户,则可以为他创build另一个数据库超级用户和一个私有的空数据库:
CREATE USER postgres SUPERUSER; CREATE DATABASE postgres WITH OWNER postgres;
但是因为你的postgres.app安装似乎没有这样做,你也不应该这样做。 简单的修改教程。
关键是“我安装了mac的postgres.app”。 此应用程序使用数据库超级用户设置本地PostgresSQL安装,其angular色名称与您的login(简称)名称相同。
当Postgres.app首次启动时,它会创build$ USER数据库,这是没有指定psql的默认数据库。 默认用户是$ USER,没有密码。
一些脚本(例如,在Linux pgdump
上使用pgdump
创build的数据库备份)和教程将假定超级用户具有传统的postgres
angular色名称。
你可以让你的本地安装看起来更传统一些,并通过一次性避免这些问题:
/Applications/Postgres.app/Contents/Versions/9.*/bin/createuser -s postgres
这将使那些致命的:“postgres”的angular色不存在消失。
对于MAC:
- 安装自制软件
-
brew install postgres
-
initdb /usr/local/var/postgres
-
/usr/local/Cellar/postgresql/<version>/bin/createuser -s postgres
在启动时启动服务器
-
mkdir -p ~/Library/LaunchAgents
-
ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents
-
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
现在,它已经build立了,使用psql -U postgres -h localhost
login,或者使用PgAdmin作为GUI。
默认情况下,用户postgres
将不会有任何login密码。
查看本网站的更多文章,例如: https : //sites.google.com/site/nitinpasumarthy/blog/installingpostgresonmac
对我来说,这个代码工作:
/Applications/Postgres.app/Contents/Versions/9.4/bin/createuser -s postgres
它来自这里: http : //talk.growstuff.org/t/fatal-role-postgres-does-not-exist/216/4
首先你需要创build一个用户:
sudo -u postgres createuser --superuser $USER
创build数据库之后:
sudo -u postgres createdb $USER
将 $USER
更改 $USER
您的系统用户名。
你可以在这里看到完整的解决scheme。
在命令行上运行这个应该可以解决这个问题
/Applications/Postgres.app/Contents/Versions/9.4/bin/createdb <Mac OSX Username Here>
丢弃postgres
数据库并不重要。 这个数据库最初是空的,它的目的只是让postgres
用户有一种“家”来连接,如果需要的话。
不过你可以用SQL命令CREATE DATABASE postgres;
重新创build它CREATE DATABASE postgres;
请注意,问题中提到的教程不是用postgres.app
编写的。 一般来说,与Unix上的PostgreSQL相反, postgres.app
尝试看起来像一个普通的应用程序,而不是由一个专门的postgres
用户运行的服务。 postgres.app
由您自己的帐户运行和pipe理。
因此,不要使用以下命令: sudo -u postgres psql -U postgres
,它更多的是以postgres.app的精神来发布: psql
,它会自动连接到一个匹配用户名的数据库,同样的名字恰好是超级用户,所以它可以做任何权限明智的。
对于它的价值,我已经安装了Ubuntu和许多软件包,并与之发生冲突。
对我来说正确的答案是:
sudo -i -u postgres-xc psql
由于OpenSSL冲突,在使用Homebrew构buildPostgreSQL之后,我遇到了这个问题。
我build议如下:
重新安装OpenSSL
brew remove openssl brew install openssl
强制build立OpenSSL的符号链接
brew link --force openssl
创build新的angular色 我应该注意到,出于安全目的,我的设置涉及一个与我的标准帐户分开的pipe理员帐户。 下面的帐户可以根据需要进行调整。
sudo -u <administrator account> createuser <standard account> -d -P
此方法将使用<standard account>
作为名称创build数据库,并为其设置密码。 如果不需要,最后的标志可以被删除。
最后,postgresql操作(如createdb <dbname>
可以在不发生FATAL
错误的情况下使用。
createuser postgres --interactive
或者只是用一个超级用户postgresl
createuser postgres -s
这是唯一为我解决的问题:
createuser -s -U $USER
我不认为在这里需要sudo,因为psql -l返回一个数据库列表。 这告诉我,initdb是在用户的当前用户下运行,而不是在postgres用户下运行。
你可以:
psql
并继续教程。
我会build议AH的创buildpostgres用户和数据库的一般要点,因为许多应用程序可能会希望这存在。
简单的解释:
PostgreSQL不能以对操作系统的pipe理访问权限运行。 相反,它与普通用户一起运行,为了支持对等身份validation(询问正在尝试连接的操作系统),它将与运行初始化过程的用户创build一个用户和数据库。 在这种情况下,这是你的普通用户。
在前一天brew services stop postgresql
的时候,我遇到了执行brew services stop postgresql
问题。
下一天: brew services start postgresql
将无法正常工作。 这是因为当你使用自制软件安装时显示。 postgresql使用launchd …当您的计算机开机时加载。
parsing度:
brew services start postgresql
重启你的电脑。