如何在FreeBSD 11上安装PostgreSQL和pgAdmin

PostgreSQL,简称Postgres,是一个开源的对象关系数据库管理系统(ORDBMS)。自1996年以来,它一直在积极开发,并发展成为最好的ORDMS之一。它支持RDBMS的所有功能以及对面向对象数据库模型的支持。数据库模式和查询语言直接支持对象、类和继承。PostgreSQL可用于托管各种应用程序的数据库,从小型网站到大型基于云的应用程序或数据仓库。

在本教程中,我们将学习如何在FreeBSD 11服务器上安装PostgreSQL和pgAdmin。

先决条件

最小FreeBSD 11服务器。建议使用8 GB RAM。
具有root权限的Sudo用户。

安装PostgreSQL
首先更新服务器的存储库信息。

sudo pkg update

pkg是FreeBSD的内置包管理器。接下来,下载并安装PostgreSQL服务器和客户端包。

sudo pkg install postgresql96-server postgresql96-client

按y继续安装。pkg现在将查找并安装指定的包以及所需的依赖项。

安装完成后,启用PostgreSQL在启动时自动启动。

sudo sysrc postgresql_enable=yes

或者,要在启动时启动PostgreSQL,您还可以使用任何您喜欢的文本编辑器在/etc/rc.conf末尾添加PostgreSQL_enable=“YES”。

现在使用以下命令初始化数据库。

sudo service postgresql initdb

initdb创建了一个新的postgresql数据库集群,该集群是由单个服务器实例管理的数据库的集合。

现在,您可以使用以下命令启动PostgreSQL数据库服务器。

sudo service postgresql start

PostgreSQL数据库服务器现已安装。

启用远程连接和密码验证
如果要远程访问数据库服务器,您需要对PostgreSQL配置进行一些更改。在这篇教程中,我们将使用nano编辑器。如果您没有安装nano,可以运行:

sudo pkg install nano

使用nano编辑器打开配置文件。

sudo nano /var/db/postgres/data96/postgresql.conf

向下滚动以找到下面显示的行。取消注释listen_addresses并将其值从localhost更改为*。您还可以将默认端口从5432更改为所需的任何其他值。

#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------

# - Connection Settings -

listen_addresses = '*'         # what IP address(es) to listen on;
                                        # comma-separated list of addresses;
                                        # defaults to 'localhost'; use '*' for all
                                        # (change requires restart)
#port = 5432                            # (change requires restart)
max_connections = 100                   # (change requires restart)
#superuser_reserved_connections = 3     # (change requires restart)
#unix_socket_directories = '/tmp'       # comma-separated list of directories

默认情况下,PostgreSQL允许每个人连接到psqlshell,而无需对已经以PostgreSQL用户身份登录的用户进行身份验证。当数据库可公开访问时,您需要将身份验证方法更改为更安全的方法。您可以使用md5身份验证方法,该方法使用加密密码进行身份验证。此外,您还可以指定允许进行身份验证的IP地址。

使用您最喜欢的文本编辑器打开pg_hba.conf文件。

sudo nano /var/db/postgres/data96/pg_hba.conf

将主机类型连接的身份验证方法从信任更改为md5。此外,添加要从中访问数据库的客户端机器的地址。要允许所有客户端使用基于md5的身份验证,请使用0.0.0.0/0作为地址。

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
host    all             all             0.0.0.0/0               md5
# IPv6 local connections:
host    all             all             ::1/128                 md5

为了使上述更改生效,您需要重新启动PostgreSQL服务器。

sudo service postgresql restart

更改密码和创建用户
默认情况下,PostgreSQL创建一个用户postgres和组postgres来维护PostgreSQL实例。要设置postgres用户的密码,请运行以下命令。

sudo passwd postgres

更改密码后,以postgres用户身份登录。

su - postgres

现在,您可以使用以下命令进入PostgreSQL shell。

psql

您将看到shell已更改为PostgreSQL shell。

psql (9.6.3)
Type "help" for help.

postgres=#

现在,您可以从此shell运行SQL查询。要退出PostgreSQL shell,请键入\q或\quit。

您可以通过键入以下内容以交互方式创建新角色:

createuser --interactive

该脚本将要求您输入用户名以及该用户是否为超级用户。

$ createuser --interactive
Enter name of role to add: new_user
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) y
Shall the new role be allowed to create more new roles? (y/n) y

或者,您可以运行:

createuser -sdrP new_user

参数的含义如下。

s: 此用户将是超级用户。
d: 此用户可以创建新数据库。
r: 此用户可以创建新角色。
P: 为此角色分配密码。
上面的命令也会询问new_user的密码。

