在Mac OS X上,PostgreSQL数据库的位置是什么?

52

我确定这个问题已经有答案了,但我似乎找不到答案。

我使用Homebrew安装了postgresql (brew install postgresql),它被安装在/usr/local/Cellar/postgresql下。然后按照说明,我做了以下事情:

If this is your first install, create a database with:
    initdb /usr/local/var/postgres

据我所知,initdb会创建一个新的数据库集群。因此,当我执行上述操作时,“postgres”是数据库名称和数据库本身,还是所有postgresql数据库都需要的必要部分?

实际的数据库存放在哪里?我对postgresql很陌生,正在寻找一个文件或二进制文件来表示数据库。那么,数据库在哪里,当我创建一个新数据库时它会去哪里?

6个回答

52

initdb 只是设置目录结构等所需的内容,以便创建新数据库。要创建数据库,请使用createdb

概要
createdb [选项...] [dbname] [描述]

描述
createdb 创建一个新的 PostgreSQL 数据库。

通常情况下,执行此命令的数据库用户成为新数据库的所有者。但是,如果执行用户具有适当的权限,则可以通过 -O 选项指定不同的所有者。

createdb 是对 SQL 命令 CREATE DATABASE [create_database(7)] 的包装器。通过此实用程序和通过其他访问服务器的方法创建数据库之间没有实际区别。

initdb 类似于在硬盘上创建新的文件系统:首先创建文件系统 (initdb),然后再创建文件和目录 (createdb)。

创建数据库后,实际的数据库文件将位于 /usr/local/var/postgres 下。因此,只需创建一个数据库,然后查看 /usr/local/var/postgres 下有哪些新的或更改的内容即可。没有单个的 "dbname.db" 文件或类似的东西,每个数据库都是一个文件集合,其名称仅对数据库服务器有意义。


这正是我想知道的,也怀疑但现在我实际上知道了,谢谢! - crobison
有没有一种方法可以将数据库存储在不同的硬盘上? - DataGreed
1
@DataGreed:应该有,但我头脑中不知道。试着在dba.stackexchange.com上提一个问题吧。 - mu is too short

29

运行以下查询:

SHOW DATA_DIRECTORY;

3
在我的情况下(非homebrew),数据位置可以在此文件中找到:/Library/LaunchDaemons/com.edb.launchd.postgresql-9.3.plist
   <array>
            <string>/Users/me/bin/postgres/bin/postmaster</string>
            <string>-D/Users/me/data/postgres</string>
   </array>

3

由于Mac中有三个不同的库,开发者通常会对这三种情况感到困惑。然而,在Mac电脑上,您可以通过以下两种方法之一找到您的PostgreSQL目录。

1. 目录--绝对路径

1). 将鼠标滚动到Mac屏幕左上角

2). 点击菜单“前往”

3). 选择“前往文件夹...”

4). 输入路径

/Users/用户名/Library/Application Support/Postgres

请将“用户名”更改为您的名称,例如“jack”,如下所示。

/Users/jack/Library/Application Support/Postgres

5). 选择按钮“前往”进入Postgres目录。

您最终会找到Postgres。

2. 逐步查找目录

1). 将鼠标滚动到Mac屏幕左上角。

2). 点击菜单“前往”。

3). 选择按钮“Library”

4). 双击文件夹“Application Support”。

5). 根据字母顺序找到“Postgres”。

祝好!

Mike


3

2
系统:MAC OS X 10.9.5 现在(版本9.4)它位于名为/Library/PostgreSQL的目录下。 如果你进入该目录,打开与你的PG版本同名的文件夹,然后进入data文件夹,你就可以找到你的数据库。这实际上是许多不同的二进制和文本文件的集合(其中大部分都以长数字命名,如“92891”等...) 请注意,要打开data文件夹,您必须打开其属性(右键单击并选择“获取信息”),并允许您读取此文件夹。 如果您不熟悉此操作,我不建议您打开RW权限,因为任何最小的更改都可能影响整个数据库,这将是很遗憾的事情。 祝你好运!

10
我正在使用PostgreSQL 9.4.1,但是在其中并没有 /Library/PostgreSQL 目录。 - Bogolt
很抱歉您的实例出了问题,但这并不是您对我的回答进行负评的理由,因为我可以向您提供证明。也许在您的系统中它位于其他地方... - Arsenii
10
如果像 OP 所示,使用 Homebrew 安装的话,则该位置不在 /Library... - Pascal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接