我对此有点陌生,我希望我遇到的问题是一个简单的问题......编辑:底部的新信息
我需要连接到远程 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]
我在“Driver”中尝试了不同的选项,将其从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
or just
isql -v target_db
并得到如上所示的错误。
有人知道我在这里做错了什么吗?非常感谢-
EDIT:
想要提及的是,我可以使用 mysql 命令行工具从该服务器连接到数据库。
我安装了本地 mysql 数据库,并且可以使用 isql 连接到该数据库。它似乎完全忽略了我的 odbc.ini 文件,我必须使用命令输入一个名称,即 isql -v test-database,但尽管我进行了设置,它仍然尝试连接到本地主机。
我觉得我已经尝试了一切,但会坚持下去,如果我找到解决方案,我会发布。