MySQL en phpMyAdmin
                 door Jisse Reitsma




april 2012        MySQL en phpMyAdmin voor “beginners”
Jisse Reitsma
●   Auteur “Joomla! templates ontwerpen”
●   Mede-oprichter en developer van Yireo
                 MageBridge, Vm2Mage, SimpleLists
                 Dynamic404, SSL Redirect, ...
●   Programmeur
                 Joomla!, Magento, PHP, Java, Android




    april 2012                 MySQL en phpMyAdmin voor “beginners”
Deze presentatie
●   Deel 1: Introductie tot MySQL
●   Deel 2: phpMyAdmin in de praktijk
●   Deel 3: Geavanceerde onderwerpen




    april 2012      MySQL en phpMyAdmin voor “beginners”
(daar gaan we)




april 2012     MySQL en phpMyAdmin voor “beginners”
Deel 1:
             Introductie tot MySQL



april 2012        MySQL en phpMyAdmin voor “beginners”
Introductie tot MySQL
●   Onderdeel van een stack
●   Client/server architectuur
●   Wat is SQL?




    april 2012        MySQL en phpMyAdmin voor “beginners”
Introductie tot MySQL
●   Onderdeel van een stack
●   Client/server architectuur
●   Wat is SQL?




    april 2012        MySQL en phpMyAdmin voor “beginners”
Introductie tot MySQL
●   Onderdeel van een stack
             –   LAMP (Linux, Apache, MySQL, PHP)
             –   MAMP (MacOS, Apache, MySQL, PHP)
             –   WAMP (Windows, Apache, MySQL, PHP)
             –   WIMP (Windows, IIS, MySQL, PHP)
●   Client/server architectuur
●   Wat is SQL?
    april 2012               MySQL en phpMyAdmin voor “beginners”
Introductie tot MySQL
●   Onderdeel van een stack
●   Client/server architectuur
●   Wat is SQL?




    april 2012        MySQL en phpMyAdmin voor “beginners”
Introductie tot MySQL
●   Onderdeel van een stack
●   Client/server architectuur
             –   MySQL server
             –   MySQL client
●   Wat is SQL?



    april 2012            MySQL en phpMyAdmin voor “beginners”
MySQL server
●   Op dezelfde server
                 localhost
●   Op een andere server bij dezelfde hoster
                 mysql12345.hoster.local
●   Op een andere server bij andere hoster
             –   TCP-poort 3306 open in firewall
             –   NIET DOEN


    april 2012                  MySQL en phpMyAdmin voor “beginners”
MySQL client
●   Joomla!      (PHP “mysql”)

●   phpMyAdmin (PHP “mysql”)
●   command-line client (SSH)
●   MySQL GUI client (SQLWave, HeidiSQL)




    april 2012            MySQL en phpMyAdmin voor “beginners”
Introductie tot MySQL
●   Onderdeel van een stack
●   Client/server architectuur
●   Wat is SQL?




    april 2012        MySQL en phpMyAdmin voor “beginners”
Introductie tot MySQL
●   Onderdeel van een stack
●   Client/server architectuur
●   Wat is SQL?
             –   Structured Query Language
             –   Aanspreken van relationele database



    april 2012             MySQL en phpMyAdmin voor “beginners”
april 2012   MySQL en phpMyAdmin voor “beginners”
Voorbeeld: Joomla! gebruikers
●   jos_users = Lijst van gebruikers
●   jos_usergroups = Lijst van groepen
●   jos_user_usergroup_map = Koppeling




    april 2012    MySQL en phpMyAdmin voor “beginners”
Voorbeeld: Joomla! artikelen
●   jos_content = Lijst van artikelen
●   jos_categories = Lijst van categorieen
●   jos_assets = Authorisatie




    april 2012     MySQL en phpMyAdmin voor “beginners”
