草庐IT

如何在 Windows 10 中安装 PostgreSQL 和连接设置

Vin_c° 2023-03-28 原文

本文介绍开源数据库 PostgreSQL(版本 9.5.3 [1])在 Windows 10 环境下的安装方法。

PostgreSQL 是 1980 年以加利福尼亚大学为中心开发出来的 DBMS,与 MySQL 一样,都是世界上广泛应用的开源数据库(DB)。它严格遵守标准 SQL 规则,是初学者的最佳选择。

注意

本文使用 Windows 10 来介绍数据库的安装方法,该方法也适用于其他 Windows OS。

一、PostgreSQL 的安装和连接设置

那么就让我们赶快按照下面的步骤来安装 PostgreSQL 吧。

1.1 安装步骤

1.1.1 下载安装程序

大家可以从 PostgreSQL 的下载页面下载安装程序。

下载页面:http://www.enterprisedb.com/products-services-training/pgdownload#windows

本文将会介绍使用 64 位版的 Windows 安装程序(Win x86-64)在 Windows 10(64 位)系统中安装 PostgreSQL 的步骤,请大家结合自身实际下载相应的安装程序。

例如,如果大家使用的是 32 位的 Windows 操作系统,请下载“Win x86-32”版本的安装程序(图 1),安装步骤都是一样的。

图 1 下载面向 Windows 的 PostgreSQL 安装程序

1.1.2 运行安装程序

运行安装程序的时候,鼠标右键点击安装文件,然后选择“以管理员身份运行”。

注意

由于安装 PostgreSQL 需要操作系统的管理员权限,因此不能直接双击安装程序运行,必须“以管理员身份运行”才可以。

这个过程中有可能会需要输入管理员密码,或者弹出运行许可的询问窗口,此时请输入密码,或点击“是”(OK)按钮。

然后点击安装画面(图 2)中的“Next >”按钮。

图 2 安装开始

1.1.3 选择安装路径

接下来会显示选择安装路径的画面(图 3)。

默认的安装路径是“C:\Program Files\PostgreSQL\9.5”,但是因为有些用户的账号可能无法直接访问“Program Files”文件夹,所以我们把路径改为“C:\PostgreSQL\9.5”,然后点击“Next >”按钮。

安装过程中会自动创建文件夹,因此大家无需提前创建。

图 3 选择安装路径

1.1.4 选择数据的保存路径

接下来显示的是选择数据保存路径的画面(图 4),无需修改默认路径“C:\PostgreSQL\9.5\data”,直接点击“Next >”按钮。

图 4 选择数据保存路径

1.1.5 设置数据库管理员密码

在接下来的数据库管理员密码设置画面(图 5)中输入任意密码,点击“Next >”按钮。登录 PostgreSQL 时会用到这个密码,请大家务必牢记

图 5 设置数据库管理员密码

1.1.6 设置端口号

接下来会出现端口号设置画面(图 6),无需修改,直接点击“Next >”按钮。通常情况下保持默认选项即可。

图 6 设置端口号

1.1.7 设置地区

接下来是 PostgreSQL 地区设置画面(图 7)。选择“Chinese(Simplified),Singapore”,点击“Next >”按钮。

图 7 设置地区

1.1.8 安装

接下来是安装开始的画面(图 8)。直接点击“Next >”按钮,开始安装(图 9)。

图 8 开始安装

图 9 安装进行中

接下来会显示安装完成的画面(图 10)。取消选中的“Launch Stack Builder at exit ?”,点击“Finish”按钮。

“Launch Stack Builder”会安装各种附带工具,如果只需要使用 PostgreSQL,就没必要安装这些工具。

图 10 安装完成

这样安装就完成了。

1.2 修改设置文件

为了提高安全性,我们需要修改一下 PostgreSQL 的设置文件。请使用记事本或其他文本编辑工具打开下面这个文件。

C:\PostgreSQL\9.5\data\postgresql.conf

使用“listen_addresses”作为关键词来查询文件内容。安装完成之后,该关键词会被设置成 listen_addresses = '*'

虽然这意味着允许所有远程主机进行连接,但是这次的学习环境只需要通过本地机器进行连接就可以了,因此我们在这一行的最前面添加一个 #,注释掉该行。

#listen_addresses = '*'

