Mac安装PostgreSQL
发布时间:2025-05-23 23:30:14 发布人:远客网络
一、Mac安装PostgreSQL
1、Mac下安装并配置PostgreSQL的步骤如下:
2、首先,通过Homebrew安装PostgreSQL:
3、运行命令`brew install postgresql`。安装完成后,使用`psql--version`命令验证安装。
4、在安装过程中,初始化数据库会提示指定的目录已存在但不为空,若需创建新的数据库系统,需移除或清空指定目录,或更改初始化目录。
5、接着,配置PostgreSQL以在Mac开机时自动启动:
6、使用`ln-sfv/usr/local/opt/postgresql/*.plist~/Library/LaunchAgents`链接配置文件,然后通过`launchctl load~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist`加载配置。
7、启动时,运行`pg_ctl-D/usr/local/var/postgres-l/usr/local/var/postgres/server.log start`,关闭则执行`pg_ctl-D/usr/local/var/postgres stop-s-m fast`。
8、初始化数据库后,若未创建数据库,可通过`createdb`命令创建。登录PostgreSQL控制台时,需要使用已创建的数据库名,否则会提示数据库不存在。
9、创建新的数据库和用户,如`postgres`:
10、使用`CREATE USER postgres WITH PASSWORD'123456';`创建用户。
11、通过`DROP DATABASE postgres;`删除默认生成的同名数据库。
12、使用`CREATE DATABASE postgres OWNER postgres;`创建属于`postgres`用户的数据库。
13、赋予`postgres`用户对数据库的所有权限,执行`GRANT ALL PRIVILEGES ON DATABASE postgres to postgres;`。
14、赋予`postgres`用户创建数据库的权限,命令为`ALTER ROLE postgres CREATEDB;`。
15、登录PostgreSQL控制台使用指令`psql-U [user]-d [database]-h [host]-p [port]`,其中`-U`指定用户,`-d`指定数据库,`-h`指定服务器,`-p`指定端口。例如,使用`postgres`用户登录,命令为`psql-U postgres-d postgres`。
16、`\password`设置当前登录用户的密码。
17、`\c [database_name]`连接其他数据库。
18、`\d`列出当前数据库的所有表格。
19、`\d [table_name]`列出某一张表格的结构。
20、`\conninfo`列出当前数据库和连接的信息。
21、`\password [user]`修改用户密码。
22、通过以上步骤,Mac用户可成功安装并配置PostgreSQL环境,并进行数据库操作,如创建数据库、用户、表,以及执行基本的SQL查询。
二、关于PostgreSQL数据的存储,你有必要有所了解
了解PostgreSQL数据的存储机制对于数据库管理至关重要。本文将详细阐述PostgreSQL中用于标识数据库对象的OID、事务IDXID、命令标识符CID、元组标识符TID,以及数据存储的结构。
对象标识符OID用于标识数据库对象,如数据库、表、视图等,其由四个字节的无符号整数组成。在系统表中,OID通常以隐藏列形式存在。在早期版本中,OID可以用于标识元组,尤其是在没有主键或重复行的情况下。然而,从PostgreSQL 12开始,将OID用作表上的可选系统列已被删除。
事务IDXID由数据库系统内部使用,分为xmin和xmax类型。当XID到达极限值(约40亿)时,系统会发生溢出,导致新的XID为0。这违反了事务可见性原则,详细解释请参考文档。
CID,即命令标识符,PG在每个表中包含cmax和cmin字段,用于判断事务内行版本变更的可见性。如果事务命令严格顺序执行,每个命令可以看见之前的变更,无需使用CID。
TID,元组标识符,表示元组在表中的物理位置,由块号和块内元组索引组成。理解TID对于查找和操作特定行至关重要。
在学习完标识符后,我们转向数据存储部分。数据存储在数据库中的某个表中,每条数据记录对应表的一行。从上到下,我们可以查看不同层次的数据存储结构。
PGDATA目录是PostgreSQL存放所有数据的地方。通过执行特定命令,可以查看PGDATA文件夹中的内容,了解其组织结构。在base目录下,每个数据库对应一个文件夹,文件名即为dboid。通过在postgres命令行窗口执行相关命令,可以获取到oid信息。在PGDATA/base/13635目录下,可以找到数据库相关的数据存储位置。
数据表的数据大部分存储在$PGDATA/base/{dboid}/{relfilenode}文件中。relfilenode通常与tboid一致,但某些操作(如TRUNCATE、REINDEX等)可能会导致变化。pg_relation_filepath系统函数可查看指定表的文件存储位置。
对于数据文件过大的情况,数据被划分为1GB大小的段,文件名与文件节点相同,后续段以filenode.1、filenode.2等命名,避免在特定平台上的文件大小限制问题。
每个表文件由固定页组成,页默认大小为8KB。单个文件大约有131072个页。页面由页文件头、行指针、元组数据组成。查询每一列的CTID(ItemPointer)需要知道page和item的位置。
PostgreSQL还提供了丰富的扩展功能,如information_schema和pg_catalog。information_schema为用户提供表、视图、函数信息,pg_catalog包含系统表和内置数据类型、函数、操作符,如pg_class、pg_attribute等。
理解PostgreSQL中的OID、XID、CID、TID以及数据存储结构,对于优化数据库性能和进行数据库管理至关重要。参考相关文档可获得更深入的见解。
三、查看postgres数据库有哪些用户
1、该系统表存储有关数据库认证的角色信息,在PostgreSQL中角色可以表现为用户和组两种形式。对于用户而言只是设置了rolcanlogin标志的角色。
2、由于该表包含口令数据,所以它不是公共可读的。PostgreSQL中提供了另外一个建立在该表之上的系统视图pg_roles,该视图将口令字段填成空白。