SQL databases
●   MySQL                             ●   SQLite
●   Oracle                            ●   Sybase
●   Microsoft SQL                     ●   Microsoft Access
●   DB2                               ●   dBase
●   PostgreSQL                        ●   ...


    april 2012      MySQL en phpMyAdmin voor “beginners”
(duurde dat 10 minuten?)




april 2012          MySQL en phpMyAdmin voor “beginners”
Deel 2:
             phpMyAdmin in de praktijk



april 2012          MySQL en phpMyAdmin voor “beginners”
phpMyAdmin in de praktijk
●   Overzicht van phpMyAdmin
●   Wijzigen / toevoegen / verwijderen
●   SELECT-statement
●   Exporteren & importeren




    april 2012          MySQL en phpMyAdmin voor “beginners”
phpMyAdmin in de praktijk
●   Inloggen op phpMyAdmin
●   Wijzigen / toevoegen / verwijderen
●   SELECT-statement
●   Exporteren & importeren




    april 2012          MySQL en phpMyAdmin voor “beginners”
Inloggen op phpMyAdmin
●   Direct via een phpMyAdmin link
●   Via control panel van hosting omgeving
             –   CPanel, Plesk, DirectAdmin
             –   eigen control panel




    april 2012              MySQL en phpMyAdmin voor “beginners”
Inloggen op phpMyAdmin




april 2012         MySQL en phpMyAdmin voor “beginners”
april 2012   MySQL en phpMyAdmin voor “beginners”
april 2012   MySQL en phpMyAdmin voor “beginners”
april 2012   MySQL en phpMyAdmin voor “beginners”
april 2012   MySQL en phpMyAdmin voor “beginners”
april 2012   MySQL en phpMyAdmin voor “beginners”
phpMyAdmin in de praktijk
●   Inloggen op phpMyAdmin
●   Wijzigen / toevoegen / verwijderen
●   SELECT-statement
●   Exporteren & importeren




    april 2012          MySQL en phpMyAdmin voor “beginners”
Wijzigen / toevoegen / verwijderen
●   UPDATE = Wijzigen
●   INSERT = Toevoegen
●   DELETE = Verwijderen




    april 2012   MySQL en phpMyAdmin voor “beginners”
phpMyAdmin in de praktijk
●   Inloggen op phpMyAdmin
●   Wijzigen / toevoegen / verwijderen
●   SELECT-statement
●   Exporteren & importeren




    april 2012          MySQL en phpMyAdmin voor “beginners”
Voorbeelden van SELECTs
●   SELECT * FROM jos_users 
    WHERE id=42;
●   SELECT title,alias FROM jos_content 
    WHERE title = “contacts”;
●   SELECT title FROM jos_content 
    WHERE title LIKE “cont%”;


    april 2012     MySQL en phpMyAdmin voor “beginners”
Voorbeeld van JOIN SELECT
●   SELECT article.* 
    FROM jos_content AS article
    LEFT JOIN  jos_categories AS cat
    ON cat.id = a.catid
    WHERE cat.id = 3;




    april 2012   MySQL en phpMyAdmin voor “beginners”
phpMyAdmin in de praktijk
●   Inloggen op phpMyAdmin
●   Wijzigen / toevoegen / verwijderen
●   SELECT-statement
●   Exporteren & importeren




    april 2012          MySQL en phpMyAdmin voor “beginners”
Exporteren
●   Welke tabellen?
             –   Enkele tabel
             –   Meerdere tabellen
             –   Alle tabellen
●   Welke gegevens?
             –   Structuur en/of data




    april 2012                   MySQL en phpMyAdmin voor “beginners”
(rustig ademen)




april 2012     MySQL en phpMyAdmin voor “beginners”
Deel 3:
       Geavanceerde onderwerpen



april 2012    MySQL en phpMyAdmin voor “beginners”
Database table prefix
●   Gebruik niet “jos_”
●   Instelbaar tijdens Joomla! installatie
●   Maakt SQL-injection moeilijker




    april 2012        MySQL en phpMyAdmin voor “beginners”
