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服务器上的数据库。