2014-02-24 166 views
3

我在这一点绿色的,我希望我遇到的问题是一个简单的...编辑:在底部无法使用的unixODBC连接到远程MySQL服务器,libmyodbc

我的新信息需要连接到远程mysql(Amazon RDS)数据库。

以下几个教程后,我的unixODBC和libmyodbc安装客户端的配置,但是当我试图通过isql连接,我得到的错误

[08S01][unixODBC][MySQL][ODBC 5.1 Driver]Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) 
[ISQL]ERROR: Could not SQLConnect 

关于此错误的最令人困惑的部分是我没有试图连接到本地数据库,而是连接到远程数据库。我没有在客户端上的mysql.sock文件...这不是问题,但它是什么?

我感觉到一个配置错误,但我不知道它可能是什么。

如果我运行ODBCINST -j则输出是:

DRIVERS............: /etc/unixODBC/odbcinst.ini 
SYSTEM DATA SOURCES: /etc/unixODBC/odbc.ini 
USER DATA SOURCES..: /root/.odbc.ini 

/etc/unixODBC/odbcinst.ini的内容是:

[MySQL] 
Description    = ODBC for MySQL 
Driver   = /usr/lib64/libmyodbc5.so 
Setup   = /usr/lib64/unixODBC/libodbcmyS.so 
UsageCount    = 5 

[MySQL ODBC 515 Driver] 
Description    = ODBC 5.515 for MySQL 
DRIVER   = /usr/lib64/libmyodbc5-5.1.5.so 
SETUP   = /usr/lib64/unixODBC/libodbcmyS.so 
UsageCount    = 3 

请注意,我不得不编造这个配置本身,我做了一个libmyodbc *的查找,并找到了这两个.so文件,从而为每个文件设置了一个驱动程序。搜索libodbcmyS *得到:

/usr/lib64/unixODBC/libodbcmyS.so.1 
/usr/lib64/unixODBC/libodbcmyS.so 
/usr/lib64/unixODBC/libodbcmyS.so.1.0.0 

所以,我不知道该配置可能是什么。

/etc/unixODBC/odbc.ini的内容是:

[target_db] 
Driver   = MySQL 
Server   = [servername.com] 
Port   = 3306 
Database  = [databasename] 
Option   = 2 
User   = [username] 
Password  = [password] 

我已经尝试了不同的选项中的“驱动程序”,从MySQL更改它,MySQL的ODBC驱动程序515,到路径.so文件(例如:/usr/lib64/libmyodbc5.so),所有这些都会得到相同的结果。

我运行:

odbcinst -i -d -f /etc/unixODBC/odbcinst.ini 

其次:

odbcinst -i -s -l -f /etc/unixODBC/odbc.ini 

其次:

odbcinst -s -q 

打印出我的连接的名称,即[TARGET_DB]

然后,我尝试连接:

isql -v target_db user password 

或只是

isql -v target_db 

,并得到上述错误。

有人碰巧知道我在做什么错在这里?谢谢bunch-

编辑:

想提一提的是,我能够从使用mysql命令行工具,这台服务器连接到数据库。

我安装了一个本地mysql数据库,并且可以使用isql连接到这个数据库。它似乎完全忽略了我的odbc.ini文件,我必须用命令输入一个名称,即isql -v test-database,但它仍会尝试连接到本地主机,尽管我的设置。

我觉得好像我已经尝试了一切,但将继续在它,并会发布,如果我找到一个解决方案。

+0

我也看到同样的问题,只在SLES 11.3上,CentOS 6.4没问题。 – jdborg

回答

1

你可以尝试连接使用您的服务器的IP而不是odbc.ini的“服务器”行上的DNS条目。您是否已验证驱动程序是否安装了phpinfo()?

+0

这也是我的第一个想法,但我在SLES 11.3上看到了同样的问题(CentOS 6.4正常工作)并且不起作用。 – jdborg

0

尝试使用odbc.ini文件的路径设置环境变量ODBCINI

请记住,您指向的odbc.ini文件必须是运行该程序的用户(即用户必须有权在此文件中写入)的“可写入”。