我学过一些 PostgreSQL。原则上,我被教导创建一个与我的 linux 用户同名的 postgress 用户。
现在我想尝试制作一个应用程序,为此我想创建一个与应用程序数据库关联的新用户。该怎么做?
我尝试了这个:
- sudo -u postgres psql postgres
- postgres = # 创建用户 myuser,密码为 'myuserpassword' createdb;
创建角色
然后我尝试使用刚刚创建的用户访问数据库 template1:
psql template1 myuser
当我输入psql template1
然后按 Tab 键时,我没有得到用户“myuser”,也不知道为什么。
感谢帮助
答案1
当我输入 psql template1 然后按 tab 键时,我没有得到用户“myuser”,也不知道为什么。
这是 bash可编程完成这里要用到的功能。看起来,对于psql
,tab当光标位于数据库名称之后时,不会在命令行上建议用户名列表。但是,如果光标位于 之后,则会生成该列表-U
。
但尚不清楚创建数据库会给您带来什么麻烦。
假设您可以使用进入 psql psql template1 myuser
,只需发出 SQL 命令
CREATE DATABASE dbname;
如果该 psql 调用失败,可能是因为pg_hba.conf
Unix 域套接字连接的策略是peer
。将出现一条明确的错误消息说明这一点。
在这种情况下,使用psql -U username -h localhost -d template1
另一种方法是从超级用户帐户(通常是)创建数据库,postgres
就像您创建用户一样,并将其所有权保留给该用户(OWNER
选项CREATE DATABASE
)。