来自Ubuntu VM的Postgres ODBC连接问题

时间:2016-08-18 08:52:02

标签: postgresql ubuntu odbc

我正在尝试使用在Ubuntu虚拟机上运行的Zabbix服务器来监视在同一主机(而不是VM)上运行的应用程序中的Postgres数据库。为了清楚起见,我正在尝试从计算机上的Linux Ubuntu虚拟机连接到同一台计算机上不在VM中运行的Postgres。 Zabbix使用ODBC,因此该过程的一个初步步骤是使Postgres的ODBC连接正常工作。但是,我遇到了问题。

我采取的步骤:

  • 通过sudo apt-get install unixodbc unixodbc-dev
  • 安装了unixODBC
  • 通过sudo apt-get install odbc-postgresql
  • 为Postgres安装了unixODBC驱动程序
  • odbc.ini配置为以下内容:


[test]
Description = test database
Driver      = /usr/lib/x86_64-linux-gnu/odbc/psqlodbca.so
Setup       = /usr/lib/x86_64-linux-gnu/odbc/libodbcpsqlS.so
Server      = 192.168.240.1
User        = postgres
Password    =
Port        = 5432
Database    = mydb

然而,当我通过以下方式测试连接时:

isql test -v

我收到以下错误:

[08001][unixODBC]could not connect to server: No such file or directory
        Is the server running locally and accepting
        connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

更多说明:

  • 我可以从本地(非VM)计算机上运行的管理员成功连接到Postgres
  • 端口5432已从本地计算机上的Windows防火墙完全打开
  • 端口5432上的
  • telnet到192.168.240.1(本地计算机的网络IP)成功

这一切都意味着问题与Ubuntu VM中的ODBC配置有关。我花了几个小时搜索和尝试各种事情,但无济于事。如果我可以让isql正常工作,那么我应该开展业务,因为Zabbix基本上位于ODBC之上,用于其数据库监控功能。

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

我认为您的配置选项有点偏差。试试这个:

[test]
Driver      = /usr/lib/x86_64-linux-gnu/odbc/psqlodbca.so
Setup       = /usr/lib/x86_64-linux-gnu/odbc/libodbcpsqlS.so
Database    = mydb
Servername  = 192.168.240.1
UserName    = postgres
Password    = 
Port        = 5432
Protocol = 7.4

使用Servername代替Server可能就足够了。

答案 1 :(得分:0)

我建议执行以下步骤以使ODBC和PostgreSQL一起使用(忽略apt安装步骤,因为您已经完成了这些步骤):

  1. sudo odbcinst -i -d -f /usr/share/psqlodbc/odbcinst.ini.template
  2. sudo odbcinst -i -s -l -n test -f /usr/share/doc/odbc-postgresql/examples/odbc.ini.template
  3. sudo nano /etc/odbc.ini

这些是做什么的

  1. 使用正确的位置设置文件odbcinst.ini。
  2. 为系统设置odbc.ini文件。
  3. 编辑在步骤2中创建的系统odbc.ini文件,您可以在其中替换满足您需要的选项。

如果您不希望odbc.ini文件位于系统范围内,那么如果不带-l参数调用第2步,也可以将其限制为仅用户使用。在这种情况下,它将创建或修改〜/ .odbc.ini文件,您可以根据需要进行编辑。

uniixODBC的人们似乎建议使用odbcinst来设置此内容,因为它知道将文件放置在何处。不幸的是,要想发挥最大的作用,您需要知道在哪里可以找到驱动程序的驱动程序模板文件。我在此处提供的路径与Ubuntu软件包的路径匹配。