如何在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配置中进行一些更改。 在这个tutori中,我们将使用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允许每个人连接到psql shell,而不会验证已经以PostgreSQL用户身份登录的用户。 当数据库可以公开访问时,您需要将身份验证方法更改为更安全的方法。 您可以使用使用加密密码进行身份验证的md5身份验证方法。 此外,您还可以指定允许身份验证的IP地址。

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

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

将身份验证方法从trust更改为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

要在系统上安装点,请运行:

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

加密包提供加密工具, pyopenssl是OpenSSL库的Python封装模块。 ndg-httpsclient使用pyopenssl来提供增强的HTTPS支持, pyasn1是python实现的ASN.1。 这些软件包是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上的服务器将只监听本地主机。 要从网络外部访问服务器,您需要进行一些配置更改。 复制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

现在,您可以访问http:// your_server_IP:5050上的pgAdmin界面。

结论

您现在应该在服务器中安装PostgreSQL和pgAdmin。 您现在可以使用pgAdmin来管理PostgreSQL服务器上的数据库。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