Connexion à un IBM as/400 de Base de données DB2
Je suis en train d'essayer de vous connecter à un client IBM as/400 DB2 Base de données à partir d'un Ubuntu Server à l'aide de PHP Pilote ODBC. J'ai le unixODBC installé. Mon odbcinst.ini ressemble à ceci:
[IBM DB2 ODBC DRIVER]
Description = ODBC 5.1 Driver for Database
Driver = /usr/lib/x86_64-linux-gnu/odbc/libmyodbc.so
FileUsage = 1
Et mon odbc.ini ressemble à ceci:
[IBM DB2 ODBC DRIVER]
Driver = IBM DB2 ODBC DRIVER
Description = ODBC 5.1 Driver DSN
Maintenant, mon code pour se connecter est:
$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!';
L'erreur que je reçois est: est-ce
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
J'ai essayé d'utiliser la PDO Pilote ODBC aussi. C'est l'erreur que je reçois:
$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
Je fais quelque chose de mal ici? Ai-je besoin d'utiliser un autre pilote, car le nom d'utilisateur et mot de passe sont corrects, j'ai vu le client de se connecter à la base de données en utilisant le nom d'utilisateur et le mot de passe que j'ai. Je pensais que le nom d'utilisateur et le mot de passe sont faux, car il dit Accès Refusé pour l'utilisateur. Il ne semble pas être le cas. Il y a peut être quelque chose de mal.
Merci pour votre aide. J'espère que j'ai fait le problème est très clair. Merci!
OriginalL'auteur sulavvr | 2013-10-04
Vous devez vous connecter pour publier un commentaire.
Votre odbcinst.fichier ini est à dire d'utiliser le pilote ODBC de MySQL:
mais vous devez utiliser le iSeries Access ODBC pilote. La raison pour laquelle vous avez une
Access Denied for User
message est parce que vous essayez de vous connecter à votre base de données MySQL avec des informations d'identification pour l'IBM i.Voici, étape par étape les instructions pour savoir comment vous connecter à DB2 for i (sur IBM i) sur Ubuntu:
Télécharger gratuitement
iSeriesAccess-6.1.0-1.2.i386.rpm
fichier d'IBM (vous devrez créer un compte gratuit afin de l'obtenir - et je suis sûr qu'il y est une version plus récente que 6.1.0-1.2)Convertir le fichier RPM à quelque chose de Ubuntu comprend:
sudo alien iSeriesAccess-6.1.0-1.2.i386.rpm
Installer le fichier .deb:
sudo dpkg -i iseriesaccess_6.1.0-2.2_i386.deb
Copie installés iSeries bibliothèques à l'endroit où Ubuntu attend d'eux:
sudo cp /opt/ibm/iSeriesAccess/lib/* /usr/lib
Modifier le /etc/odbc.ini fichier contenant:
Modifier le /etc/odbcinst.ini fichier contenant:
Et ensuite pour créer la connexion avec PDO:
La seule différence entre le odbcinst.ini que vous avez fournies et le mien est: Pilote = /opt/ibm/iSeriesAccess/lib64/libcwbodbc.donc Configuration = /opt/ibm/iSeriesAccess/lib64/libcwbodc.donc Tout le reste est le même. J'ai essayé de vous connecter en utilisant PDO, mais le message d'erreur que j'ai eu était que le libcwbodbc.donc n'a pas été trouvé. Une idée? Merci.
Vous pouvez envisager de modifier la Nommage de configuration à 1. IBM i développeurs considèrent généralement il est recommandé d'utiliser la liste de la bibliothèque (semblable à un chemin d'accès). Système de vs le Nommage SQL -partie 1 & partie 2
Si votre serveur est v6.1 ou v7.1, et jusqu'à ce jour (TR 5+ ?) puis "système de nommage" permet le schéma.tableau de notation utilisée dans sql "naming".
(Note: Vous pouvez peut-être surpris d'apprendre que tu as/400 n'est probablement pas vraiment un as/400. IBM a livré la dernière en 2000. La gamme de produits a été re-marque que iSeries, mais a par la suite fusionné avec pSeries, et qui est actuellement connu comme les Systèmes d'Alimentation, l'exécution IBM i.)
OriginalL'auteur Benny Hill
J'ai eu pour obtenir IBM/DB2 accès à travailler avec ODBC /PHP sur une Ubuntu zone récemment.
Vous pouvez probablement s'adapter cela pour la plupart des autres distributions:
Voici comment je l'ai eu à travailler:
[1] Télécharger l'une des opérations suivantes, en fonction de vos DB2 version et l'architecture
Vous pouvez obtenir ce à partir de l'IBM site web, ou à partir d'ici:
http://www.mmnt.net/db/0/0/public.dhe.ibm.com/as400
Puis installer IBM as400 d'Accès au client d'utiliser quelque chose comme ceci:
[2] Installer Java (si nécessaire)
[3] Installer UNIXODBC
[4] Installer PHP ODBC
[5] Ldconfig
Créer un fichier
/etc/ld.so.conf.d/iSeriesAccess.conf
avec cette ligne:Puis exécutez la commande suivante:
[6] Enregistrer driver
[7] Test avec un peu de code PHP
OriginalL'auteur Silas Palmer