文章目录

0 安装

sudo apt update
sudo apt install postgresql postgresql-contrib
sudo

使用

默认情况下,Postgres 使用一个称为“角色”的概念来处理身份验证和授权。这些在某些方面类似于常规的 Unix 风格的帐户,但 Postgres 不区分用户和组,而是更喜欢更灵活的术语“角色”。

安装后,Postgres 设置为使用peer authentication,这意味着它将 Postgres 角色与匹配的 Unix/Linux 系统帐户相关联。如果 Postgres 中存在角色,则具有相同名称的 Unix/Linux 用户名可以作为该角色登录。

安装过程创建了一个名为​​postgres​​的用户帐户,该帐户与默认 Postgres 角色相关联。为了使用 Postgres,您可以登录该帐户。

有几种方法可以利用此帐户访问 Postgres。

第一种方式

切换到 postgres 帐户
通过键入以下内容切换到服务器上的postgres帐户:
​​​sudo -i -u postgres​​​ 您现在可以通过键入以下内容立即访问 PostgreSQL 提示:
​psql​​ 这样就可以切换到数据库的账户,来操作想要的数据了。

第二种方式

在不切换帐户的情况下访问 Postgres 提示,您也可以直接使用postgres帐户运行您想要的命令sudo。
例如,在最后一个示例中,系统指示您首先切换到postgres用户,然后运行psql以打开 Postgres 提示符,从而进入 Postgres 提示符。您可以通过以postgres用户psql身份运行单个命令来一步完成此操作,如下所示,也就是说,直接制定我这个psql的命令是​​​postgres​​这个用户做的,然后进入交互的终端:

​sudo -u postgres psql​​ 这将使您直接登录 Postgres,而无需中间的bashshell。

同样,您可以通过键入以下内容退出交互式 Postgres 会话:

\q
许多用例需要多个 Postgres 角色。继续阅读以了解如何配置这些。

创建新角色(基本使用不管这个)

目前,您只需在数据库中配置postgres角色。您可以使用命令从命令行创建新角色createrole。该–interactive标志将提示您输入新角色的名称,并询问它是否应该具有超级用户权限。

如果您以postgres帐户登录,您可以通过键入以下内容来创建新用户:

createuser --interactive
相反,如果您希望在sudo不从普通帐户切换的情况下使用每个命令,请键入:

sudo -u postgres createuser --interactive
该脚本将提示您进行一些选择,并根据您的响应执行正确的 Postgres 命令来创建符合您要求的用户。

Output
Enter name of role to add: sammy
Shall the new role be a superuser? (y/n) y
您可以通过传递一些额外的标志来获得更多控制权。通过查看man页面查看选项:

man createuser
您安装的 Postgres 现在有一个新用户,但您还没有添加任何数据库。下一节将介绍此过程。

创建一个新数据库

Postgres 身份验证系统默认做出的另一个假设是,对于用于登录的任何角色,该角色将拥有一个可以访问的同名数据库。

这意味着如果您在上一节中创建的用户名为sammy,该角色将尝试连接到默认情况下也称为“sammy”的数据库。createdb您可以使用该命令创建适当的数据库。

如果您以postgres帐户登录,您将键入如下内容:

​createdb sammy​​ 相反,如果您希望在sudo不从普通帐户切换的情况下使用每个命令,您可以键入:

​sudo -u postgres createdb sammy​​ 这种灵活性为根据需要创建数据库提供了多种途径。

第 5 步 — 使用新角色打开 Postgres 提示
要使用对等身份验证登录,您需要一个与您的 Postgres 角色和数据库同名的 Linux 用户。

如果您没有可用的匹配 Linux 用户,您可以使用该adduser命令创建一个。您必须从具有特权的非root帐户执行此操作(意思是,未以postgres用户身份登录):sudo

sudo adduser sammy
一旦这个新帐户可用,您可以切换并通过键入以下内容连接到数据库:

sudo -i -u sammy
psql
或者,您可以内联执行此操作:

sudo -u sammy psql
假设所有组件都已正确配置,此命令将自动让您登录。

如果您希望您的用户连接到不同的数据库,您可以通过像这样指定数据库来实现:

psql -d postgres
登录后,您可以通过键入以下内容来检查您当前的连接信息:

\conninfo
Output
You are connected to database “sammy” as user “sammy” via socket in “/var/run/postgresql” at port “5432”.
如果您连接到非默认数据库或使用非默认用户,这很有用。

实践案例

我有一个sql文件,有创建数据库的所有语句,叫imdb.dump.bz2

如何卸载?

使用apt安装的,卸载之前:

dpkg -l | grep postgres
ii postgresql 12+214ubuntu0.1 all object-relational SQL database (supported version)
ii postgresql-12 12.9-0ubuntu0.20.04.1 amd64 object-relational SQL database, version 12 server
ii postgresql-client-12 12.9-0ubuntu0.20.04.1 amd64 front-end programs for PostgreSQL 12
ii postgresql-client-common 214ubuntu0.1 all manager for multiple PostgreSQL client versions
ii postgresql-common 214ubuntu0.1 all PostgreSQL database-cluster manager
ii postgresql-contrib 12+214ubuntu0.1 all additional facilities for PostgreSQL (supported version)

使用命令

sudo apt-get

卸载。
之后看起来应该是:

dpkg -l | grep

之后再探索

停止

发现在自己的ubuntu上设置postgresql还需要切换用户等问题。应该有其他的解决方式能够和3311老师设置的一样。之后问问。

另外,腾讯云确实不错。快照功能也可以。可以创建两个快照,那么就可以保存配置好的最近两次环境!

参考

翻译自:
​​​安装教程​

互相交流

读者你好!如果你对本文内容感兴趣,我十分希望能够和你互相学习,可以扫码和我联系!一起进步

在ubutun2004上处理postgresql_ubuntu