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服务器上的数据库。
暂无评论内容