💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、豆包、星火、月之暗面及文生图、文生视频 广告
Tutorial ======== __摘要__: > 1. 原文地址: https://www.postgresql.org/docs/9.6/static/tutorial.html ## 1.1 安装 在你能使用 PostgreSQL 之前你首先需要安装它,当然,它可能已经安装在你的网站上因为操作系统的发布版本携带了这个包或者系统管理员已经安装了它。如果是这样的话,你应该从操作系统手册或者系统管理员那里获取如何访问 PostgreSQL 的信息。 如果你不确定你的 PostgreSQL 是否已经安装,或者你能否为你的测试来使用它,你可以自己安装它。自己安装是一个很好的练习。PostgreSQL 能在任何用户权限下安装,超级用户权限并不是必须的。 如果你正在安装 PostgreSQL ,参看[第16章](https://www.postgresql.org/docs/9.6/static/installation.html)的安装指令,安装完成后返回这篇指南文档。确保执行了接下来的章节的操作,设置了合适的环境变量。 如果你的网站管理员没有正确地设置这些事情,你可能有更多的事情去做。例如,如果数据库服务机器是远端机器,你将会需要去设置`PGHOST`环境变量来表示数据库服务器机器的名字。环境变量`PGPORT`可能也需要被设置。底线是,如果你启动了一个应用程序然后它抱怨说不能够连接数据库,那你应该请教你的网站管理员。如果你就是管理员的话,对照文档进行检查,确保你正确地设置了环境变量。如果你不理解前一段落的话,那么继续阅读后面的内容你就会理解的。 ## 1.2 架构基础 在我们开始之前,你需要了解基础的 PostgreSQL 系统架构。立即 PostgreSQL 各部分之间是如何相互作用的,将会使这章变得更加清晰一点。 在数据库术语中,PostgreSQL 使用客户端/服务器模型。一个 PostgreSQL 会话由以下几个相互作用进程(程序)组成。 + 一个服务器程序,它将会管理数据库文件,接收从客户端应用程序到数据库的连接,代表客户端执行数据库的操作。数据库的服务器程序叫做 __postgres__ 。 + 用户客户端(前端)程序希望去执行数据库操作。在自然情况下客户端应用程序有很多种:一个客户端可以是一个面向文本的工具,一个图形化的应用程序,一个能够访问数据库的 Web 服务器去展示页面,或者一个制定的数据库维护工具。一些客户端工具是随 PostgreSQL的发布版一起发布的,更多的是由用户来开发的。 作为一个典型的客户端服务器程序,客户端和服务器能够在不同的主机上。在那种情况下它们通过 TCP/IP 网络来通信。你应该记住这一点,因为能够在客户端机器上访问的文件可能在服务器机器上不能访问(或者可能需要使用不同的文件名来访问)。 PostgreSQL 能够处理来自多个客户端的并发连接。为了实现这个,它为每个连接 fork 了一个新的进程。从那时起,客户端就和新的服务端交互,原来的 __postgres__ 进程并不会介入。从而,主服务器进程总是在运行,等待客户端的连接,而客户端和关联的服务器进程则来来往往(所有的这些过程对于用户都是不可见的,我们为了完整性在这里提一下)。 ## 1.3 创建数据库 针对你能否访问数据的第一个测试是尝试去创建一个数据库。一个运行着的 PostgreSQL 服务器能够管理多个数据库。典型的,一个分离的数据库是为每个项目,每个用户使用的。 你的系统管理员可能已经创建了一个数据库让你来使用。如果是这种情况的话,你可以跳过这一步,向前直接调到下一节。 去创建一个新的数据库,在这个例子中叫做 __mydb__ ,你可以使用如下的命令: ``` createdb mydb ``` 如果这个过程没有响应表明你已经成功地创建了数据库,可以跳过这节的剩余部分了。 或者你的消息可能是: ``` createdb: command not found ``` 这意味着 PostgreSQL 没有正确地安装。或者是它没有安装在你的 shell 可执行文件搜索路径中。试着以绝对路径来调用这条命令: ``` $ /usr/local/pgsql/bin/createdb mydb ``` 这个路径在你的服务器上可能是不同的。联系你的系统管理员或者检查安装指令来修正这种情况。 另一个可能的相应是这样的: ``` createdb: could not connect to database postgres: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/tmp/.s.PGSQL.5432"? ``` 这意味着服务器可能没有启动,或者它没有按 createdb 命令期待的方式启动。再一次的,检查安装指令或者联系管理员。 另一个响应可能是这样的: ``` createdb: could not connect to database postgres: FATAL: role "joe" does not exist ``` 在上面你自己的登录用户名可能会被提示。这个发生在如果管理员没有为你创建 PostgreSQL 用户。(PostgreSQL 用户账户和操作系统用户账户并不相同)。如果你是一个管理员,参考[21章](https://www.postgresql.org/docs/9.6/static/user-manag.html)来创建用户。你将会需要成为一个特定的操作系统用户(在 PostgreSQL 安装的时候(通常是postgres)创建的第一个用户账户)。它也可能是你赋值给 PostgreSQL 的用户名不同于你的系统用户名;在这种情况下你需要使用 -U 切换用户或者使用 PGUSER 环境变量去指定 PostgreSQL 的用户名。 如果你有一个用户账户,但是它没有必要的权限去创建数据库,你将会看到如下的响应: ``` createdb: database creation failed: ERROR: permission denied to create database ``` 并不是每个用户都有权限去创建新的数据库。如果 PostgreSQL 拒绝为你创建数据库,那么你的网站管理员需要为你赋权去创建数据库。如果这个发生了,请教你的管理员。如果你自己安装的数据库,为了本教程的目的,你需要去在服务器启动的用户账户下登录。 你也能够使用其他名字去创建新的数据库。PostgreSQL 允许你在给定的网站上创建任意数量的数据库。数据库的名字必须以字母打头,而且长度最长为63个字符。一个方便的选择是创建数据库的名字和你当前登录的用户名相同。许多工具采取那个名字作为数据库的默认名字,这样能够让你少输入一些字符。去创建一个数据库的简化版的输入是: ``` $ createdb ``` 如果你不在想使用你的数据库然后想要删除它。例如,如果你想要删除你拥有的数据库 mydb ,你可以使用如下的命令来删除它: ``` $ dropdb mydb ``` (针对这个命令,数据库的名字并不会默认指定成用户的名字,你总是需要制定数据库的名字,这个操作物理地移除了和数据库相关的所有文件而且不能被恢复,所以这应该是在有大量的设想后执行的操作)。 更多关于 __createdb__ 和 __dropdb__ 的指令能够分别在[createdb](https://www.postgresql.org/docs/9.6/static/app-createdb.html)和[dropdb](https://www.postgresql.org/docs/9.6/static/app-dropdb.html)中找到。 __注意__: > 作为为什么这样工作的解释:PostgreSQL用户名是独立于操作系统用户帐户。 当您连接到数据库时,可以选择要连接到 PostgreSQL 的用户名; 如果没有,它将默认使用与当前操作系统帐户相同的名称。 发生这种情况时,总会有一个 PostgreSQL 用户帐户与启动服务器的操作系统用户具有相同的名称,并且也会发生该用户始终有权创建数据库。 如果不想以该用户身份登录,您也可以在任何位置指定-U选项,以选择要连接的PostgreSQL用户名。