Linux下C/C++ 远程连接Pgsql报错

could not connect to server: Connection refused
        Is the server running on host "192.168.198.133" and accepting
        TCP/IP connections on port 5432?

这是由于没有设置PostgreSQL允许被远程访问

解决办法

第一步:修改postgresql.conf

postgresql.conf的位置在数据库目录

这个数据库目录就是在初始化时设定的

pgsql/bin/initdb -D 数据库目录

我的数据库目录在 /home/brown/pgsrc_11.0/db_test
postgresql.conf就在 /home/brown/pgsrc_11.0/db_test/postgresql.conf
在这里插入图片描述

在文件中添加一行(文件中已经有listen_addresses = localhost,但是被注释了)

listen_addresses = '*'

修改后:
在这里插入图片描述

第二步:修改pg_hba.conf

pg_hba.conf也在数据库目录下
在这里插入图片描述
添加一行:

host  all  all 0.0.0.0/0 md5

修改后:
在这里插入图片描述

第三步:重启pgsql

来到pgsql的安装目录下的bin目录
我的目录是psql/bin
输入命令:

  1. 关闭服务
./pg_ctl stop -D 数据库目录
  1. 打开服务
./pg_ctl start -D 数据库目录

我的目录结构

.
├── pgsql  # 我的pgsql安装目录
│   ├── bin  # 在bin下使用 ./pg_ctl
│   ├── include
│   ├── lib
│   └── share
├── pgsrc_11.0
│   ├── config
│   ├── contrib
│   ├── db_test  # 我的数据库目录
│   ├── doc
│   └── src

我的当前目录

[brown@bogon bin]$ pwd
/home/brown/pgsql/bin

关闭服务

./pg_ctl stop -D ../../pgsrc_11.0/db_test

开启服务

./pg_ctl start -D ../../pgsrc_11.0/db_test

第四步:测试连接

注意设置dbname, user, password, hostaddr

#include <iostream>
#include <pqxx/pqxx> 

using namespace std;
using namespace pqxx;

int main(int argc, char* argv[]) {
   try {
   	  // 这里的dbname, user, password, hostaddr  都是根据你的情况设定的
      connection C("dbname = testdb user = postgres password = cohondob \
      hostaddr = 127.0.0.1 port = 5432");
      if (C.is_open()) {
         cout << "Opened database successfully: " << C.dbname() << endl;
      } else {
         cout << "Can't open database" << endl;
         return 1;
      }
      C.disconnect ();
   } catch (const std::exception &e) {
      cerr << e.what() << std::endl;
      return 1;
   }
}
  • dbname:在启动数据库服务后,执行./psql 数据库名,这个数据库名就是dbname
  • user:pgsql的数据库用户
  • password:对应用户的密码
  • hostaddr:pgsql数据库的主机地址
    都设置好后,使用以下命令编译:
g++ test.cpp -lpqxx -lpq
./a.out

a.out的执行结果是:

Opened database successfully: 你的数据库名
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值