添加如下一行新的内容,然后覆盖保存文件(图 11)。

listen_addresses = 'localhost'

图 11 添加“listen_addresses = ’localhost’”

这样就设置成只允许本地机器进行连接了。

必须重新启动 PostgreSQL,该设置才能生效。点击“控制面板”→“管理工具”→“服务”。

如果在控制面板中没有找到“管理工具”,那么请点击控制面板右上角的“查看方式”,选择“大图标”或者“小图标”,切换到图标显示模式。

在显示出来的窗口中找到“postgresql-x64-9.5”,用鼠标右键进行点击(图 12),然后在弹出的菜单中选择“启动”或者“重新启动”。

图 12 在“服务”窗口中重新启动 PostgreSQL

注意

如果 PostgreSQL 是已经启动的状态,那么“启动”选项就是灰色的,无法选择。

反之,如果 PostgreSQL 是停止状态,那么“重新启动”选项就是灰色的,无法选择。

这样,之前我们对 PostgreSQL 所做的“listen_addresses”的修改就生效了。

注意

如果错误地停止了“postgresql-x64-9.5”之外的其他服务,可能会造成操作系统无法正常工作,所以请一定不要停止其他服务。

此外,如果使用的是 32 位的安装程序,那么显示出来的服务名就是“postgresql-9.5”。

二、通过 PostgreSQL 执行 SQL 语句

PostgreSQL 提供了一个可以通过命令行来执行 SQL 语句的工具“psql”。

psql 会把 SQL 语句发送给 PostgreSQL,然后再将接收到的执行结果显示出来。

下面就来介绍一下使用 psql 执行 SQL 语句的方法。

下面将要执行的 SQL 语句的语法和意义将会在接下来的第 数据库和 SQL 是什么关系SQL 如何对表进行创建、更新和删除操作SQL SELECT WHERE 语句如何指定一个或多个查询条件 介绍,因此大家不必太过在意。

2.1 连接 PostgreSQL(登录)

现在已经完成了安装,接下来就让我们启动 psql,连接 PostgreSQL 吧。

首先,启动命令提示符窗口。使用鼠标右键点击电脑桌面左下角的“Windows”图标,在弹出的菜单中选择“命令提示符(管理员)(A)”(图 13)。

图 13 启动命令提示符窗口

备忘

如果使用的是 Window8/8.1,可以按照如下步骤启动命令提示符窗口。

  1. 在电脑的开始画面,同时点击键盘上的“Windows”键和“X”键。

  2. 在画面左下角显示的菜单一览中点击“命令提示符(管理员)”。

如果使用的是 Window7,可以按照如下步骤启动命令提示符窗口。

  1. 在电脑的开始画面,点击键盘上的“Windows”键,在“搜索程序和文件”输入框中输入“cmd”。

  2. 右键点击检索结果中的“cmd.exe”,选择“以管理员身份运行(A)”。

打开命令提示符窗口(图 14)之后,输入如下命令,然后按下回车键(Enter)。

图 14 命令提示符窗口

C:\PostgreSQL\9.5\bin\psql.exe –U postgres

接下来会显示出“用户 postgres 的口令 :”,要求输入密码。输入安装时设置的密码,按下回车键,然后就会在命令提示符窗口显示出 postgres=#,意味着连接成功了(图 15)。

图 15 通过 psql 连接 PostgreSQL

下面就可以执行 SQL 语句了。

注意

出于安全考虑,输入的密码不会在画面上显示出来。

输入密码时,光标会一直在同一位置闪烁,看上去就像什么也没输入一样,但其实密码已经正常输入了,所以请在输入结束时按下回车键。

2.2 执行 SQL 语句

连接数据库之后,就可以执行 SQL 语句了。下面就让我们试着来执行一个简单的 SQL 语句吧。

  1. 输入 SQL 语句

    如图 16 所示,通过 psql 连接到示例数据库(postgres)之后,输入如下一行命令。

    图 16 输入“SELECT 1;”

  2. 按下回车键

    输入结束之后,按下回车键,这样就可以执行这条 SQL 语句了。如果显示出如下信息,就表示执行成功了(图 17)。

    ?column?
    ----------
        1
    

    图 17 “SELECT 1;”的执行结果

    注意

    ;”是 SQL 的结束符,如果没有输入的话,即使按下回车键,SQL 语句也不会执行。

    因此,在执行 SQL 语句的时候,请大家注意不要忘记输入“;”。

