PostgreSQL是以加州大学伯克利分校计算机系开发的 POSTGRES,现在已经更名为PostgreSQL,版本 4.2为基础的对象关系型数据库管理系统(ORDBMS)。PostgreSQL支持大部分 SQL标准并且提供了许多其他现代特性:复杂查询、外键、触发器、视图、事务完整性、MVCC。同样,PostgreSQL 可以用许多方法扩展,比如, 通过增加新的数据类型、函数、操作符、聚集函数、索引。免费使用、修改、和分发 PostgreSQL,不管是私用、商用、还是学术研究使用。在PostgreSQL的关系数据库系统是一个功能强大的,可扩展的,并符合标准的开源数据库平台。本教程将帮助您在Ubuntu 16.04 LTS(Xenial Xerus)腾讯云CVM服务器上安装和配置PostgreSQL。
sudo apt-get update && sudo apt-get upgrade
注意 本教程是为非root用户编写的。需要提升权限的命令以
sudo
为前缀。
从Ubuntu软件包存储库安装PostgreSQL:
sudo apt-get install postgresql postgresql-contrib
默认情况下,PostgreSQL将创建一个名为postgres
的Linux用户访问数据库软件。
警告 使用
postgres
的用户不应该被用于其他目的(例如,连接到其他网络)。这样做会对数据库的安全性造成严重威胁。
postgres
用户的Linux密码:sudo passwd postgres
postgres
数据库用户设置密码。请务必使用强密码替换newpassword
并将其保存在安全的地方。su - postgres
psql -d template1 -c "ALTER USER postgres WITH PASSWORD 'newpassword';"
请注意,此用户与postgres
Linux用户不同。Linux用户用于访问数据库,PostgreSQL用户用于在数据库上执行管理任务。
此步骤中设置的密码将用于通过网络连接到数据库。默认情况下,对等身份验证将用于本地连接。
以postgres
Linux用户身份运行本节中的命令。
mytestdb
:createdb mytestdb
psql mytestdb
psql (9.5.2)
Type "help" for help.
mytestdb=#
这是PostgreSQL客户端shell,您可以在其中发出SQL命令。要查看可用命令列表,请使用\h
命令。您可以了解在\ h
后添加有关特定命令的更多信息。
本节包含使用员工的名字和姓氏创建测试数据库的示例,为每个名称分配一个唯一键。 创建自己的表时,可以根据需要指定任意数量的参数(列)并对其进行适当命名。 从创建数据库部分的步骤2中打开的PostgreSQL shell运行本节中的命令。
CREATE TABLE employees (employee_id int, first_name varchar, last_name varchar);
INSERT INTO employees VALUES (1, 'John', 'Doe');
SELECT * FROM employees;
这会产生以下输出结果:
employee_id | first_name | last_name
-------------+------------+-----------
1 | John | Doe
(1 row)
输入\q
命令退出PostgreSQL shell 。
PostgreSQL通过用于指定权限的角色授予数据库访问权限。 角色可以理解为具有与Linux“用户”类似的功能。此外,角色也可以创建为一组其他角色,类似于Linux“组”.PostgreSQL角色全局适用,因此您无需创建 如果您想在同一服务器上授予对多个数据库的访问权限,则两次使用相同的角色。
本节中的示例命令应该以postgres
Linux用户身份运行。
createuser examplerole --pwprompt
如果需要删除角色,可以使用dropuser
命令代替createuser
。
psql mytestdb
默认情况下,您将作为postgres
数据库用户连接。
employee
表的所有权限授予用户examplerole
:GRANT ALL ON employees TO examplerole;
输入\q
退出PostgreSQL shell 。
PostgreSQL默认使用对等身份验证。 这意味着数据库连接将授予拥有或具有所连接数据库权限的本地系统用户。 在特定系统用户将运行本地程序(例如,脚本,由不同用户拥有的CGI / FastCGI进程等)的情况下,此类身份验证非常有用,但为了更高的安全性,您可能希望需要密码才能访问您的数据库。
除非另有说明,否则本节中的命令应作为postgres
Linux用户运行。
# "local" is for Unix domain socket connections only
报头下的/etc/postgresql/9.5/main/pg_hba.conf
文件:# "local" is for Unix domain socket connections only
local all all peer`
在此行上用md5
替换peer
以使用MD5哈希激活密码身份验证。
postgres
用户sudo权限。返回到普通用户shell:exit
postgres
用户:sudo service postgresql restart
su - postgres
postgres
并以examplerole
PostgreSQL用户身份连接到测试数据库:psql -U examplerole -W mytestdb
系统将提示您输入examplerole
用户的密码并授予psql
对数据库的shell访问权限。使用数据库时,可以使用\z
命令检查每个表的访问权限。
有关此主题的其他信息,您可能需要参考以下资源。虽然希望提供这些有用,但请注意,我们无法保证外部托管材料的准确性或及时性。
自建服务器难免会遇到这样的问题,配置SSL很麻烦,虽然对一部分人来说这也是一种乐趣,但是如果您在生产环境使用,我还是建议您直接使用云关系型数据库,云关系型数据库让您在云中轻松部署、管理和扩展的关系型数据库,提供安全可靠、伸缩灵活的按需云数据库服务。腾讯云关系型数据库提供 MySQL、SQL Server、MariaDB、PostgreSQL 数据库引擎,并针对数据库引擎的性能进行了优化。云关系型数据库是一种高度可用的托管服务,提供容灾、备份、恢复、监控、迁移等数据库运维全套解决方案,可将您从耗时的数据库管理任务中解放出来,让您有更多时间专注于您的应用和业务。
如果不想配置MySQL,可以直接使用云数据库,腾讯云数据库 MySQL(TencentDB for MySQL)让用户可以轻松在云端部署、使用 MySQL 数据库。
更多Linux和PostgreSQL教程请前往腾讯云+社区学习更多知识。
参考文献:《How to Install PostgreSQL on Ubuntu 16.04》
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。