PostgreSQL版本是12.2,psql 是 PostgreSQL 中的一个命令行交互式客户端工具,它允许你交互地键入 SQL 命令,然后把它们发送给 PostgreSQL 服务器,再显示 SQL 或命令的结果。输入的内容允许来自一个文件,此外它还提供了一些元命令和多种类似 shell 的特性来实现书写脚本,以及对大量任务的自动化工作。约定[]表示其中的内容可选,{}和|表示需选择一个候选,…表示前面的元素可以重复。中文官方链接,地址指路。
角色
登录
- 使用用默认超级用户
postgres
登录,输入psql -U postgres
,再输入安装时设置的超级用户密码,回车即可登入。 - 假设现有拥有登录权限用户为user和数据库exampledb,则登录命令为
psql -U user -d exampledb
,-U参数指定登录用户,-d参数指定待操作的数据库。 - 假设现有数据库exampledb和登录权限的用户为user,且user正好为当前操作系统用户,此时可以省略-U参数,登录命令为
psql -d exampledb
。
创建角色
在超级用户登录状态下,创建新角色,
CREATE ROLE name
,创建名称为name的角色,没有任何权限。在超级用户登录状态下,创建新角色,
CREATE USER name
,创建名称为name的角色,除了登录权限外,没有任何权限,该行命令等价于CREATE ROLE name LOGIN
。在超级用户登录状态下,创建一个新超级用户,使用
CREATE ROLE name SUPERUSER
。一个数据库超级用户除了登录会绕开所有的权限检查,使用超级用户操作是危险的操作,推荐用受限的角色完成大部分工作。创建超级用户的详细命令以及对应的解释如下。
1 |
|
修改角色权限
在创建角色时未指定的权限,都可以在超级用户登录状态下得以修改,比如更改角色名称,更改/移除一个角色的口令,更改一个角色的失效日期,使角色具有创建数据库的权限等等。
1 |
|
完整的角色权限修改语句和参数,其中大部分与创建角色时的参数相同,含义也一致,参考地址。
删除角色
由于角色可以拥有数据库对象并且能持有访问其他对象的特权,删除一个角色 常常并非一次DROP ROLE
就能解决。该用户所拥有的对象必须被删除或转移给其他角色。
1 |
|
数据库
创建数据库
- 超级用户或普通角色登录状态下,
CREATE DATABASE dbname
,创建数据库默认为当前登录用户所有。 - 超级用户或普通角色登录状态下,
CREATE DATABASE dbname OWNER rolename
,创建数据库并指定数据库拥有者。
删除数据库
1 |
|
表
创建表
1 |
|
删除表
1 |
|
其余常用命令
\l
查看已经存在的数据库
\c dbname
进入数据库
\d
查看所有表
\d tablename
查看指定表信息
\du
查看所有角色