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';"