Unable to connect to remote mysql server using unixodbc, libmyodbc

▼魔方 西西 提交于 2019-12-23 13:11:42

问题


I'm a little green at this, and I hope the issue I'm having is a simple one...edit: new information at bottom

I need to make a connection to a remote mysql (Amazon RDS) database.

After following a few tutorials, I have unixodbc and libmyodbc installed and configured on the client, but when I try to connect via isql, I get the error

[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

The most confusing part about this error is that I'm not trying to connect to a local database, but rather to a remote one. I do not have a mysql.sock file on the client...this isn't the issue though is it?

I'm sensing a configuration error but I'm just not sure what it could be.

If I run odbcinst -j then the output is:

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

The content of /etc/unixODBC/odbcinst.ini is:

[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

Please note that I had to make up this configuration myself, I did a find for libmyodbc* and found these two .so files, thus set up a driver for each of them. A search for libodbcmyS* yields:

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

So, I don't know what else that configuration could be.

The content of /etc/unixODBC/odbc.ini is:

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

I've tried different options in "Driver", changing it from MySQL, to MySQL ODBC 515 Driver, to the path to the .so file (eg: /usr/lib64/libmyodbc5.so) and all yield the same result.

I'm running:

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

Followed by:

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

Followed by:

odbcinst -s -q

Which prints out the name of my connection, ie [target_db]

Then, I try the connect:

isql -v target_db user password

or just

isql -v target_db

and get the error shown above.

Anyone happen to know what I'm doing wrong here? Thanks a bunch-

EDIT:

Wanted to mention that I'm able to connect to the database from this server using the mysql command line tools.

I installed a local mysql database, and I'm able to connect to this using isql. It seems to be ignoring my odbc.ini file entirely, i have to enter a name with the command, ie isql -v test-database, but it still tries to connect to localhost despite my settings.

I feel as though I've tried everything but will keep at it and will post if i find a solution.


回答1:


You could try to connect using the ip of your server instead of the dns entry on the "Server" line of odbc.ini.. Have you verified the driver is installed with phpinfo()?




回答2:


Try to set the environment variable ODBCINI with the path of your odbc.ini file.

Keep in mind that the odbc.ini file you point to must be "write-accessible" by the user that is running the program (i.e. the user must have permissions to write in this file).




回答3:


chmod g+w .odbc.ini did it for me since we run the DB with ORACLE-Start and the crs-User seems to be in charge



来源:https://stackoverflow.com/questions/21995987/unable-to-connect-to-remote-mysql-server-using-unixodbc-libmyodbc

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!