如何设置PostgreSQL远程访问

转载请注明来源:http://blog.youkuaiyun.com/caoshiying

PostgreSQL开启远程访问主要有两个配置环节,一个是允许远程主机登录,二是创建可远程访问的用户。大部分人因配置有问题而无法远程访问,而把postgres用户改为可远程访问的不可取的做法。这里说一下我的做法。

基本的PostgreSQL安装配置的文档请看文章:《CentOS 6.8操作系统安装PostGIS笔记》。下面首先说第一个配置环节。

1.1. 允许远程主机登录

打开postgresql的服务启动配置文件,一般情况下在这里:

/etc/postgresql/9.3/main/postgres.conf

找到listen_address 配置节,把 local 改成 * 。如果 listen_address 被注释掉了,那么就要取消注释。

打开postgresql的远程访问配置文件,一般情况下在这里:

/etc/postgresql/9.3/main/pg_hba.conf

注意PostgreSQL版本号。打开没有注释掉的代码

host    all    all    127.0.0.1/32    md5

把它改成:

host    all    all    0.0.0.0/0        md5

保存后运行命令:

service postgresql restart

使配置生效

1.2. 创建可远程访问的用户

再次提一下,把postgresql用户改为可远程访问的做法是不可取的。登录SSH登录到数据库所在主机

ssh admin@192.168.1.7

输入密码,登录后运行:

sudo su - postgres

再次输入密码后转到了postgres 用户,运行:

psql

进入了数据库环境,下面创建用户:

CREATE USER test CREATEDB;

注意分号。CREATEDB 是权限,还有其它权限,比如 SUPERUSER CREATEUSER 等。一般情况下 CREATEDB 是最安全的做法。因为这个 test 用户的权限被限制在很小范围。

修改用户密码

ALTER USER test PASSWORD 'test123';

然后退出PSQL ,退出 SUDO ,退出 SSH ,回到远程主机。

\q
exit
exit
exit

在远程主机运行:

psql -h 192.168.1.7 -U test -W

输入密码,进入了PSQL 。创建一个数据库试试看:

CREATE DATABASE test OWNDER test;

成功了。

1.3. PSQL常用命令

\du:列出当前所有的用户信息

\l: 列出当前所有的数据库信息

\q: 退出

\password username:修改指定的user的密码

\dn:查看shema

\i:命令从指定的文件中读取命令

1.4. 常见问题

1.4.1. psql: FATAL: Ident authentication failed for user "mypguser"

请编辑你的pg_hba.conf,这个文件一般位于/etc/postgresql/X.Y/main/pg_hba.confX.Y是你的PostgreSQL的版本号,将下面行的peer改为trust

local all all trust # replace ident or peer with trust

1.4.2. psql: FATAL: Peer authentication failed for user "mypguser"

请仍然修改pg_hba.conf文件,该下面行的peermd5

local all all md5 # replace peer with md5

完成上面的修改后请重新加载postgresql

/etc/init.d/postgresql reload


转载于:https://my.oschina.net/zhtqs/blog/1509819

### 配置 PostgreSQL 实现远程访问 #### 修改 `postgresql.conf` 文件 为了使 PostgreSQL 接受来自不同络位置的连接请求,在 `postgresql.conf` 中需调整监听地址。默认情况下,PostgreSQL 只会监听本地接口。编辑此文件并找到 `listen_addresses` 参数,将其设置为 `'*'` 或指定特定 IP 地址列表以便服务器能够响应外部连接尝试[^1]。 ```bash sudo nano /etc/postgresql/14/main/postgresql.conf ``` 将下列行更改为: ```conf listen_addresses = '*' ``` 保存更改后退出编辑器。 #### 编辑 `pg_hba.conf` 文件 为了让客户端成功认证,还需更新 `pg_hba.conf` 来定义哪些主机可以访问数据库以及采用何种验证机制。对于基于信任的关系或者密码保护的选择取决于安全需求。向该文件添加一行来允许来自特定段或单个IP地址的连接[^2]。 继续以上述权限为例,假设要让位于同一局域内的所有设备都能通过MD5加密密码登录,则可以在文件末尾追加如下内容: ```conf host all all 192.168.239.0/24 md5 ``` 这表示任何处于 `192.168.239.x` 范围内的机器都可以使用用户名和密码组合来进行身份验证[^4]。 #### 切换至 Postgres 用户执行操作 某些配置可能需要以 postgres 用户的身份完成。可以通过以下命令切换到 postgres 用户环境再做进一步的操作[^3]: ```bash sudo -i -u postgres ``` #### 查询当前配置文件路径 当不确定配置文件的确切位置时,可以直接在 psql 命令提示符下运行相应指令获取这些信息: ```sql SHOW config_file; SHOW hba_file; ``` 上述命令将会返回两个重要配置文件的实际存储地点,方便后续修改工作。 #### 重启服务生效变更 最后不要忘记重启 PostgreSQL 服务使得新设定立即起效。根据操作系统版本的不同,可选用不同的命令形式: ```bash sudo systemctl restart postgresql # 或者 sudo service postgresql restart ``` 这样就完成了基本的远程访问准备工作。现在应该可以从其他计算机上的管理工具像 pgAdmin 或 DataGrip 进行测试连接了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值