上面我们介绍了手动输入 SQL 语句的例子,其实直接复制本文的示例代码,粘贴在命令提示符窗口,也同样可以执行 SQL 语句。

2.3 创建学习用的数据库

这里我们来创建一个学习用的数据库。数据库的创建步骤如下所示。

  1. 执行创建数据库的 SQL 语句

    在命令提示符窗口,保持 PostgreSQL 连接的状态下,输入如下一行 SQL 语句,按下回车键。请注意,数据库的名称只能使用小写字母。

    CREATE DATABASE shop;
    

    创建成功后,画面中会显示如下信息(图 18)。

    CREATE DATABASE
    

    图 18 数据库创建成功

  2. 结束 psql

    数据库创建成功之后,结束 psql。为了结束 psql,需要输入“\q”,然后按下回车键。

    这样就切断了与 postgreSQL 的连接,返回到命令提示符窗口(图 19)。“\q”中的 q 是“quit”(退出)的缩写。

    图 19 从 PostgreSQL 登出

    注意

    现在通过 psql 连接(登录)的是安装 PostgreSQL 时自动创建的示例数据库 postgres。

    为了连接刚刚创建的数据库,我们需要暂时结束(退出)psql。

    由于 psql 在窗口关闭时也会结束,因此也可以通过点击 psql 窗口右上角的“X”按钮结束 psql。

2.4 连接学习用的数据库(登录)

下面就让我们登录刚刚创建的数据库“shop”吧。在命令提示符窗口执行如下命令。

C:\PostgreSQL\9.5\bin\psql.exe –U postgres –d shop

选项“-d shop”是指定“数据库 shop”的意思。

此时会要求输入 postgres 的密码,输入之后按下回车键。登录成功后会显示如下信息(图 20)。

shop=#

图 20 示例数据库 shop 登录成功

这样数据库 shop 就登录成功了。

原文链接:https://www.developerastrid.com/sql/windows-install-postgresql/

(完)


  1. 因 PostgreSQL 版本在不断更新,读者在学习时下载最新版本即可。 ↩︎

