问题:我可以从shell(bash,OSX)创建用户或数据库,但不能创建postgres cli。从bash我没有得到确认,如果成功。
如果我尝试在psql中创建ROLE,那么我没有得到任何响应,也没有产生任何错误。如果我尝试从bash createuser 那么如果成功则不报告任何内容,如果不成功则会生成错误:"角色用户名已经存在"。
Example:
Yunti-# CREATE ROLE testuser
Yunti-# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------+-----------
Yunti | Superuser, Create role, Create DB, Replication | {}
anything | | {}
monkey | | {}
Yunti-# CREATE DATABASE testdb
Yunti-# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+-------+----------+-------------+-------------+-------------------
Yunti | Yunti | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
postgres | Yunti | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
template0 | Yunti | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/Yunti +
| | | | | Yunti=CTc/Yunti
template1 | Yunti | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/Yunti +
| | | | | Yunti=CTc/Yunti
test | Yunti | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
test5 | Yunti | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
(6 rows)
Yunti-#
使用createdb时会发生类似的事情。
如何在postgres cli中创建用户和数据库? 在bash中对大多数postgres命令没有响应是正常的吗?
信息:用户及其特权:
Yunti-# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------+-----------
Yunti | Superuser, Create role, Create DB, Replication | {}
anything | | {}
monkey | | {}
答案 0 :(得分:10)
您的陈述未执行,因为您未使用;
正确终止这些陈述。
命令由一系列令牌组成,以分号结束(&#34 ;;")。
在提示符下,用户可以键入SQL命令。通常,当到达命令终止分号时,输入行被发送到服务器。行尾不会终止命令。因此,为了清楚起见,命令可以分布在多条线上。如果命令的发送和执行没有错误,则命令的结果将显示在屏幕上。
如果你这样做,你会得到这样的输出:
psql (9.4.4)
Type "help" for help.
postgres=# CREATE ROLE testuser;
CREATE ROLE ---<<<< this tells you the statement was executed
postgres=#
答案 1 :(得分:0)
我不知道postgres客户端是否在OSX中使用其他命令,因为它在Linux中,但我认为它是相同的。
此docs link显示了postgres客户端的一些选项:
似乎“\ l”列出了数据库,而您希望看到的选项是角色及其访问权限,即“\ du”。
从客户端创建数据库时,您应该以“CREATING DATABASE”的形式获得响应。也许你有某种语法错误?
我不认为用户是在其他地方创建的。
我希望这可以解决你的一些问题。