1. 检查 PostgreSQL 服务状态
首先,您需要确认 PostgreSQL 服务是否正在运行。您可以使用以下命令来检查服务状态:
sudo systemctl status postgresql
如果服务没有运行,您需要启动它:
sudo systemctl start postgresql
2. 确认 PostgreSQL 监听的端口和套接字位置
默认情况下,PostgreSQL 会在 /var/run/postgresql/.s.PGSQL.5432 监听 Unix 域套接字。确认该路径存在,并且 PostgreSQL 的配置文件中的 unix_socket_directories 设置指向这个目录。查看 postgresql.conf 文件中的设置:
sudo -u postgres psql -c "SHOW config_file;"
使用 vi 或任何其他文本编辑器查看该文件,并确认 unix_socket_directories 的设置。
3. 确保 PostgreSQL 接受本地连接
查看 pg_hba.conf 文件,确保对本地连接的配置是正确的。它应该允许用户 postgres 和其他所有需要的用户通过合适的认证(例如 peer 或 md5)从本地连接。例如:
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5
# Local connections:
local   all             all                                     peer
您可以通过以下命令找到 pg_hba.conf 的位置:
sudo -u postgres psql -c "SHOW hba_file;"
然后用文本编辑器查看和编辑它。
4. 重新加载配置并重启 PostgreSQL
修改完 postgresql.conf 和 pg_hba.conf 文件后,需要重新加载配置并重启 PostgreSQL 服务:
sudo systemctl reload postgresql
sudo systemctl restart postgresql
5. 重新尝试之前的操作
一旦 PostgreSQL 正确运行并且配置正确,再次尝试之前的命令:
sudo -u postgres createuser xwiki
sudo -u postgres createdb -O xwiki xwiki
sudo -u postgres psql -c "ALTER USER xwiki WITH ENCRYPTED PASSWORD 'xwiki';"
