====== System i Support ====== Mantis support for IBM System i platform (AS/400, iSeries) and DB2. ===== [[MySQLi5|Installing MySQL on System i]] ===== http://dev.mysql.com/downloads/mysql/5.0.html#downloads\\ (as of 2007-01-30)\\ IBM AIX downloads AIX 5.2 (POWER, 64-bit) Standard 5.0.27 28.1M Max 5.0.27 28.1M Download filename: mysql-max-5.0.27-aix5.2-powerpc-64bit.tar.gz\\ W:\LIVE\mantis-sql>dir Directory of W:\LIVE\mantis-sql 10/20/2006 21:24 80,732,160 mysql-max-5.0.27-aix5.2-powerpc-64bit.tar W:\LIVE\mantis-sql>ftp -i as400 Connected to AS400. 220-QTCP at 192.168.0.222. 220 Connection will close if idle more than 5 minutes. User (RUBY:(none)): yourUserId 331 Enter password. Password: ********** 230 YOURUSERID logged on. ftp> cd /usr/local 550-NAMEFMT set to 1. 250 "/usr/local" is current directory. ftp> ls 200 PORT subcommand request successful. 125 List started. Zend/ 250 List completed. ftp: 7 bytes received in 0.00Seconds 7000.00Kbytes/sec. ftp> bin 200 Representation type is binary IMAGE. ftp> put *.tar 200 PORT subcommand request successful. 150 Sending file to /usr/local/mysql-max-5.0.27-aix5.2-powerpc-64bit.tar ftp: 80732160 bytes sent in 11.36Seconds 7107.33Kbytes/sec. ftp>quit On the AS/400 command line, as QSECOFR, issue the following commands (responses not shown):\\ call qp2term cd /usr/local tar -xvf mysql-max-5.0.27-aix5.2-powerpc-64bit.tar ln -s mysql-max-5.0.27-aix5.2-powerpc-64bit mysql cd /usr/local/mysql scripts/mysql_install_db Start MySQL > cd . ; ./bin/mysqld_safe & [1] 128192 # Starting mysqld daemon with databases from /usr/local/mysql/data Continue with Unix Post Install docs at http://dev.mysql.com/doc/refman/5.0/en/unix-post-installation.html First, set default priviledges: http://dev.mysql.com/doc/refman/5.0/en/default-privileges.html > ./bin/mysql -u root Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 to server version: 5.0.27-max Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> > SET PASSWORD FOR ''@'localhost' = PASSWORD('secret'); Query OK, 0 rows affected (0.00 sec) mysql> > SELECT Host, User FROM mysql.user; +-------------------+------+ | Host | User | +-------------------+------+ | AS400 | | | AS400 | root | | localhost | | | localhost | root | +-------------------+------+ 4 rows in set (0.01 sec) mysql> > SET PASSWORD FOR ''@'AS400' = PASSWORD('secret'); Query OK, 0 rows affected (0.06 sec) mysql> > UPDATE mysql.user SET Password = PASSWORD('secret') -> WHERE User = ''; Query OK, 0 rows affected (0.07 sec) Rows matched: 2 Changed: 0 Warnings: 0 mysql> > UPDATE mysql.user SET Password = PASSWORD('secret') WHERE User = 'root'; Query OK, 2 rows affected (0.01 sec) Rows matched: 2 Changed: 2 Warnings: 0 mysql> > FLUSH PRIVILEGES; Query OK, 0 rows affected (0.00 sec) mysql> Optionally remove anonymous access: mysql> DELETE FROM mysql.user WHERE User = ''; mysql> FLUSH PRIVILEGES; Validate with: > ./bin/mysqladmin version -psecret ./bin/mysqladmin Ver 8.41 Distrib 5.0.27, for ibm-aix5.2.0.0 on powerpc Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB This software comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to modify and redistribute it under the GPL license Server version 5.0.27-max Protocol version 10 Connection Localhost via UNIX socket UNIX socket /tmp/mysql.sock Uptime: 37 min 56 sec Threads: 1 Questions: 15 Slow queries: 0 Opens: 12 Flush tables: 2 Open tables: 0 Queries per second avg: 0.007 # Now edit ZendCore to tell it to use MySQL. We will do this manually by editing the php.ini file. Go to an AS/400 command line and issue the command: wrklnk '/usr/local/Zend/core/etc' Place a 5 in the option column at ETC and Press Enter. Place a 2 in the option column at PHP.INI and Press Enter. Use the search command: f =mysql to find the lines: ;extension=mysql.so ;extension=mysqli.so It is possible that they are already un-commented (without a leading semicolon). If not, remove the leading semicolon resulting in: extension=mysql.so extension=mysqli.so Save with F2 and exit with F3. At this time, you should end and re-start PHP from the green screen menu at ZENDCORE/ZCMENU. When it starts back up, everything should be operational. ---- ---- ---- ---- ===== [[Mantisi5|Installing MANTIS]] ===== Obtain the latest stable version of Mantis from http://sourceforge.net/project/showfiles.php?group_id=14963&package_id=166159 Download the file mantis-1.0.6.tar.gz to a PC folder. Since the file is "GZIPPED", the easiest thing to do is use WinZip on a Windoze box to unzip (untar) the distribution file. Unzip gz file to a known folder on your PC. Use a real FTP program like WS-FTP or CuteFTP (free) to transfer the folder and all subfolders and files to a folder on the AS/400. We suggest you place the contents in the default http documents folder in the root file system of the IFS: /www/zendcore/htdocs/xxx where xxx is either the default folder name ''mantis-1.0.6'' (ugly to key in) or a more convenient name like ''mantis'' or ''bugtracker'' or ''issues''. For this example we will use the folder ''mm'' standing for Mantis on MySQL. Start the install process by using your browser to run the index.php in the root folder of the Mantis software: http://your_system_ip_or_name:89/mm/index.php Mantis will automatically detect that it is not yet installed, as this is the same file that is used to run the software also. Provide the userIDs and passwords you configured for MySQL in the previous steps. Once that is complete, you should modify the default configuration by editing the config_inc.php file in the main folder of your Mantis installation. The Mantis system uses two configuration files. The default file config_defaults_inc.php is not to be modified. All modifications to the configuration go into config_inc.php, which is read AFTER config_defaults_inc.php, and therefore overrides it. Following are some setting that should be set in config_inc.php, most of them will need to be added: ---- ===== [[DB2i5|Using native i5 DB2/400]] ===== Issues of concern 2007-02-06 ==== A. install.php user error ==== === NOTE: /www/zendcore/htdocs/md/config_inc.php should NOT exist prior to running install.php. === /www/zendcore/htdocs/md/admin/install.php will not work. When run with the following parms (fields only in order): db2 (experimental)\\ ## system database name from DSPRDBDIRE AS/400 command "Relational database" field\\ S1071FDD\\ PHP_IRA\\ p0okmju7yg\\ ## I tested with incrementing numbers for xxx, got up to 024, use a new one each time you run install.php\\ MANTISxxx\\ ## BOTH pw's are required, you cannot leave user blank\\ PHP_IRA\\ p0okmju7yg\\ ## box below is unchecked\\ [ ] Print SQL...\\ ## then click\\ [Install...]\\ The LIBRARY *IS* being created with the database collection and journal, but the tables and indexes are not. The database is created by the admin but the tables are made by the user. The diff in the code for the two operations is: FROM: /md/admin/install.php TO CREATE DB which works $g_db = ADONewConnection( $f_db_type ); $t_result = $g_db->Connect( $f_hostname, $f_admin_username, $f_admin_password ); The 9th green message at the top of the screen shows that the "Attempting to connect to database as ADMIN" was GOOD, so that worked. TO CREATE TABLES that does not $g_db = ADONewConnection($f_db_type); $t_result = @$g_db->Connect($f_hostname, $f_db_username, $f_db_password, $f_database_name); The f_db_type is db2 for both. Then I tried using the SAME id and pw: $t_result = @$g_db->Connect($f_hostname, $f_admin_username, $f_admin_password, $f_database_name); And that does not work either. Then I tried $t_result = @$g_db->Connect($f_hostname, $f_admin_username, $f_admin_password); And that does not work either. A debug statement I inserted shows: Database user doesn't have access to the database ( ) HOST[S1071FDD] ID[PHP_IRA] PW[123123123] DB[MANTIS400] DBTYPE[db2] Makes no sense as the [] parms are correct. This does NOT appear to be an MD5 issue at all. (pw masked with 123123123) I removed the @ sign from the connect() and got no additional error info. In fact, the parens on the output screen are empty. ==== B. MD5 missing ==== Enabled mcrypt/mhash in the PHP extensions, and bounced. That did NOT eliminate the MD5 warning. "Checking for MD5 Crypt() support POSSIBLE PROBLEM - password security may be lower than expected". I had this with the MySQL install also! ==== C. db2_tables error ==== Install.php ERROR:\\ SYSTEM WARNING: db2_tables() expects parameter 1 to be resource, boolean given comes from FILE:\\ /www/zendcore/htdocs/md/core/adodb/drivers/adodb-db2.inc.php and is complaining that the value of this->connection is null. function &MetaTables($ttype=false) { global $ADODB_FETCH_MODE; $savem = $ADODB_FETCH_MODE; $ADODB_FETCH_MODE = ADODB_FETCH_NUM; $qid = db2_tables($this->_connectionID); I cannot figure this out and do not know if it affects issue A. ==== D. Creating SQL database manually ==== 1. Run the install.php to generate the SQL by checking the box. Copy and paste into a PC file editor. 2. Removed formatting spaces to compact, as the SQL parser on the AS/400 has a length limit. I try to keep the lines below 88 bytes. 3. Split any lines that exceeded 88. There are just a few. 4. Add the required qualifier to tell DB2/400 WHERE to put the tables. Prefix all table and index names with xxxx/ where xxxx is the library name that you designate in the "Database name" field in the install.php input screen. "CREATE TABLE mantis_user_table" becomes "CREATE TABLE mantis011/mantis_user_table", for instance. 5. Fix the error in the SQL generated: 365 CREATE TABLE mantis011/mantis_user_table ( ... 371 date_created TIMESTAMP DEFAULT '1970-01-01 00:00:01' NOT NULL, 372 last_visit TIMESTAMP DEFAULT '1970-01-01 00:00:01' NOT NULL, ... 380 PRIMARY KEY (id) 381 ); ERROR: Timestamp does not match INSERT\\ 395 INSERT INTO mantis_user_table(username, realname, email, password, date_created, ... 399 '2007-02-06, 09:10:36PM', '2007-02-06, 09:10:36PM', 1, 0, 90, 3, 0, 0, 400 'b4f45b80260a3ce540d14a897560ab9eed40d29997c90d4c63cda6ef153afb52'); THIS:\\ 399 '2007-02-06, 09:10:36PM', '2007-02-06, 09:10:36PM', 1, 0, 90, 3, 0, 0, MUST BE:\\ 399 '2007-02-06 09:10:36', '2007-02-06 09:10:36', 1, 0, 90, 3, 0, 0, 6. Save the file as MANTISSQL on the PC 7. Create a Source Physical File on the AS/400 Create Source Physical File (CRTSRCPF) Type choices, press Enter. File . . . . . . . . . . . . . . > MANTISSQL Name Library . . . . . . . . . . . > MANTIS011 Name, *CURLIB Record length . . . . . . . . . > 300 Number Member, if desired . . . . . . . *NONE Name, *NONE, *FILE Text 'description' . . . . . . . Mantis SQL installation script CRTSRCPF FILE(MANTIS011/MANTISSQL) RCDLEN(300)TEXT('Mantis SQL installation script') 8. Add the working LIBRARY to your library list:\\ addlible mantis011 9. FTP the mantissql pc file tp MANTIS011/mantissql SRCPF 230 ICHANDLER logged on. ftp> cd mantis011 250 "MANTIS011" is current library. ftp> lcd md Local directory now W:\LIVE\mantis-sql\md. ftp> pwd 257 "MANTIS011" is current library. ftp> lcd Local directory now W:\LIVE\mantis-sql. ftp> lcd md Local directory now W:\LIVE\mantis-sql\md. ftp> put mantissql 200 PORT subcommand request successful. 150 Sending file to member MANTISSQL in file MANTISSQL in library MANTIS011. 226 File transfer completed successfully. ftp: 17753 bytes sent in 0.00Seconds 17753000.00Kbytes/sec. 10. Once the file is in the source file on the AS/400, execute it by the Run SQL Statement command, shown prompted with F4: Run SQL Statements (RUNSQLSTM) Type choices, press Enter. Source file . . . . . . . . . . > MANTISSQL Name Library . . . . . . . . . . . > MANTIS011 Name, *LIBL Source member . . . . . . . . . > MANTISSQL Name Commitment control . . . . . . . > *ALL *CHG, *UR, Naming . . . . . . . . . . . . . *SYS *SYS, *SQL And below in command line format: RUNSQLSTM SRCFILE(MANTIS011/MANTISSQL) SRCMBR(MANTISSQL) COMMIT(*ALL) 11. Congratulations.