User ID 42
●   Standaard “admin” user heeft ID 42
●   Maakt SQL-injection makkelijker
●   Wijzigen
             –   Maak nieuwe Super User aan
             –   Verwijder oude Super User
●   Vraag: Waarom niet via phpMyAdmin wijzigen?

    april 2012             MySQL en phpMyAdmin voor “beginners”
Tabellen leegmaken
●   TRUNCATE `jos_content`;
●   Wees voorzichtig
             –   Dit kan niet teruggedraaid worden
             –   Relaties worden niet in acht genomen




    april 2012             MySQL en phpMyAdmin voor “beginners”
JOINs
●   LEFT JOIN
●   RIGHT JOIN
●   INNER JOIN
●   OUTER JOIN




    april 2012   MySQL en phpMyAdmin voor “beginners”
UTF-8 en collations
●   UTF-8 = De-facto karakterset voor Joomla!
             –   Support voor veel talen (Westers, Arabisch, Hindu, Klingon)
●   Collations = Interpretatie van karakterset
             –   utf8_general_ci (standaard)
             –   utf8_polish_ci
             –   latin1 (nooit gebruiken)


    april 2012                  MySQL en phpMyAdmin voor “beginners”
MyISAM en InnoDB
●   MyISAM Storage Engine
●   InnoDB Storage Engine




    april 2012      MySQL en phpMyAdmin voor “beginners”
In het kort
●   Deel 1: Introductie tot MySQL
                 Stack; Client/server; SQL;

●   Deel 2: phpMyAdmin in de praktijk
                 INSERT, SELECT, UPDATE, DELETE;
                 Aanmaken van database, database-user; Import / export;

●   Deel 3: Geavanceerde onderwerpen
                 JOINs; UTF-8, collations; user-ID 42; MyISAM, InnoDB
                 TRUNCATE; database table prefix



    april 2012                      MySQL en phpMyAdmin voor “beginners”
(vragen)




april 2012   MySQL en phpMyAdmin voor “beginners”