有关如何在 Windows 10 中安装 PostgreSQL 和连接设置的更多相关文章

  1. ruby - 使用 RubyZip 生成 ZIP 文件时设置压缩级别 - 2

    我有一个Ruby程序,它使用rubyzip压缩XML文件的目录树。gem。我的问题是文件开始变得很重,我想提高压缩级别,因为压缩时间不是问题。我在rubyzipdocumentation中找不到一种为创建的ZIP文件指定压缩级别的方法。有人知道如何更改此设置吗?是否有另一个允许指定压缩级别的Ruby库? 最佳答案 这是我通过查看ruby​​zip内部创建的代码。level=Zlib::BEST_COMPRESSIONZip::ZipOutputStream.open(zip_file)do|zip|Dir.glob("**/*")d

  2. ruby - 如何在 Ruby 中顺序创建 PI - 2

    出于纯粹的兴趣,我很好奇如何按顺序创建PI,而不是在过程结果之后生成数字,而是让数字在过程本身生成时显示。如果是这种情况,那么数字可以自行产生,我可以对以前看到的数字实现垃圾收集,从而创建一个无限系列。结果只是在Pi系列之后每秒生成一个数字。这是我通过互联网筛选的结果:这是流行的计算机友好算法,类机器算法:defarccot(x,unity)xpow=unity/xn=1sign=1sum=0loopdoterm=xpow/nbreakifterm==0sum+=sign*(xpow/n)xpow/=x*xn+=2sign=-signendsumenddefcalc_pi(digits

  3. ruby - 在 Ruby 程序执行时阻止 Windows 7 PC 进入休眠状态 - 2

    我需要在客户计算机上运行Ruby应用程序。通常需要几天才能完成(复制大备份文件)。问题是如果启用sleep,它会中断应用程序。否则,计算机将持续运行数周,直到我下次访问为止。有什么方法可以防止执行期间休眠并让Windows在执行后休眠吗?欢迎任何疯狂的想法;-) 最佳答案 Here建议使用SetThreadExecutionStateWinAPI函数,使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入休眠状态或关闭显示。像这样的东西:require'Win32API'ES_AWAYMODE_REQUIRED=0x0

  4. ruby-openid:执行发现时未设置@socket - 2

    我在使用omniauth/openid时遇到了一些麻烦。在尝试进行身份验证时,我在日志中发现了这一点:OpenID::FetchingError:Errorfetchinghttps://www.google.com/accounts/o8/.well-known/host-meta?hd=profiles.google.com%2Fmy_username:undefinedmethod`io'fornil:NilClass重要的是undefinedmethodio'fornil:NilClass来自openid/fetchers.rb,在下面的代码片段中:moduleNetclass

  5. ruby - 如何在 buildr 项目中使用 Ruby 代码? - 2

    如何在buildr项目中使用Ruby?我在很多不同的项目中使用过Ruby、JRuby、Java和Clojure。我目前正在使用我的标准Ruby开发一个模拟应用程序,我想尝试使用Clojure后端(我确实喜欢功能代码)以及JRubygui和测试套件。我还可以看到在未来的不同项目中使用Scala作为后端。我想我要为我的项目尝试一下buildr(http://buildr.apache.org/),但我注意到buildr似乎没有设置为在项目中使用JRuby代码本身!这看起来有点傻,因为该工具旨在统一通用的JVM语言并且是在ruby中构建的。除了将输出的jar包含在一个独特的、仅限ruby​​

  6. ruby - 什么是填充的 Base64 编码字符串以及如何在 ruby​​ 中生成它们? - 2

    我正在使用的第三方API的文档状态:"[O]urAPIonlyacceptspaddedBase64encodedstrings."什么是“填充的Base64编码字符串”以及如何在Ruby中生成它们。下面的代码是我第一次尝试创建转换为Base64的JSON格式数据。xa=Base64.encode64(a.to_json) 最佳答案 他们说的padding其实就是Base64本身的一部分。它是末尾的“=”和“==”。Base64将3个字节的数据包编码为4个编码字符。所以如果你的输入数据有长度n和n%3=1=>"=="末尾用于填充n%

  7. ruby-on-rails - 如何在 ruby​​ 中使用两个参数异步运行 exe? - 2

    exe应该在我打开页面时运行。异步进程需要运行。有什么方法可以在ruby​​中使用两个参数异步运行exe吗?我已经尝试过ruby​​命令-system()、exec()但它正在等待过程完成。我需要用参数启动exe,无需等待进程完成是否有任何ruby​​gems会支持我的问题? 最佳答案 您可以使用Process.spawn和Process.wait2:pid=Process.spawn'your.exe','--option'#Later...pid,status=Process.wait2pid您的程序将作为解释器的子进程执行。除

  8. ruby - 如何在续集中重新加载表模式? - 2

    鉴于我有以下迁移:Sequel.migrationdoupdoalter_table:usersdoadd_column:is_admin,:default=>falseend#SequelrunsaDESCRIBEtablestatement,whenthemodelisloaded.#Atthispoint,itdoesnotknowthatusershaveais_adminflag.#Soitfails.@user=User.find(:email=>"admin@fancy-startup.example")@user.is_admin=true@user.save!ende

  9. ruby-on-rails - 如何使用 instance_variable_set 正确设置实例变量? - 2

    我正在查看instance_variable_set的文档并看到给出的示例代码是这样做的:obj.instance_variable_set(:@instnc_var,"valuefortheinstancevariable")然后允许您在类的任何实例方法中以@instnc_var的形式访问该变量。我想知道为什么在@instnc_var之前需要一个冒号:。冒号有什么作用? 最佳答案 我的第一直觉是告诉你不要使用instance_variable_set除非你真的知道你用它做什么。它本质上是一种元编程工具或绕过实例变量可见性的黑客攻击

  10. ruby - 续集在添加关联时访问many_to_many连接表 - 2

    我正在使用Sequel构建一个愿望list系统。我有一个wishlists和itemstable和一个items_wishlists连接表(该名称是续集选择的名称)。items_wishlists表还有一个用于facebookid的额外列(因此我可以存储opengraph操作),这是一个NOTNULL列。我还有Wishlist和Item具有续集many_to_many关联的模型已建立。Wishlist类也有:selectmany_to_many关联的选项设置为select:[:items.*,:items_wishlists__facebook_action_id].有没有一种方法可以

随机推荐