安装好 PostgreSQL 并启动服务之后,下一步就是“连进去”。
对于初学者来说,连接数据库最重要的不是把命令背下来,而是先弄懂一条连接命令里每个参数是什么意思。
psql 是 PostgreSQL 官方自带的命令行客户端。
你可以把它理解成一个对话窗口:
psql 去找 PostgreSQL 服务所以“连接数据库”,通常就是在说“用 psql 连接 PostgreSQL”。
如果你当前机器上的 PostgreSQL 已经安装并启动,可以先试:
psql postgres
这条命令的意思很简单:尝试连接名为 postgres 的数据库。
如果本机环境比较标准,而且当前系统用户刚好有对应权限,它可能会直接连上。
不过在很多情况下,你还是需要把连接参数写得更明确一些。
最常见的连接信息有四个:
hostportuserdatabasehost 表示你要连接哪台机器。
常见值:
localhost127.0.0.1如果数据库就在你自己电脑上,通常会写本机地址。
port 表示 PostgreSQL 服务监听的端口。
默认情况下,PostgreSQL 常用端口是:
5432
如果服务不是跑在这个端口上,你就需要显式指定正确端口。
user 表示你用哪个数据库用户去登录 PostgreSQL。
注意,它不是操作系统用户名的简单别名,而是 PostgreSQL 内部的数据库用户身份。
database 表示你连上之后,默认进入哪个数据库。
例如:
postgrestestblog同一个 PostgreSQL 服务里可以有多个数据库,所以这个参数也很重要。
把这些参数写全,命令会更清楚:
psql -h 127.0.0.1 -p 5432 -U postgres -d postgres
这条命令的意思是:
127.0.0.15432postgrespostgres如果认证方式要求输入密码,执行后通常会提示你输入密码。
psql postgres
适合本地快速尝试,但前提是默认参数刚好都对得上。
psql -h 127.0.0.1 -p 5432 -U postgres -d postgres
这是最推荐初学者掌握的方式,因为每个参数都清楚,不容易混淆。
psql -U postgres
这种方式更短,但你要知道它最终会连到哪个数据库,否则排错时容易迷糊。
连接不上时,先不要慌。大多数问题都集中在下面几类。
这是最常见的问题。
如果 PostgreSQL 服务根本没运行,psql 就找不到目标服务。此时应该先回到上一节,确认服务状态。
如果数据库服务实际不在 5432 上监听,而你仍然写 5432,连接就会失败。
所以当你确认服务已经启动,但还是连不上时,要检查端口号是不是写对了。
如果你写了一个不存在的数据库用户,或者这个用户没有相应权限,也会连接失败。
初学阶段最常用的用户名通常是安装时初始化出来的默认管理员用户,例如 postgres。
即使服务存在、用户也对,如果你指定的数据库并不存在,仍然连不上目标数据库。
所以要区分清楚:
这是两个不同层次的问题。
你可能会看到这类问题:
这通常意味着:
对初学者来说,先检查用户名和密码最实际。
如果你连接远程数据库,host 写错、服务器没开、网络不通、防火墙拦截,都可能导致无法连接。
如果你只是学习本地 PostgreSQL,优先先用 127.0.0.1 做本地连接,先把最短路径走通。
如果一条连接命令失败,建议按下面顺序排查:
host 是不是目标机器port 是不是正确端口user 是不是存在且密码正确database 是不是存在这个顺序很简单,但对排错很有效。
如果你想先记住一条最实用的命令,可以记这个:
psql -h 127.0.0.1 -p 5432 -U postgres -d postgres
等你真正理解了四个连接参数之后,再去使用更短的写法也不迟。
下一篇会继续讲:连上 psql 之后,最常用的命令行操作有哪些。