前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在Ubuntu 16.04上安装PostgreSQL

如何在Ubuntu 16.04上安装PostgreSQL

原创
作者头像
尘埃
发布2018-08-20 16:48:09
2.2K0
发布2018-08-20 16:48:09
举报
文章被收录于专栏:云计算教程系列

介绍

PostgreSQL是以加州大学伯克利分校计算机系开发的 POSTGRES,现在已经更名为PostgreSQL,版本 4.2为基础的对象关系型数据库管理系统(ORDBMS)。PostgreSQL支持大部分 SQL标准并且提供了许多其他现代特性:复杂查询、外键、触发器、视图、事务完整性、MVCC。同样,PostgreSQL 可以用许多方法扩展,比如, 通过增加新的数据类型、函数、操作符、聚集函数、索引。免费使用、修改、和分发 PostgreSQL,不管是私用、商用、还是学术研究使用。在PostgreSQL的关系数据库系统是一个功能强大的,可扩展的,并符合标准的开源数据库平台。本教程将帮助您在Ubuntu 16.04 LTS(Xenial Xerus)腾讯云CVM服务器上安装和配置PostgreSQL。

准备

  • 设置腾讯云CVM服务器主机名和时区。没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器
  • 创建标准用户帐户,加强SSH访问并删除不必要的网络服务。
  • 更新您的系统:
代码语言:javascript
复制
sudo apt-get update && sudo apt-get upgrade

注意 本教程是为非root用户编写的。需要提升权限的命令以sudo为前缀。

安装PostgreSQL

从Ubuntu软件包存储库安装PostgreSQL:

代码语言:javascript
复制
sudo apt-get install postgresql postgresql-contrib

配置PostgreSQL

修改Postgres用户

默认情况下,PostgreSQL将创建一个名为postgres的Linux用户访问数据库软件。

警告 使用postgres的用户不应该被用于其他目的(例如,连接到其他网络)。这样做会对数据库的安全性造成严重威胁。

  • 更改postgres用户的Linux密码:
代码语言:javascript
复制
sudo passwd postgres
  • 发出以下命令为postgres数据库用户设置密码。请务必使用强密码替换newpassword并将其保存在安全的地方。
代码语言:javascript
复制
su - postgres
psql -d template1 -c "ALTER USER postgres WITH PASSWORD 'newpassword';"

请注意,此用户与postgresLinux用户不同。Linux用户用于访问数据库,PostgreSQL用户用于在数据库上执行管理任务。

此步骤中设置的密码将用于通过网络连接到数据库。默认情况下,对等身份验证将用于本地连接。

创建数据库

postgresLinux用户身份运行本节中的命令。

  • 创建一个示例数据库mytestdb
代码语言:javascript
复制
createdb mytestdb
  • 连接到测试数据库:
代码语言:javascript
复制
psql mytestdb
  • 您将看到以下输出结果:
代码语言:javascript
复制
psql (9.5.2)
Type "help" for help.
​
mytestdb=#

这是PostgreSQL客户端shell,您可以在其中发出SQL命令。要查看可用命令列表,请使用\h命令。您可以了解在\ h后添加有关特定命令的更多信息。

创建表

本节包含使用员工的名字和姓氏创建测试数据库的示例,为每个名称分配一个唯一键。 创建自己的表时,可以根据需要指定任意数量的参数(列)并对其进行适当命名。 从创建数据库部分的步骤2中打开的PostgreSQL shell运行本节中的命令。

  • 在测试数据库中创建一个名为“employees”的表:
代码语言:javascript
复制
CREATE TABLE employees (employee_id int, first_name varchar, last_name varchar);
  • 在表中插入记录:
代码语言:javascript
复制
INSERT INTO employees VALUES (1, 'John', 'Doe');
  • 查看“employees”表的内容:
代码语言:javascript
复制
SELECT * FROM employees;

这会产生以下输出结果:

代码语言:javascript
复制
 employee_id | first_name | last_name
-------------+------------+-----------
           1 | John       | Doe
(1 row)

输入\q命令退出PostgreSQL shell 。

创建PostgreSQL角色

PostgreSQL通过用于指定权限的角色授予数据库访问权限。 角色可以理解为具有与Linux“用户”类似的功能。此外,角色也可以创建为一组其他角色,类似于Linux“组”.PostgreSQL角色全局适用,因此您无需创建 如果您想在同一服务器上授予对多个数据库的访问权限,则两次使用相同的角色。

本节中的示例命令应该以postgresLinux用户身份运行。

  • 在提示符处添加新用户角色,然后添加密码:
代码语言:javascript
复制
createuser examplerole --pwprompt

如果需要删除角色,可以使用dropuser命令代替createuser

  • 连接数据库:
代码语言:javascript
复制
psql mytestdb

默认情况下,您将作为postgres数据库用户连接。

  • 在PostgreSQL shell中,输入以下内容以将employee表的所有权限授予用户examplerole
代码语言:javascript
复制
GRANT ALL ON employees TO examplerole;

输入\q退出PostgreSQL shell 。

确保本地PostgreSQL访问的安全

PostgreSQL默认使用对等身份验证。 这意味着数据库连接将授予拥有或具有所连接数据库权限的本地系统用户。 在特定系统用户将运行本地程序(例如,脚本,由不同用户拥有的CGI / FastCGI进程等)的情况下,此类身份验证非常有用,但为了更高的安全性,您可能希望需要密码才能访问您的数据库。

除非另有说明,否则本节中的命令应作为postgresLinux用户运行。

  • 编辑在# "local" is for Unix domain socket connections only报头下的/etc/postgresql/9.5/main/pg_hba.conf文件:
代码语言:javascript
复制
# "local" is for Unix domain socket connections only
local    all        all             peer`

在此行上用md5替换peer以使用MD5哈希激活密码身份验证。

  • 要启用这些更改,我们需要重新启动PostgreSQL。但是,出于安全原因,我们未授予postgres用户sudo权限。返回到普通用户shell:
代码语言:javascript
复制
exit
  • 重启PostgreSQL并切换回postgres用户:
代码语言:javascript
复制
sudo service postgresql restart
su - postgres
  • 使用postgres并以examplerolePostgreSQL用户身份连接到测试数据库:
代码语言:javascript
复制
psql -U examplerole -W mytestdb

系统将提示您输入examplerole用户的密码并授予psql对数据库的shell访问权限。使用数据库时,可以使用\z命令检查每个表的访问权限。

更多信息

有关此主题的其他信息,您可能需要参考以下资源。虽然希望提供这些有用,但请注意,我们无法保证外部托管材料的准确性或及时性。

PostgreSQL在线文档

psql手册页

自建服务器难免会遇到这样的问题,配置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 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • 准备
  • 安装PostgreSQL
  • 配置PostgreSQL
    • 修改Postgres用户
      • 创建数据库
        • 创建表
          • 创建PostgreSQL角色
            • 确保本地PostgreSQL访问的安全
            • 更多信息
            相关产品与服务
            云数据库 SQL Server
            腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档