Lenny/MySQL
Archiv: Dieser Artikel beschreibt nicht die Funktionalität des derzeit aktuellen delixs-Servers. Er beschreibt ältere Schulserver-Funktionen und dient dem Zweck der Archivierung. |
MySQL
Installation mittels:
aptitude install mysql-common mysql-server
Zuerst das Passwort von "root" für MySQL setzen:
mysqladmin -u root -p password "MysqlRootPasswort" (Enter password: mit RETURN beantworten, da zu Beginn ja noch kein Passwort gesetzt ist)
Werkzeug "phpmyadmin"
Install:
aptitude install phpmyadmin
Ersteinrichtung:
Damit phpmyadmin auch dann korrekt arbeitet, wenn Änderungen an der zentralen Konfigurationsdatei von PHP (php.ini) vorgenommen werden sollten ist es sinnvoll, in der Datei /etc/phpmyadmin/apache.conf am Ende jeweils die Zeilen mit "php_admin_value" einzufügen und die Zeilen mit "php_value include_path" entsprechend zu ergänzen.
<source lang="php"> <IfModule mod_php4.c> AddType application/x-httpd-php .php php_flag magic_quotes_gpc Off php_flag track_vars On php_flag register_globals Off php_admin_value open_basedir /usr/share/phpmyadmin/:/var/lib/phpmyadmin/:/etc/phpmyadmin php_value include_path .:/var/lib/php5 </IfModule>; <IfModule mod_php5.c> AddType application/x-httpd-php .php php_flag magic_quotes_gpc Off php_flag track_vars On php_flag register_globals Off php_admin_value open_basedir /usr/share/phpmyadmin/:/var/lib/phpmyadmin/:/etc/phpmyadmin php_value include_path .:/var/lib/php5 </IfModule> </source>
Als nächste sollte mit den Befehlen:
<source lang="bash"> mv /etc/phpmyadmin/htpasswd.setup /etc/phpmyadmin/htpasswd.setup.orig htpasswd -c /etc/phpmyadmin/htpasswd.setup root </source>
das Passwort "schule" für den User "root" auf die Setup-Datei gesetzt werden.
Jetzt kann durch den Aufruf
https://alix/phpmyadmin/scripts/setup.php
eine Konfigurationsdatei für phpmyadmin erzeugt werden. Debian legt diese Datei nach dem Speichern im Ordner /var/lib/phpmyadmin unter dem Dateinamen config.inc.php an. Im gleichen Ordner sollte dabei auch eine Datei mit den Dateinamen blowfish.secret.inc.php entstanden sein. Die Datei /var/lib/phpmyadmin.config.inc.php sollte danach wie folgt aussehen:
<source lang="php">
<?php /*
* Generated configuration file * Generated by: phpMyAdmin 2.11.8.1deb5 setup script by Michal Čihař <michal@cihar.com> * Version: $Id: setup.php 11423 2008-07-24 17:26:05Z lem9 $ * Date: Sat, 28 Mar 2009 14:50:04 GMT */
/* Servers configuration */ $i = 0;
/* Server Alix-Schulserver (http) [1] */ $i++; $cfg['Servers'][$i]['host'] = 'localhost'; $cfg['Servers'][$i]['extension'] = 'mysqli'; $cfg['Servers'][$i]['connect_type'] = 'tcp'; $cfg['Servers'][$i]['compress'] = false; $cfg['Servers'][$i]['controluser'] = 'pma'; $cfg['Servers'][$i]['controlpass'] = 'pmapass'; $cfg['Servers'][$i]['auth_type'] = 'http'; $cfg['Servers'][$i]['verbose'] = 'delixs-Schulserver Alix'; $cfg['Servers'][$i]['pmadb'] = 'phpmyadmin'; $cfg['Servers'][$i]['bookmarktable'] = 'pma_bookmark'; $cfg['Servers'][$i]['relation'] = 'pma_relation'; $cfg['Servers'][$i]['table_info'] = 'pma_table_info'; $cfg['Servers'][$i]['table_coords'] = 'pma_table_coords'; $cfg['Servers'][$i]['pdf_pages'] = 'pma_pdf_pages'; $cfg['Servers'][$i]['column_info'] = 'pma_column_info'; $cfg['Servers'][$i]['designer_coords'] = 'pma_designer_coords'; $cfg['Servers'][$i]['history'] = 'pma_history';
/* End of servers configuration */
$cfg['UploadDir'] = '/var/www/tmp'; $cfg['SaveDir'] = '/var/www/tmp'; $cfg['AllowAnywhereRecoding'] = true; $cfg['DefaultCharset'] = 'utf-8'; $cfg['RecodingEngine'] = 'iconv'; $cfg['IconvExtraParams'] = '//TRANSLIT'; ?>
</source>
Vor der Nutzung von phpmyadmin fehlt nun nur noch die Einrichtung der zugehörigem Datenbank "phpmyadmin" und des
zugehörigen Nutzers "pma" mit dem Password "pmapass" und der zugehörigen Rechte.
Zur Einrichtung der Datenbank gibt es unter /usr/share/doc/phpmyadmin/examples ein Skript mit den notwendigen SQL-Befehlen.
Mit den Befehlen
<source lang="bash"> cd /var/lib/phpmyadmin gunzip /usr/share/doc/phpmyadmin/examples/create_tables_mysql_4_1_2+.sql.gz </source>
wird diese Datei in das Verzeichnis /var/lib/phpmyadmin ausgepackt. Der Inhalt der Datei lautet:
<source lang="sql">
-- -------------------------------------------------------- -- SQL Commands to set up the pmadb as described in Documentation.html. -- -- This file is meant for use with MySQL 4.1.2 and above! -- For older MySQL releases, please use create_tables.sql -- -- If you are running one MySQL 4.1.0 or 4.1.1, please create the tables using -- create_tables.sql and upgrade their collation settings according to our -- manual. -- -- This script expects the user pma to already be existing. If we would put a -- line here to create him too many users might just use this script and end -- up with having the same password for the controluser. -- -- This user "pma" must be defined in config.inc.php (controluser/controlpass) -- -- Please don't forget to set up the tablenames in config.inc.php -- -- $Id: create_tables_mysql_4_1_2+.sql 9676 2006-11-07 14:16:18Z lem9 $
-- --------------------------------------------------------
-- -- Database : `phpmyadmin` -- CREATE DATABASE IF NOT EXISTS `phpmyadmin`
DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
USE phpmyadmin;
-- --------------------------------------------------------
-- -- Privileges -- -- (activate this statement if necessary) -- GRANT SELECT, INSERT, DELETE, UPDATE ON `phpmyadmin`.* TO -- 'pma'@localhost;
-- --------------------------------------------------------
-- -- Table structure for table `pma_bookmark` --
CREATE TABLE IF NOT EXISTS `pma_bookmark` (
`id` int(11) NOT NULL auto_increment, `dbase` varchar(255) NOT NULL default , `user` varchar(255) NOT NULL default , `label` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL default , `query` text NOT NULL, PRIMARY KEY (`id`)
)
ENGINE=MyISAM COMMENT='Bookmarks' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
-- --------------------------------------------------------
-- -- Table structure for table `pma_column_info` --
CREATE TABLE IF NOT EXISTS `pma_column_info` (
`id` int(5) unsigned NOT NULL auto_increment, `db_name` varchar(64) NOT NULL default , `table_name` varchar(64) NOT NULL default , `column_name` varchar(64) NOT NULL default , `comment` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL default , `mimetype` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL default , `transformation` varchar(255) NOT NULL default , `transformation_options` varchar(255) NOT NULL default , PRIMARY KEY (`id`), UNIQUE KEY `db_name` (`db_name`,`table_name`,`column_name`)
)
ENGINE=MyISAM COMMENT='Column information for phpMyAdmin' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
-- --------------------------------------------------------
-- -- Table structure for table `pma_history` --
CREATE TABLE IF NOT EXISTS `pma_history` (
`id` bigint(20) unsigned NOT NULL auto_increment, `username` varchar(64) NOT NULL default , `db` varchar(64) NOT NULL default , `table` varchar(64) NOT NULL default , `timevalue` timestamp(14) NOT NULL, `sqlquery` text NOT NULL, PRIMARY KEY (`id`), KEY `username` (`username`,`db`,`table`,`timevalue`)
)
ENGINE=MyISAM COMMENT='SQL history for phpMyAdmin' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
-- --------------------------------------------------------
-- -- Table structure for table `pma_pdf_pages` --
CREATE TABLE IF NOT EXISTS `pma_pdf_pages` (
`db_name` varchar(64) NOT NULL default , `page_nr` int(10) unsigned NOT NULL auto_increment, `page_descr` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL default , PRIMARY KEY (`page_nr`), KEY `db_name` (`db_name`)
)
ENGINE=MyISAM COMMENT='PDF relation pages for phpMyAdmin' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
-- --------------------------------------------------------
-- -- Table structure for table `pma_relation` --
CREATE TABLE IF NOT EXISTS `pma_relation` (
`master_db` varchar(64) NOT NULL default , `master_table` varchar(64) NOT NULL default , `master_field` varchar(64) NOT NULL default , `foreign_db` varchar(64) NOT NULL default , `foreign_table` varchar(64) NOT NULL default , `foreign_field` varchar(64) NOT NULL default , PRIMARY KEY (`master_db`,`master_table`,`master_field`), KEY `foreign_field` (`foreign_db`,`foreign_table`)
)
ENGINE=MyISAM COMMENT='Relation table' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
-- --------------------------------------------------------
-- -- Table structure for table `pma_table_coords` --
CREATE TABLE IF NOT EXISTS `pma_table_coords` (
`db_name` varchar(64) NOT NULL default , `table_name` varchar(64) NOT NULL default , `pdf_page_number` int(11) NOT NULL default '0', `x` float unsigned NOT NULL default '0', `y` float unsigned NOT NULL default '0', PRIMARY KEY (`db_name`,`table_name`,`pdf_page_number`)
)
ENGINE=MyISAM COMMENT='Table coordinates for phpMyAdmin PDF output' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
-- --------------------------------------------------------
-- -- Table structure for table `pma_table_info` --
CREATE TABLE IF NOT EXISTS `pma_table_info` (
`db_name` varchar(64) NOT NULL default , `table_name` varchar(64) NOT NULL default , `display_field` varchar(64) NOT NULL default , PRIMARY KEY (`db_name`,`table_name`)
)
ENGINE=MyISAM COMMENT='Table information for phpMyAdmin' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
-- --------------------------------------------------------
-- -- Table structure for table `pma_designer_coords` --
CREATE TABLE IF NOT EXISTS `pma_designer_coords` (
`db_name` varchar(64) NOT NULL default , `table_name` varchar(64) NOT NULL default , `x` INT, `y` INT, `v` TINYINT, `h` TINYINT, PRIMARY KEY (`db_name`,`table_name`)
)
ENGINE=MyISAM COMMENT='Table coordinates for Designer' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin; </source>
Weiterhin wird eine kurze Befehlssequenz gebraucht, die den User "pma" mit dem Passwort "pmapasswd" und den passenden Rechten erstellt.Dazu wird im gleichen Ordner eine Textdatei "create_pma_user.sql" angelegt mit folgendem Inhalt:
<source lang="sql"> GRANT USAGE ON mysql.* TO 'pma'@'localhost' IDENTIFIED BY 'pmapass'; GRANT SELECT ( Host, User, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv, File_priv, Grant_priv, References_priv, Index_priv, Alter_priv, Show_db_priv, Super_priv, Create_tmp_table_priv, Lock_tables_priv, Execute_priv, Repl_slave_priv, Repl_client_priv ) ON mysql.user TO 'pma'@'localhost'; GRANT SELECT ON mysql.db TO 'pma'@'localhost'; GRANT SELECT ON mysql.host to 'pma'@'localhost'; GRANT SELECT (Host, Db, User, Table_name,Table_priv,Column_priv) ON mysql.tables_priv TO 'pma'@'localhost'; GRANT SELECT, INSERT, UPDATE, DELETE ON phpmyadmin.* TO 'pma'@'localhost';
CREATE DATABASE IF NOT EXISTS test DEFAULT CHARACTER SET utf8 COLLATE utf8_bin; GRANT USAGE ON test.* TO 'test'@'localhost' IDENTIFIED BY 'test'; </source>
Jetzt wird noch ein kurzes Shell-Skript "make_phpmyadmin_db_install" angelegt mit dem Inhalt
<source lang="bash"> #! /bin/bash echo "Erzeuge Datenbank phpmyadmin" mysql -u root -p < create_tables_mysql_4_1_2+.sql echo "Erzeuge User PMA mit nötigen Rechten für PHPMyadmin" echo "und Datenbank test und User test mit Passwort test" mysql -u root -p < create_pma_user.sql </source>
Wird das Script mit "chmod 700" ausführbar gemacht und per "./make_phpmyadmin_db_install" ausgeführt,
so ist nach Eingabe des bei der Installation des mysql-servers angegebenen Passworts für den Benutzer "root"
die Installation von phpmyadmin abgeschlossen!
phpmyadmin kann nun vom Browser des Clients aus genutzt werden über den Aufruf:
https://alix/phpmyadmin/
Weblinks
Klaus Werner 2009