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查看所有角色