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.confpostgresql.conf的位置在数据库目录中
这个数据库目录就是在初始化时设定的
pgsql/bin/initdb -D 数据库目录我的数据库目录在 /home/brown/pgsrc_11.0_6318/db_test
而postgresql.conf就在 /home/brown/pgsrc_11.0_6318/db_test/postgresql.conf
在文件中添加一行(文件中已经有listen_addresses = localhost,但是被注释了)
listen_addresses = '*'
修改后:
pg_hba.conf也在数据库目录下
添加一行:
host all all 0.0.0.0/0 md5
修改后:
来到pgsql的安装目录下的bin目录
我的目录是psql/bin
输入命令:
- 关闭服务
./pg_ctl stop -D 数据库目录
- 打开服务
./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#include 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: 你的数据库名



