我正在尝试使用PHP的ODBC驱动程序从Ubuntu服务器连接到客户端的IBM AS/400 DB2数据库。我也安装了unixODBC。我的odbcinst.ini看起来像这样:
[IBM DB2 ODBC DRIVER]
Description = ODBC 5.1 Driver for Database
Driver = /usr/lib/x86_64-linux-gnu/odbc/libmyodbc.so
FileUsage = 1
我的odbc.ini看起来像这样:
[IBM DB2 ODBC DRIVER]
Driver = IBM DB2 ODBC DRIVER
Description = ODBC 5.1 Driver DSN
现在,我的连接代码是:
$server = '12.345.678.90' //IP
$port = '446' //PORT
$username = 'my_username';
$password = 'my_password';
$connect = odbc_connect("DRIVER = {IBM DB2 ODBC DRIVER};System=$server:$port;Uid=$username;Pwd=$password;", $username, $password);
if(!$connect)
echo 'Cannot Connect!';
else
echo 'Connected!';
我得到的错误是这样的:
Warning: odbc_connect(): SQL Error: [unixODBC][MySQL][ODBC 5.1 Driver]Access denied for user 'my_username'@'localhost' (using password: YES), SQL state S1000 in SQLConnect
我也尝试使用PDO ODBC驱动程序。这是我得到的错误:
$connect = new PDO("odbc:DRIVER={IBM DB2 ODBC DRIVER};HOSTNAME=$server;PORT=$port;Uid=$username;Pwd=$password");
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] SQLDriverConnect: 1045 [unixODBC][MySQL][ODBC 5.1 Driver]Access denied for user 'my_username'@'localhost' (using password: YES)' in /var/www/test_file.php Stack trace: #0 /var/www/test_file.php: PDO->__construct('odbc:DRIVER={IB...') #1 {main} thrown in /var/www/test_file.php
我在这里做错了什么吗?我需要使用一些其他的驱动程序吗?因为用户名和密码是正确的,我看到客户端使用我拥有的用户名和密码登录到数据库。我以为用户名和密码是错误的,因为它显示拒绝访问用户。看起来不是这样的。可能有其他的错误。
谢谢你的帮助。我希望我把问题说得很清楚。谢谢!
3条答案
按热度按时间q8l4jmvw1#
您的odbcinst.ini文件要求使用MySQL ODBC驱动程序:
但您需要使用 iSeries Access ODBC 驱动程序。您收到
Access Denied for User
消息的原因是因为您正尝试使用IBM i的凭据连接到MySQL数据库。下面是如何在Ubuntu上连接到DB2 for i(在IBM i上)的分步说明:
从IBM下载免费的
iSeriesAccess-6.1.0-1.2.i386.rpm
文件(您必须创建一个免费帐户才能获得它--我确信有比6.1.0-1.2更新的版本)将RPM文件转换为Ubuntu能够理解的格式:
sudo alien iSeriesAccess-6.1.0-1.2.i386.rpm
安装生成的.deb:
sudo dpkg -i iseriesaccess_6.1.0-2.2_i386.deb
将已安装的iSeries库复制到Ubuntu所需的位置:
sudo cp /opt/ibm/iSeriesAccess/lib/* /usr/lib
编辑**/etc/odbc.ini**文件,使其包含以下内容:
编辑**/etc/odbcinst.ini**文件,使其包含:
然后创建与PDO的连接:
7uzetpgm2#
最近我不得不在Ubuntu上使用ODBC / PHP来访问IBM/DB2。您可能可以将其用于大多数其他发行版:下面是我如何让它工作:
[1]根据所需的DB2版本和体系结构,下载以下内容之一
您可以从IBM网站或以下网址获取此信息:
http://www.mmnt.net/db/0/0/public.dhe.ibm.com/as400(根据反馈,这会打开NSFW弹出窗口。这不是我的站点,很抱歉-如果您有疑问,请访问IBM网站)。
然后,使用以下代码安装IBM as 400客户端Access:
[2]安装Java(如果需要)
[3]安装UNIXODBC
[4]安装PHP ODBC
[5]使用以下行创建一个文件
/etc/ld.so.conf.d/iSeriesAccess.conf
:然后运行以下命令:
[6]寄存器驱动程序
[7]用一些PHP代码进行测试
7rtdyuoh3#
塞拉斯的(优秀的)answer中的web链接是ftp://public.dhe.ibm.com/as400的列表,您可以直接访问它。