首先,我跑了:
sudo su postgres createuser -U postgres foouser -P
哪些工作得很好,我跑了:
createdb -U foouser -E utf8 -O foouser foodatabase -T template0
并得到“权限被拒绝:无法创build数据库”
首先,我甚至应该像postgres一样做第一个操作(假设我的postgres数据目录由postgres拥有),或者是来自任何用户的-U postgres (假设trust在pg_hba.conf )是否足够?
其次,为什么我会遇到这个错误? 这是因为用户foouser是一个非超级用户? 我应该使用postgres用户创buildfoodatabase ,并简单地-O foouser ?
您正在收到此错误,因为foouser不是超级用户,并且没有CREATE DATABASE权限。
您可以创build数据库作为您的postgres超级用户, foouser作为所有者,这可能是最理智的select。
或者你可以使用DB超级用户(绝对不推荐),或者授予用户CREATE DATABASE权限(也不是真的推荐 – 你的个人数据库用户应该是普通的普通用户,数据库所有者是他们应该拥有的最高级别的权限。 )
一般来说,我build议不要使用Postgres命令行工具。 他们没有什么问题,但是我认为使用SQL命令行与数据库进行交互是可取的。
关于CREATE DATABASE SQL命令的文档,恕我直言,比命令行文档也好。
相当于你正在做的命令的SQL就像是:
CREATE DATABASE foodatabase WITH OWNER foouser ENCODING 'utf8' TEMPLATE template0;