要创建新数据库,可以运行以下命令。

createdb new_db

现在使用psql命令切换到PostgreSQL shell。如果用户没有密码,请提供新创建帐户的密码:

ALTER USER new_user WITH ENCRYPTED PASSWORD 'password';

现在,通过运行查询将数据库的所有权限授予新创建的用户:

GRANT ALL PRIVILEGES ON DATABASE new_db TO new_user;

运行\q退出编辑器。

安装pgAdmin
pgAdmin是管理PostgreSQL数据库服务器的最流行的开源应用程序。pgAdmin提供了一个功能丰富的图形用户界面,可以轻松管理数据库。它是用Python和Javascript/jQuery编写的。它可以在Linux、Windows、Unix等多种环境中使用,也可以在桌面和服务器模式下使用。

在本教程中,我们将在安装了PostgreSQl的同一台服务器上以服务器模式安装pgAdmin。

pip是Python包的包管理器。它用于安装和管理Python包和依赖项。如果您以postgres用户身份登录,则需要切换到具有sudo权限的普通用户。

su - sudo_user

要在您的系统上安装pip,请运行:

sudo python -m ensurepip

建议使用virtualenv创建隔离的Python环境。Virtualenv创建了一个具有自己的Python安装的环境,该环境不支持具有全局或其他虚拟环境的库。运行以下命令安装Virtualenv。

sudo pkg install py27-virtualenv

现在,通过运行以下命令为pgAdmin创建一个虚拟环境:

virtualenv pgadmin4

通过键入以下命令激活虚拟环境:

. pgadmin4/bin/activate

您将看到shell已更改为(pgadmin4)$。

通过键入以下命令安装一些Python依赖项:

sudo pip install cryptography pyopenssl ndg-httpsclient pyasn1

cryptography包提供加密工具,pyopenssl是OpenSSL库的Python包装器模块。ndg-httpsclient使用pyopensl提供增强的HTTPS支持,pyasn1是ASN.1的python实现。这些包是pgAdmin工作所必需的。

pgAdmin4还需要SQLite包。SQLite也是一个支持SQL的数据库管理系统。SQLite不需要单独的服务器,而是将数据存储在磁盘上的平面文件中。通过键入以下命令安装Python SQLite3包:

sudo pkg install py27-sqlite3

通过键入以下命令下载pgAdmin的Python wheel包:

wget --no-check-certificate https://ftp.postgresql.org/pub/pgadmin/pgadmin4/v1.5/pip/pgadmin4-1.5-py2.py3-none-any.whl

您始终可以在pgAdmin下载页面上查看应用程序最新版本的链接。

现在,通过运行以下命令安装该软件包:

pip install pgadmin4-1.5-py2.py3-none-any.whl

现在,您可以使用以下命令运行应用程序:

python ./pgadmin4/lib/python2.7/site-packages/pgadmin4/pgAdmin4.py

首次运行时,上述命令将要求您提供电子邮件地址和密码以创建初始pgAdmin用户。

(pgadmin4) $ python ./pgadmin4/lib/python2.7/site-packages/pgadmin4/pgAdmin4.py
NOTE: Configuring authentication for SERVER mode.

Enter the email address and password to use for the initial pgAdmin user account:

Email address: your_email
Password: your_new_password
Retype password:
Starting pgAdmin 4. Please navigate to http://localhost:5050 in your browser.

上面的命令将启动端口5050上的服务器。它将仅侦听localhost。要从网络外部访问服务器,您需要进行一些配置更改。复制pgAdmin配置文件。

sudo cp ./pgadmin4/lib/python2.7/site-packages/pgadmin4/config.py ./pgadmin4/lib/python2.7/site-packages/pgadmin4/config_local.py

现在,使用您最喜欢的编辑器编辑配置文件的本地副本。

sudo nano ./pgadmin4/lib/python2.7/site-packages/pgadmin4/config_local.py

将默认服务器值从localhost更改为0.0.0.0,如果需要,还可以更改应用程序正在侦听的端口。

DEFAULT_SERVER = '0.0.0.0'

# The default port on which the app server will listen if not set in the
# environment by the runtime
DEFAULT_SERVER_PORT = 5050

键入以下命令重新启动服务器:

python ./pgadmin4/lib/python2.7/site-packages/pgadmin4/pgAdmin4.py

现在,您将能够访问pgAdmin界面http://your_server_IP:5050.

结论
现在,您的服务器上应该已经安装了PostgreSQL和pgAdmin。现在,您可以使用pgAdmin来管理PostgreSQL服务器上的数据库。

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容