本地PostgreSQL连接报错排查及数据库名称查询求助
问题解决:Colab连接本地PostgreSQL失败 & 查找本地PostgreSQL数据库名称
一、解决Colab连接本地PostgreSQL被拒绝的问题
Colab运行在云端虚拟机,localhost指向的是Colab的虚拟机而非你的本地机器,这是连接失败的核心原因。按以下步骤处理:
确保本地PostgreSQL服务已启动
- Windows:打开服务管理器,找到“postgresql-x64-xx”服务,确认状态为“正在运行”。
- Linux/macOS:执行命令
sudo systemctl start postgresql(Linux)或brew services start postgresql(macOS)启动服务。
配置PostgreSQL允许远程连接
- 修改
postgresql.conf文件(路径通常为/var/lib/postgresql/xx/main/(Linux)、/usr/local/var/postgres/(macOS)或C:\Program Files\PostgreSQL\xx\data\(Windows)),设置:listen_addresses = '*' - 修改
pg_hba.conf文件,添加一行允许远程连接的规则(临时测试可放宽权限,生产环境需限制IP):host all all 0.0.0.0/0 scram-sha-256 - 重启PostgreSQL服务使配置生效:
- Linux:
sudo systemctl restart postgresql - macOS:
brew services restart postgresql - Windows:在服务管理器中重启对应服务。
- Linux:
- 修改
暴露本地PostgreSQL到公网并更新连接字符串
- 由于Colab无法直接访问本地私有网络,需用工具(如ngrok)将本地5432端口映射到公网:
- 下载并启动ngrok:
ngrok tcp 5432 - 复制ngrok输出的公网地址(如
tcp://0.tcp.ngrok.io:12345),提取主机和端口,替换连接字符串中的localhost:5432,最终连接字符串类似:connection_string = "postgres://<你的用户名>:<密码>@0.tcp.ngrok.io:12345/<数据库名>"
- 下载并启动ngrok:
- 注意:如果本地机器有公网IP,可直接用公网IP代替localhost,并确保防火墙开放5432端口。
- 由于Colab无法直接访问本地私有网络,需用工具(如ngrok)将本地5432端口映射到公网:
二、查找本地PostgreSQL数据库名称的方法
有三种常用方式:
命令行交互模式
- 打开终端,执行
psql -U postgres(默认超级用户为postgres)进入交互界面。 - 输入命令
\l并回车,即可列出所有数据库的名称、所有者、编码等信息。
- 打开终端,执行
直接终端命令
- 在终端执行以下命令,无需进入交互模式即可查看数据库列表:
psql -U postgres -l
- 在终端执行以下命令,无需进入交互模式即可查看数据库列表:
GUI工具(如pgAdmin)
- 打开pgAdmin,连接到本地PostgreSQL服务器后,展开“Databases”节点,即可看到所有数据库名称。
内容的提问来源于stack exchange,提问作者haru
相关产品推荐
相关产品推荐

