[Howto] PHPMyAdmin

Pagina: 1
Acties:
  • 3.968 views sinds 30-01-2008

Acties:
  • 0 Henk 'm!

  • G33rt
  • Registratie: Februari 2002
  • Laatst online: 22-06-2022

HOWTO: PHPMyAdmin database administratie en het inrichten van een MySQL-db


Inleiding

Als uitbreiding op mijn vorige howto over o.a. MySQL installeren en configureren, volgt hier een kleine howto over het gebruikt van een hele handige tool - phpMyAdmin. phpMyAdmin is een php script dat je oproept in je browser, om zo je MySQL databases te kunnen beheren

·^

Aan de slag ...

Download de nieuwste versie van phpMyAdmin (op het moment van schrijven 2.5.4, en daar gaat de link ook heen). Pak de zip-file uit, er zal een map 'phpMyAdmin-2.5.4' uitkomen met daarin een serie bestanden en nog enkele submappen. Hernoemen deze map naar 'phpmyadmin' (lowercase), en zet hem in een directory waar je webserver bij kan (als je de vorige howto hebt gebruikt is dat dus C:\apache\apache\htdocs). Je zult phpmyadmin later kunnen oproepen met http://localhost/phpmyadmin.

Maar eerst, moeten we de nodige instellingen maken. Open een cmd en doe het volgende:

cd C:\mysql\bin
mysql
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';

Deze query vereist MySQL 4.02 of hoger. Als je een MySQL <4.02 hebt, is de query de volgende:

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
) 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';

Wat je hier hebt gedaan is een controle user gemaakt voor phpMyAdmin (om de inlognaam te kunnen controleren), die 'pma' heeft en als wachtwoord 'pmapass' (beiden zonder aanhalingstekens). Dit is echter niet wenselijk, maak dus zelf een user 'control' of iets dergelijks, en verzin zelf een wachtwoord.

Open nu in de map phpmyadmin (die inmiddels in je DocumentRoot staat) config.inc.php. Je zult de volgende optie zien staan:

$cfg['PmaAbsoluteUri'] = '';

Lees ook de comments erboven, je zult de hele url naar phpmyadmin moeten invoeren. Aangezien ik deze keer alleen voor het interne netwerk een db-tje heb, stel ik dit in (uiteraard stel je zelf in wat op jouw situatie van toepassing is):

$cfg['PmaAbsoluteUri'] = 'http://192.168.1.2/phpmyadmin';

Je zult nu de redirects van phpmyadmin netjes krijgen.

Ook moeten we de hostname instellen:

$cfg['Servers'][$i]['host']          = 'localhost'; // MySQL hostname or IP address

Vul hier de hostname in waar MySQL op draait. Aangezien dit in ons geval dezelfde bak is als phpmyadmin, is het voor phpmyadmin dus localhost.

Verder zien we een eindje naar onderen de volgende opties onder elkaar staan:

$cfg['Servers'][$i]['controluser']   = '';          // MySQL control user settings
// (this user must have read-only
$cfg['Servers'][$i]['controlpass'] = ''; // access to the "mysql/user"
// and "mysql/db" tables)
$cfg['Servers'][$i]['auth_type'] = 'config'; // Authentication method (config, http or cookie based)?
$cfg['Servers'][$i]['user'] = 'root'; // MySQL user
$cfg['Servers'][$i]['password'] = ''; // MySQL password (only needed
// with 'config' auth_type)

De controluser en controlpass heb je dus net gemaakt, voer daar de juiste waarden in. Zet de authentication mode op http, en laat de onderste vooral open, anders leest phpmyadmin de login uit config.inc.php en kan iedereen dus inloggen, terwijl je nu een .htaccess achtig wachtwoordvenster krijgt voor de gebruiker root (vul daar dus wel de user en het wachtwoord in dat je hebt ingevoerd toen je WinMysqladmin.exe laadde). Voor Linux gebruikers geldt dat ze gewoon hun normale user accounts kunnen gebruiken mits die rechten hebben gekregen via GRANT (door root dus). De configuratie ziet er nu zo uit:

$cfg['Servers'][$i]['controluser']   = 'control';          // MySQL control user settings
// (this user must have read-only
$cfg['Servers'][$i]['controlpass'] = 'controlpass'; // access to the "mysql/user"
// and "mysql/db" tables)
$cfg['Servers'][$i]['auth_type'] = 'http'; // Authentication method (config, http or cookie based)?
$cfg['Servers'][$i]['user'] = 'root'; // MySQL user
$cfg['Servers'][$i]['password'] = ''; // MySQL password (only needed
// with 'config' auth_type)
In principe hebt je nu phpmyadmin geconfigureerd en ben je klaar om aan de slag te gaan. Voer in het create new database venster 'games' in, en druk op create.

Fig. 1:
een nieuwe database

Als je nu bovenin op 'query window' drukt, kan je MySQL queries op de nieuwe database uitvoeren. We voeren in:

CREATE TABLE `games` (
`id` int(50) NOT NULL auto_increment,
`ip` varchar(50) NOT NULL default '',
`name` varchar(50) NOT NULL default '',
`genre` varchar(50) NOT NULL default '',
`systeem` varchar(50) NOT NULL default '',
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=55 ;

Fig. 2:
een query

Dit is mijn console-games-database, vandaar de velden. Het is puur om te testen en je phpmyadmin te laten zien. Als het goed is zie je nu 'Your SQL-query has been executed successfully'. Probeer bij het opzetten van een database(je) er altijd aan te denken je namen zo simpel en doelteffend mogelijk te houden, en de juiste types voor velden te selecteren.

Druk nu - ook bovenin - op de 'structure' knop. Je zult nu alle tabellen, inclusief hun grootte, die in deze database zitten zien. Als je op de size achter 'games' drukt, zie je vervolgens de velden die de tabel bevat.

Fig. 3:
de structuur van een database

Ook zie je hier handige informatie over wat de primary key is, kan je rows droppen, kan je de database droppen, etc. Eigenlijk zit phpmyadmin zo simpel in elkaar, en is het uiterst doeltreffend en effectief. Je moet alleen even weten hoe je het instelt en waar de knoppen zitten.

Fig. 4:
de structuur van een tabel

Fig. 5:
de structuur van een rij

We kunnen nu de informatie over de spellen (in dit geval) uit de database trekken:

$user ="user"; 
$pass ="wachtwoord";
$host ="localhost";
$db ="games";

mysql_connect($host, $user, $pass);
mysql_select_db($db);

echo "Spelletjes lijst";
echo "";
echo "";
echo "";
echo "";
echo "";
echo "";

$sql = mysql_query("SELECT * FROM messages ORDER by id desc") or die (mysql_error());

while ($read = mysql_fetch_object($sql)) {
//HTML code die zooi uit DB haalt
echo "";
echo "";
echo "";
echo "";
echo "";
}
echo "
IDNaamGenreSysteem";
echo "
".$read->id."".$read->name."".$read->genre."".$read->systeem."";
echo "
";

Als het goed werkt moet dit een tabel outputten. Zo kun je nog veel meer dingen uitspoken, en het handige is dat je je queries altijd makkelijk kan testen met phpmyadmin. Verder is het gewoon een handige tool om inzicht te hebben in je database.

·^

Lijst met figuren



·^

Thanks to

Deze howto is geschreven door Geert-Jan, beter bekend als G33rt
Op- of aanmerkingen, en suggesties kunnen worden doorgegeven aan de SA moderators

·^

Inhoudsopgave


[ Voor 127% gewijzigd door Rafe op 31-12-2003 15:10 ]


Dit topic is gesloten.