学习目的:基础使用。
能够开发RoR就行。
git:
https://github.com/postgres-cn/pgdoc-cn
PostgreSQL使用一种客户端/服务器的模型。
一次PostgreSQL会话由下列相关的进程(程序)组成:
- 一个服务器进程process: 管理数据库文件,接受来自客户端应用与数据库的连接,并代表客户端在数据库上操作。
- 需要操作数据库的用户的客户端(前端)应用:客户端本身是多样的, 可以是网页服务器, 或者图形界面的应用等等。。。,大部分是用户开发的。
因此,它为每个连接启动("forks")一个新的进程。
从这个时候开始,客户端和新服务器进程就不再经过最初的 postgres进程的干涉进行通讯。 因此,主服务器进程总是在运行并等待着客户端联接, 而客户端和相关联的服务器进程则是起起停停
在此之前需要先有一个用户账号,参阅21章。
$ createdb mydb
dropda mydb是删除数据库。
通过psql(交互终端程序)来访问数据库。可以通过它执行SQL命令
也可以通过图形化的前端工具,如pgAdim或支持的办公套件。
$ psql name
在psql界面会看到欢迎信息,postgres=#
如果是=#,则代表是超级用户。但⚠️是我使用create -P name后仍然是这个?
而且用其他名字创建后无法进入psql
可能是之前没有创建过相关的myapp数据库: createdb myapp
21.1数据库角色
CREATE ROLE name;
DROP ROLE name;
不过一般使用createuser, dropuser来快速建立,又叫SQL命令的包装器。
createuser -d name #-d是允许用户创建一个新databases,(点击见creatuser详解)
dropuser name #删除该用户
psql -U name#指定以哪个角色来连接到数据库服务器。(可以省略-U)
数据库角色可以有一些属性,它们定义角色的权限并且与客户端认证系统交互。
password:
只有当客户端认证方法要求用户在连接数据库时提供一个口令时,一个口令才有意义。password和md5认证方法使用口令。数据库口令与操作系统命令独立。在角色创建时指定一个口令:CREATE ROLE name PASSWORD 'string'。
可以在psql中使用\password [username]来输入新的口令
用于方便的管理用户权限,权限可以被授予一整组或从整组收回。
由于角色可以拥有数据库对象并且能持有访问其他对象的特权,删除一个角色 常常并非一次DROP ROLE就能解决。任何被该用户所拥有 的对象必须首先被删除或者转移给其他拥有者,并且任何已被授予给该角色的 权限必须被收回。
http://www.postgres.cn/docs/9.6/app-psql.html
描述:
psql是一个PostgreSQL的基于终端的前端。它让你能交互式地键入查询,把它们发送给PostgreSQL,并且查看查询结果。或者,输入可以来自于一个文件或者命令行参数。此外,psql还提供一些元命令和多种类似 shell 的特性来为编写脚本和自动化多种任务提供便利。
遇到的options:
\du: 列出数据库角色,如果创建了一个role,可以通过这个命令查看。
\password [username]