ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Postgres.app Java JDBC 连接配置实战:使用 PostgreSQL JDBC 驱动接入 macOS 上的本地数据库

Postgres.app Java JDBC 连接配置实战:使用 PostgreSQL JDBC 驱动接入 macOS 上的本地数据库 数据库桌面应用【免费下载链接】PostgresAppThe easiest way to get started with PostgreSQL on the Mac项目地址https://gitcode.com/gh_mirrors/po/PostgresApp点击查看免费下载Postgres.app 为 macOS 用户提供了零配置即可运行的 PostgreSQL 环境而 Java 开发者最常见的接入方式就是通过 JDBC。本文以 docs/documentation/configuration-java.md 为骨架完整讲解如何获取 PostgreSQL JDBC 驱动、在 Java 代码中建立连接并结合本仓库源码Postgres/Server.swift澄清 Postgres.app 的默认连接参数与底层行为帮助你在本地快速跑通 Java PostgreSQL 的开发链路。Postgres.app 的默认连接参数Java 程序的前提在使用 JDBC 之前必须先确认 Postgres.app 默认暴露的连接参数。根据 docs/documentation/configuration-general.md首次启动时 Postgres.app 会自动完成集群初始化、启动服务、创建超级用户和用户数据库最终对外提供以下默认连接信息参数默认值HostlocalhostPort5432默认User你的 macOS 用户名Password空无需密码Database与用户名同名这些默认值并不是文档的纸面承诺而是可以在源码中直接验证的实现事实默认端口5432是 Postgres/Server.swift 中Server初始化方法的默认参数值port: UInt 5432超级用户与同名数据库由首次启动逻辑创建createUserSync()调用createuser -U postgres -p PORT --superuser NSUserName()随后createUserDatabaseSync()调用createdb -p PORT NSUserName()见 Postgres/Server.swift其中NSUserName()正是当前 macOS 登录用户名Postgres.app 以你的用户身份运行服务器而不是像传统安装那样创建独立的postgres系统用户见 README.md。因此Java 程序连接时使用的默认连接串等价于jdbc:postgresql://localhost:5432/你的macOS用户名使用同名用户与数据库是 Postgres.app 刻意设计的开箱即用体验启动后无需任何配置即可连接。获取 PostgreSQL JDBC 驱动推荐通过 Maven在 Java 代码中连接 PostgreSQL最省事的方式是使用官方 PostgreSQL JDBC driver即org.postgresql:postgresql。Postgres.app 文档建议通过 Maven 引入依赖dependency groupIdorg.postgresql/groupId artifactIdpostgresql/artifactId version9.4.1207/version /dependency这是 docs/documentation/configuration-java.md 中给出的版本示例也是撰写该文档时 Postgres.app 官方配套驱动的最新版本。若你使用 Gradle可写成等价形式dependencies { implementation org.postgresql:postgresql:9.4.1207 }需要提醒JDBC 驱动版本更新很快当前仓库文档中的9.4.1207属于历史快照实际项目中请以 Maven 中央仓库发布的最新稳定版本为准Postgres.app 本身对连接协议没有特殊限制任意与你的 PostgreSQL 服务端大版本兼容的官方驱动均可工作。Java 版本与 JDBC 版本的匹配原则文档强调了一个关键原则确保 JDBC 驱动的版本与你的 Java 版本匹配。这指的是 JDBC API 规范等级随 Java 版本递增驱动必须实现相应规范才能在你的 JVM 上正常工作。文档给出的对照表如下Java VersionJDBC VersionJava 1.6JDBC 4.0Java 1.7JDBC 4.1Java 1.8JDBC 4.2上述表格是 Postgres.app 官方文档中的原始对照表。对于更新版本的 Java如 Java 11、17、21PostgreSQL JDBC 驱动同样提供对应支持但需要下载与 Java 规范等级相匹配的驱动版本具体以官方驱动的发行说明为准。判断原则始终不变Java 版本越高要求驱动实现的 JDBC 规范版本也越高旧驱动可能无法在新 JVM 上加载。在 Java 代码中建立连接PGSimpleDataSource 用法Postgres.app 文档给出的最小可用示例使用PGSimpleDataSource——它是官方驱动提供的、无需配置连接池的轻量级DataSource实现PGSimpleDataSource dataSource new PGSimpleDataSource(); dataSource.setDatabaseName(YOUR_DATABASE_NAME);这个示例之所以只设置了databaseName就能工作正是得益于前文所述的 Postgres.app 默认参数主机为localhost、端口为默认5432、用户名为当前 macOS 用户名、密码为空驱动都会按默认值处理。将其扩展为完整可运行的代码接入 Postgres.app 并执行一次查询import org.postgresql.ds.PGSimpleDataSource; import java.sql.Connection; import java.sql.ResultSet; import java.sql.Statement; public class PostgresAppDemo { public static void main(String[] args) throws Exception { PGSimpleDataSource dataSource new PGSimpleDataSource(); dataSource.setServerName(localhost); // 默认即可Postgres.app 默认监听 localhost dataSource.setPortNumber(5432); // Postgres.app 默认端口 dataSource.setDatabaseName(mydb); // 你的数据库名默认与用户名同名 // 用户与密码可选默认即当前 macOS 用户名 空密码 try (Connection conn dataSource.getConnection(); Statement stmt conn.createStatement(); ResultSet rs stmt.executeQuery(SELECT version())) { if (rs.next()) { System.out.println(rs.getString(1)); } } } }也可以使用DriverManager的经典写法两者等价Connection conn DriverManager.getConnection( jdbc:postgresql://localhost:5432/mydb, // 主机:端口/数据库 System.getProperty(user.name), // 默认即 macOS 用户名 ); // 密码为空注意事项数据库必须真实存在Postgres.app 首次启动只为当前用户创建了同名数据库。如果你的YOUR_DATABASE_NAME不是你的用户名请先用createdb或 psql 的CREATE DATABASE创建它否则getConnection()会抛出数据库不存在的异常端口冲突排查Postgres.app 的 Server.swift 在启动前会检查5432端口是否被占用PortInUse状态如果本机已有其他 PostgreSQL 实例占用该端口请到 Postgres.app 界面中为该服务器更换端口并同步修改 JDBC 连接串空密码登录机制Postgres.app 默认通过本机pg_hba.conf的信任认证允许本地无密码连接。若你为角色设置了密码getConnection()时同样需要传入对应密码Postgres.app 菜单中可修改密码底层执行的是ALTER ROLE ... WITH PASSWORD ...见 Postgres/Server.swift。用 psql 先行验证连接再写 Java 代码在写 Java 代码之前建议先用 Postgres.app 自带的 psql 验证连接参数是否成立。按 docs/documentation/cli-tools.md 的说明把 PostgreSQL 二进制目录加入$PATHsudo mkdir -p /etc/paths.d echo /Applications/Postgres.app/Contents/Versions/latest/bin | sudo tee /etc/paths.d/postgresapp关闭并重新打开终端后用which psql确认生效然后连接测试psql -h localhost -p 5432 -d 你的用户名 -U 你的用户名能正常进入 psql 提示符说明主机、端口、用户、数据库四个参数全部正确此时 Java 程序用同样的参数就能连上。这也解释了 Postgres.app 对 GUI 客户端如 Postico、PgAdmin以及本仓库 Postgres/ClientLauncher.swift 中构造postgres://URL 的方式它们本质都复用同一套 localhost 端口 用户名参数。深入原理Postgres.app 侧如何承载 JDBC 连接从源码层面看JDBC 连接之所以零配置是因为 Postgres.app 在首次启动时替你完成了 PostgreSQL 标准初始化流程。以 README.md 记录的底层命令为证# 初始化数据集群 initdb -D DATA_DIRECTORY -U postgres --encodingUTF-8 --localeen_US.UTF-8 # PostgreSQL 15 及以上额外追加 --locale-providericu --icu-localeen-US --data-checksums # 启动服务器 pg_ctl start -D DATA_DIRECTORY --wait --logDATA_DIRECTORY/postgres-server.log --options-p PORT # 创建超级用户以当前 macOS 用户名为角色名 createuser -U postgres -p PORT --superuser USERNAME # 创建与用户名同名的数据库 createdb USERNAME这些命令的 Swift 实现位于 Postgres/Server.swift 的initDatabaseSync()、startSync()、createUserSync()、createUserDatabaseSync()方法中Postgres/Server.swift。对照可见服务端监听Postgres.app 通过pg_ctl start ... -o -p PORT指定监听端口JDBC 驱动连接的就是这个端口认证方式默认数据目录~/Library/Application Support/Postgres/var-xx下生成的pg_hba.conf与postgresql.conf路径定义见 Postgres/Server.swift决定了本地信任认证即空密码可连数据库枚举Postgres.app 界面中列出的数据库来自loadDatabases()它直接使用 libpq 执行SELECT datname FROM pg_database WHERE datallowconn ORDER BY LOWER(datname)Postgres/Server.swift。这从侧面印证了 JDBC 查询pg_database系统目录的方式与官方驱动完全一致。常见问题速查Q1连接报错The connection attempt failed/Connection refused确认 Postgres.app 菜单栏中的服务器处于Running状态若端口被其他进程占用参考上文端口冲突说明给服务器换端口并同步修改 JDBC 连接串。Q2报错FATAL: database xxx does not existPostgres.app 只默认创建与你用户名同名的数据库。请先用createdb或CREATE DATABASE创建目标库或把setDatabaseName()改为你的用户名。Q3报错FATAL: password authentication failed说明该角色已被设置密码。在 Postgres.app 菜单中为该服务器修改密码或在pg_hba.conf中恢复本地 trust 认证修改后需重启服务器参见 docs/documentation/configuration-general.md。Q4Java 版本较新是否仍可用9.4.1207驱动请遵循文档强调的匹配原则使用与你的 Java 版本对应 JDBC 规范等级的新版官方驱动Postgres.app 服务端对驱动版本没有强制要求。总结接入 Postgres.app 的 Java JDBC 链路可以概括为四步确认默认连接参数localhost:5432 用户名 空密码→ 通过 Maven/Gradle 引入org.postgresql:postgresql驱动 → 使用PGSimpleDataSource或DriverManager建立连接 → 用 psql 先行验证。文中所有默认参数均有仓库源码佐证Postgres/Server.swift、docs/documentation/configuration-general.md、README.md遇到连接问题时可按端口 → 数据库存在性 → 认证方式的顺序排查。赞分享数据库桌面应用【免费下载链接】PostgresAppThe easiest way to get started with PostgreSQL on the Mac项目地址https://gitcode.com/gh_mirrors/po/PostgresApp点击查看免费下载相关推荐在 Postgres.app 中使用 Java 与 JDBC 连接 PostgreSQL驱动配置与连接实践指南在 Postgres.app 中使用 Java 与 JDBC 连接 PostgreSQL驱动配置与连接实践指南 Postgres.app 是 macOS 上最数据库桌面应用PostgreSQL JDBC驱动配置实战解决Java应用数据库连接难题在Java应用开发中PostgreSQL数据库连接是许多开发者面临的关键挑战。PostgreSQL JDBC驱动作为Java数据库连接的核心组件为高性能数据数据库后端关系型数据库PostgreSQL JDBC驱动轻松实现Java与PostgreSQL数据库连接PostgreSQL JDBC驱动轻松实现Java与PostgreSQL数据库连接 PostgreSQL JDBC驱动是连接Java应用程序与PostgreS数据库后端关系型数据库上一篇城通网盘直连解析器告别限速烦恼的免费下载方案下一篇WarcraftHelper终极指南如何彻底优化你的魔兽争霸III游戏体验创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表