PhpMyAdmin and MySQL for beginners

  • 1.
    MySQL en phpMyAdmin door Jisse Reitsma april 2012 MySQL en phpMyAdmin voor “beginners”
  • 2.
    Jisse Reitsma ● Auteur “Joomla! templates ontwerpen” ● Mede-oprichter en developer van Yireo MageBridge, Vm2Mage, SimpleLists Dynamic404, SSL Redirect, ... ● Programmeur Joomla!, Magento, PHP, Java, Android april 2012 MySQL en phpMyAdmin voor “beginners”
  • 3.
    Deze presentatie ● Deel 1: Introductie tot MySQL ● Deel 2: phpMyAdmin in de praktijk ● Deel 3: Geavanceerde onderwerpen april 2012 MySQL en phpMyAdmin voor “beginners”
  • 4.
    (daar gaan we) april2012 MySQL en phpMyAdmin voor “beginners”
  • 5.
    Deel 1: Introductie tot MySQL april 2012 MySQL en phpMyAdmin voor “beginners”
  • 6.
    Introductie tot MySQL ● Onderdeel van een stack ● Client/server architectuur ● Wat is SQL? april 2012 MySQL en phpMyAdmin voor “beginners”
  • 7.
    Introductie tot MySQL ● Onderdeel van een stack ● Client/server architectuur ● Wat is SQL? april 2012 MySQL en phpMyAdmin voor “beginners”
  • 8.
    Introductie tot MySQL ● Onderdeel van een stack – LAMP (Linux, Apache, MySQL, PHP) – MAMP (MacOS, Apache, MySQL, PHP) – WAMP (Windows, Apache, MySQL, PHP) – WIMP (Windows, IIS, MySQL, PHP) ● Client/server architectuur ● Wat is SQL? april 2012 MySQL en phpMyAdmin voor “beginners”
  • 9.
    Introductie tot MySQL ● Onderdeel van een stack ● Client/server architectuur ● Wat is SQL? april 2012 MySQL en phpMyAdmin voor “beginners”
  • 10.
    Introductie tot MySQL ● Onderdeel van een stack ● Client/server architectuur – MySQL server – MySQL client ● Wat is SQL? april 2012 MySQL en phpMyAdmin voor “beginners”
  • 11.
    MySQL server ● Op dezelfde server localhost ● Op een andere server bij dezelfde hoster mysql12345.hoster.local ● Op een andere server bij andere hoster – TCP-poort 3306 open in firewall – NIET DOEN april 2012 MySQL en phpMyAdmin voor “beginners”
  • 12.
    MySQL client ● Joomla! (PHP “mysql”) ● phpMyAdmin (PHP “mysql”) ● command-line client (SSH) ● MySQL GUI client (SQLWave, HeidiSQL) april 2012 MySQL en phpMyAdmin voor “beginners”
  • 13.
    Introductie tot MySQL ● Onderdeel van een stack ● Client/server architectuur ● Wat is SQL? april 2012 MySQL en phpMyAdmin voor “beginners”
  • 14.
    Introductie tot MySQL ● Onderdeel van een stack ● Client/server architectuur ● Wat is SQL? – Structured Query Language – Aanspreken van relationele database april 2012 MySQL en phpMyAdmin voor “beginners”
  • 15.
    april 2012 MySQL en phpMyAdmin voor “beginners”
  • 16.
    Voorbeeld: Joomla! gebruikers ● jos_users = Lijst van gebruikers ● jos_usergroups = Lijst van groepen ● jos_user_usergroup_map = Koppeling april 2012 MySQL en phpMyAdmin voor “beginners”
  • 17.
    Voorbeeld: Joomla! artikelen ● jos_content = Lijst van artikelen ● jos_categories = Lijst van categorieen ● jos_assets = Authorisatie april 2012 MySQL en phpMyAdmin voor “beginners”
  • 18.
    SQL databases ● MySQL ● SQLite ● Oracle ● Sybase ● Microsoft SQL ● Microsoft Access ● DB2 ● dBase ● PostgreSQL ● ... april 2012 MySQL en phpMyAdmin voor “beginners”
  • 19.
    (duurde dat 10minuten?) april 2012 MySQL en phpMyAdmin voor “beginners”
  • 20.
    Deel 2: phpMyAdmin in de praktijk april 2012 MySQL en phpMyAdmin voor “beginners”
  • 21.
    phpMyAdmin in depraktijk ● Overzicht van phpMyAdmin ● Wijzigen / toevoegen / verwijderen ● SELECT-statement ● Exporteren & importeren april 2012 MySQL en phpMyAdmin voor “beginners”
  • 22.
    phpMyAdmin in depraktijk ● Inloggen op phpMyAdmin ● Wijzigen / toevoegen / verwijderen ● SELECT-statement ● Exporteren & importeren april 2012 MySQL en phpMyAdmin voor “beginners”
  • 23.
    Inloggen op phpMyAdmin ● Direct via een phpMyAdmin link ● Via control panel van hosting omgeving – CPanel, Plesk, DirectAdmin – eigen control panel april 2012 MySQL en phpMyAdmin voor “beginners”
  • 24.
    Inloggen op phpMyAdmin april2012 MySQL en phpMyAdmin voor “beginners”
  • 25.
    april 2012 MySQL en phpMyAdmin voor “beginners”
  • 26.
    april 2012 MySQL en phpMyAdmin voor “beginners”
  • 27.
    april 2012 MySQL en phpMyAdmin voor “beginners”
  • 28.
    april 2012 MySQL en phpMyAdmin voor “beginners”
  • 29.
    april 2012 MySQL en phpMyAdmin voor “beginners”
  • 30.
    phpMyAdmin in depraktijk ● Inloggen op phpMyAdmin ● Wijzigen / toevoegen / verwijderen ● SELECT-statement ● Exporteren & importeren april 2012 MySQL en phpMyAdmin voor “beginners”
  • 31.
    Wijzigen / toevoegen/ verwijderen ● UPDATE = Wijzigen ● INSERT = Toevoegen ● DELETE = Verwijderen april 2012 MySQL en phpMyAdmin voor “beginners”
  • 32.
    phpMyAdmin in depraktijk ● Inloggen op phpMyAdmin ● Wijzigen / toevoegen / verwijderen ● SELECT-statement ● Exporteren & importeren april 2012 MySQL en phpMyAdmin voor “beginners”
  • 33.
    Voorbeelden van SELECTs ● SELECT * FROM jos_users  WHERE id=42; ● SELECT title,alias FROM jos_content  WHERE title = “contacts”; ● SELECT title FROM jos_content  WHERE title LIKE “cont%”; april 2012 MySQL en phpMyAdmin voor “beginners”
  • 34.
    Voorbeeld van JOINSELECT ● SELECT article.*  FROM jos_content AS article LEFT JOIN  jos_categories AS cat ON cat.id = a.catid WHERE cat.id = 3; april 2012 MySQL en phpMyAdmin voor “beginners”
  • 35.
    phpMyAdmin in depraktijk ● Inloggen op phpMyAdmin ● Wijzigen / toevoegen / verwijderen ● SELECT-statement ● Exporteren & importeren april 2012 MySQL en phpMyAdmin voor “beginners”
  • 36.
    Exporteren ● Welke tabellen? – Enkele tabel – Meerdere tabellen – Alle tabellen ● Welke gegevens? – Structuur en/of data april 2012 MySQL en phpMyAdmin voor “beginners”
  • 37.
    (rustig ademen) april 2012 MySQL en phpMyAdmin voor “beginners”
  • 38.
    Deel 3: Geavanceerde onderwerpen april 2012 MySQL en phpMyAdmin voor “beginners”
  • 39.
    Database table prefix ● Gebruik niet “jos_” ● Instelbaar tijdens Joomla! installatie ● Maakt SQL-injection moeilijker april 2012 MySQL en phpMyAdmin voor “beginners”
  • 40.
    User ID 42 ● Standaard “admin” user heeft ID 42 ● Maakt SQL-injection makkelijker ● Wijzigen – Maak nieuwe Super User aan – Verwijder oude Super User ● Vraag: Waarom niet via phpMyAdmin wijzigen? april 2012 MySQL en phpMyAdmin voor “beginners”
  • 41.
    Tabellen leegmaken ● TRUNCATE `jos_content`; ● Wees voorzichtig – Dit kan niet teruggedraaid worden – Relaties worden niet in acht genomen april 2012 MySQL en phpMyAdmin voor “beginners”
  • 42.
    JOINs ● LEFT JOIN ● RIGHT JOIN ● INNER JOIN ● OUTER JOIN april 2012 MySQL en phpMyAdmin voor “beginners”
  • 43.
    UTF-8 en collations ● UTF-8 = De-facto karakterset voor Joomla! – Support voor veel talen (Westers, Arabisch, Hindu, Klingon) ● Collations = Interpretatie van karakterset – utf8_general_ci (standaard) – utf8_polish_ci – latin1 (nooit gebruiken) april 2012 MySQL en phpMyAdmin voor “beginners”
  • 44.
    MyISAM en InnoDB ● MyISAM Storage Engine ● InnoDB Storage Engine april 2012 MySQL en phpMyAdmin voor “beginners”
  • 45.
    In het kort ● Deel 1: Introductie tot MySQL Stack; Client/server; SQL; ● Deel 2: phpMyAdmin in de praktijk INSERT, SELECT, UPDATE, DELETE; Aanmaken van database, database-user; Import / export; ● Deel 3: Geavanceerde onderwerpen JOINs; UTF-8, collations; user-ID 42; MyISAM, InnoDB TRUNCATE; database table prefix april 2012 MySQL en phpMyAdmin voor “beginners”
  • 46.
    (vragen) april 2012 MySQL en phpMyAdmin voor “beginners”