Whidy Writes

Postgresql12安装后的一些配置

以下操作均在 root 权限下执行。

基本配置

安装 PostgreSQL 的过程并不复杂,这里有一篇不错的文章,不过是英文的,问题不大的话可以看看:How To Install PostgreSQL 12 on CentOS 7 / CentOS 8,不过我还是要提几点:

  • 安装成功后,记得先初始化数据:/usr/pgsql-12/bin/postgresql-12-setup initdb
  • 基本上有必要开机自动启动服务,所以需要执行:systemctl enable --now postgresql-12
  • 如果服务器安装有防火墙(例如:firewalld),可能需要一些额外的操作,下面会提到。
  • 安装好后,会有一个创建一个用户postgres,你需要修改用户密码。
    su - postgres
    psql -c "alter user postgres with password '123abc-fnu3290f3f3f'"
    上面这个密码我随便写的,根据情况进行调整。当然你也许需要创建新的用户,例如:create user whidy with password '123abc-fnu3290f3f3f'

完成以上操作基本上就可以在服务端使用了。一些常见的命令,进行测试:

su - postgres
psql

现在进入数据库操作,查看数据库用户:

\du

查看现有的数据库

\l

使用postgres数据库

\c postgres

查看数据库表

\dt

...上面这些比较常见的操作方法,略区别 MySQL,就简单介绍到这里。哦对了\q退出。

远端登录相关配置

默认情况下,他的配置端口是 5432,仅支持本地连接,那如果我们需要远程连接,则需要进行一些额外修改。

修改文件/var/lib/pgsql/12/data/postgresql.conf,并设置监听地址为*,默认是 localhost,你也可以设置内网地址:

listen_addresses = ‘*’

这个下面有个port,默认 5432,我们来修改端口,比如:

port = 12345

接下来修改/var/lib/pgsql/12/data/pg_hba.conf文件允许远端连接:

vi /var/lib/pgsql/12/data/pg_hba.conf

找到# IPv4 local connections:这里将其修改为:

host all all 0.0.0.0/0 md5

完成后重启服务:systemctl restart postgresql-12

如果没有防火墙的话,你的其他数据库管理工具就可以连接了。如果有的话,需要以下设置。

防火墙设置(firewalld)

添加端口:

firewall-cmd --permanent --add-port=12345/tcp
firewall-cmd --reload

再试一次,应该就成功了!

无法连接的错误

端口修改后,在postgre可能出现无法连接情况,出错如下:

psql: could not connect to server: No such file or directory
	Is the server running locally and accepting
	connections on Unix domain socket "/tmp/.s.PGSQL.5432

最好的解决办法是修改环境变量,我直接全局修改了。步骤如下:

  • 切换到 root 用户
  • 执行vi /var/lib/pgsql/.pgsql_profile(这个是用于添加自定义 PostgreSQL 的环境变量的文件)
  • 添加export PGPORT=12345,保存。
  • 执行source /var/lib/pgsql/.pgsql_profile使其生效。

这样就可以直接在 postgres 用户下正常使用了。