我正在尝试使用在Ubuntu虚拟机上运行的Zabbix服务器来监视在同一主机(而不是VM)上运行的应用程序中的Postgres数据库。为了清楚起见,我正在尝试从计算机上的Linux Ubuntu虚拟机连接到同一台计算机上不在VM中运行的Postgres。 Zabbix使用ODBC,因此该过程的一个初步步骤是使Postgres的ODBC连接正常工作。但是,我遇到了问题。
我采取的步骤:
sudo apt-get install unixodbc unixodbc-dev
sudo apt-get install odbc-postgresql
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"?
更多说明:
192.168.240.1
(本地计算机的网络IP)成功这一切都意味着问题与Ubuntu VM中的ODBC配置有关。我花了几个小时搜索和尝试各种事情,但无济于事。如果我可以让isql
正常工作,那么我应该开展业务,因为Zabbix基本上位于ODBC之上,用于其数据库监控功能。
提前感谢您的帮助。
答案 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安装步骤,因为您已经完成了这些步骤):
sudo odbcinst -i -d -f /usr/share/psqlodbc/odbcinst.ini.template
sudo odbcinst -i -s -l -n test -f /usr/share/doc/odbc-postgresql/examples/odbc.ini.template
sudo nano /etc/odbc.ini
这些是做什么的
如果您不希望odbc.ini文件位于系统范围内,那么如果不带-l参数调用第2步,也可以将其限制为仅用户使用。在这种情况下,它将创建或修改〜/ .odbc.ini文件,您可以根据需要进行编辑。
uniixODBC的人们似乎建议使用odbcinst来设置此内容,因为它知道将文件放置在何处。不幸的是,要想发挥最大的作用,您需要知道在哪里可以找到驱动程序的驱动程序模板文件。我在此处提供的路径与Ubuntu软件包的路径匹配。