Joomla!: phpMyAdmin voor Beginners (NL)

45
Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireo Jisse Reitsma ([email protected]) - Twitter @yireo phpMyAdmin voor beginners phpMyAdmin voor beginners

description

Presentatie over phpMyAdmin voor Joomla! beginners

Transcript of Joomla!: phpMyAdmin voor Beginners (NL)

Page 1: Joomla!: phpMyAdmin voor Beginners (NL)

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma ([email protected]) - Twitter @yireo

phpMyAdminvoor beginnersphpMyAdmin

voor beginners

Page 2: Joomla!: phpMyAdmin voor Beginners (NL)

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma ([email protected]) - Twitter @yireo

Ik ben Jisse ReitsmaIk ben Jisse Reitsma

Developer

Ondernemer

Eigenaar van YireoJoomla! & Magento

Extensies & ontwikkeling

Documentatie & blogs

Joomla! templates-book (NL)

Page 3: Joomla!: phpMyAdmin voor Beginners (NL)

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma ([email protected]) - Twitter @yireo

Jij bent een ...Jij bent een ...

Joomla! site-eigenaar?

Joomla! bouwer?

Joomla! programmeur?

Page 4: Joomla!: phpMyAdmin voor Beginners (NL)

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma ([email protected]) - Twitter @yireo

Mijn presentatieMijn presentatie

Deel I - MySQL

Deel II - phpMyAdmin

Deel III - Geavanceerd

Presentatie online: http://slideshare.net/yireo

Tweets: @yireo

Page 5: Joomla!: phpMyAdmin voor Beginners (NL)

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma ([email protected]) - Twitter @yireo

Deel 1:MySQLDeel 1:MySQL

Page 6: Joomla!: phpMyAdmin voor Beginners (NL)

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma ([email protected]) - Twitter @yireo

Introductie tot MySQLIntroductie tot MySQL

Onderdeel van een stack

Client/server architectuur

Wat is SQL?

Page 7: Joomla!: phpMyAdmin voor Beginners (NL)

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma ([email protected]) - Twitter @yireo

StackStack

Joomla! is gebaseerd op PHP, wat draait op een webserver met PHP-support (zoals Apache), en gegevens worden opgeslagen in MySQL.

Voorbeelden van webserver “stacks”Linux + Apache + Mysql + PHP = LAMP

MacOS + Apache + Mysql + PHP = MAMP

Windows + Apache + Mysql + PHP = WAMP

Windows + IIS + Mysql + PHP = WIMP

Page 8: Joomla!: phpMyAdmin voor Beginners (NL)

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma ([email protected]) - Twitter @yireo

Introductie tot MySQLIntroductie tot MySQL

Onderdeel van een stack

Client/server architectuur

Wat is SQL?

Page 9: Joomla!: phpMyAdmin voor Beginners (NL)

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma ([email protected]) - Twitter @yireo

MySQL serverMySQL server

MySQL op dezelfde server als de websitelocalhost

Op een andere server maar bij dezelfde hostermysql12345.hoster.local

Op een andere server bij een andere hosterTCP-poort 3306 open in de firewall

Beveiling wordt hierdoor een probleem

Page 10: Joomla!: phpMyAdmin voor Beginners (NL)

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma ([email protected]) - Twitter @yireo

MySQL clientMySQL client

PHP library (“mysql”, “mysqli”, “PDO Mysql”)

Joomla! (PHP “mysqli”)

phpMyAdmin (PHP “mysqli”)

command-line client (SSH)

MySQL GUI client (Navicat, SQLWave, HeidiSQL)

Page 11: Joomla!: phpMyAdmin voor Beginners (NL)

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma ([email protected]) - Twitter @yireo

Introductie tot MySQLIntroductie tot MySQL

Onderdeel van een stack

Client/server architectuur

Wat is SQL?Structured Query Language

Een manier om tegen een relationele database te praten

Page 12: Joomla!: phpMyAdmin voor Beginners (NL)

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma ([email protected]) - Twitter @yireo

Structured Query LanguageStructured Query Language

Een algemene taal om tegen verschillende databases te praten:

SELECT field FROM table

DELETE FROM table WHERE id = 2

INSERT INTO table SET id = 2, value = “voorbeeld”

... helaas zijn er nog steeds verschillende “dialecten” binnen SQL

Page 13: Joomla!: phpMyAdmin voor Beginners (NL)

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma ([email protected]) - Twitter @yireo

SQL databasesSQL databases

MySQL

MariaDB

Oracle

Microsoft SQL

DB2

PostgreSQL

SQLite

Sybase

Microsoft Access

dBase

Page 14: Joomla!: phpMyAdmin voor Beginners (NL)

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma ([email protected]) - Twitter @yireo

Relationele databaseRelationele database

Gegevens opslaan in meerdere database-tabellen

Normalisatie“Techniek bij ontwerpen van een database met als doel het vermijden van meervoudige vastlegging van dezelfde data”

Page 15: Joomla!: phpMyAdmin voor Beginners (NL)

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma ([email protected]) - Twitter @yireo

Voorbeeld 1: Joomla! gebruikersVoorbeeld 1: Joomla! gebruikers

jos_users Lijst van gebruikers

jos_usergroups Lijst van gebruikersgroepen

jos_user_usergroup_map Koppeling tussen gebruikers en gebruikersgroepen

Page 16: Joomla!: phpMyAdmin voor Beginners (NL)

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma ([email protected]) - Twitter @yireo

Voorbeeld 2: Joomla! artikelenVoorbeeld 2: Joomla! artikelen

jos_content Lijst van artikelen (met een referentie naar catid & asset_id)

jos_categories Lijst van categorieen

jos_assets Lijst van authorisaties

Page 17: Joomla!: phpMyAdmin voor Beginners (NL)

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma ([email protected]) - Twitter @yireo

Deel 2:phpMyAdmin

Deel 2:phpMyAdmin

Page 18: Joomla!: phpMyAdmin voor Beginners (NL)

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma ([email protected]) - Twitter @yireo

phpMyAdminphpMyAdmin

Overzicht van phpMyAdminSELECT-statementAlgemene taken (edit, add, delete)Import & export

Page 19: Joomla!: phpMyAdmin voor Beginners (NL)

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma ([email protected]) - Twitter @yireo

Inloggen op phpMyAdminInloggen op phpMyAdmin

Directe weblinkControle panel

CPanel, Plesk, DirectAdminmaatwerk controlepaneel (Byte, MijnDomein)

Page 20: Joomla!: phpMyAdmin voor Beginners (NL)

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma ([email protected]) - Twitter @yireo

Een database aanmakenEen database aanmaken

Maak een gebruiker aan met corresponderende databaseControleer de 'collation'

utf8_unicode_ci / utf8_general_ci

Page 21: Joomla!: phpMyAdmin voor Beginners (NL)

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma ([email protected]) - Twitter @yireo

phpMyAdminphpMyAdmin

Overzicht van phpMyAdminSELECT-statementAlgemene taken (edit, add, delete)Import & export

Page 22: Joomla!: phpMyAdmin voor Beginners (NL)

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma ([email protected]) - Twitter @yireo

Een database-tabel openenEen database-tabel openen

Page 23: Joomla!: phpMyAdmin voor Beginners (NL)

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma ([email protected]) - Twitter @yireo

SELECT (1/3)SELECT (1/3)

SELECT * FROM jos_users;

SELECT title,alias FROM jos_content;

SELECT id,username FROM jos_users;

SELECT name,type,enabled FROM jos_extensions;

Page 24: Joomla!: phpMyAdmin voor Beginners (NL)

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma ([email protected]) - Twitter @yireo

SELECT (2/3)SELECT (2/3)

Page 25: Joomla!: phpMyAdmin voor Beginners (NL)

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma ([email protected]) - Twitter @yireo

SELECT (3/3)SELECT (3/3)

Page 26: Joomla!: phpMyAdmin voor Beginners (NL)

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma ([email protected]) - Twitter @yireo

WHEREWHERE

SELECT * FROM x WHERE id = 42;

SELECT * FROM x WHERE id IN (42,43,44,45);

SELECT * FROM x WHERE title = “Example 1”;

SELECT * FROM x WHERE title LIKE “Example%”;

SELECT * FROM x WHERE title LIKE “%example%”;

SELECT * FROM x WHERE created_time > “2012­02”;

Page 27: Joomla!: phpMyAdmin voor Beginners (NL)

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma ([email protected]) - Twitter @yireo

Quotes (1/2)Quotes (1/2)

Fout:SELECT from FROM select WHERE where LIKE “a%”;

Correct:SELECT `from` FROM `select` WHERE `where` LIKE “a%”;

Page 28: Joomla!: phpMyAdmin voor Beginners (NL)

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma ([email protected]) - Twitter @yireo

Quotes (2/2)Quotes (2/2)

SELECT `id`,`title`,`description` FROM `jos_content` WHERE `title` LIKE “example%” AND `id` IN (25,26,27,28,29,30) AND `created_time` > “”;

Page 29: Joomla!: phpMyAdmin voor Beginners (NL)

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma ([email protected]) - Twitter @yireo

phpMyAdminphpMyAdmin

Overzicht van phpMyAdminSELECT-statementAlgemene taken (edit, add, delete)Import & export

Page 30: Joomla!: phpMyAdmin voor Beginners (NL)

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma ([email protected]) - Twitter @yireo

Update, insert, deleteUpdate, insert, deleteUPDATE jos_content 

SET `title`=”Hello World”WHERE `title`=”Hello world”;

INSERT INTO jos_content VALUES `title`=”x”;

DELETE FROM jos_contentWHERE `id`=2;

Page 31: Joomla!: phpMyAdmin voor Beginners (NL)

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma ([email protected]) - Twitter @yireo

phpMyAdminphpMyAdmin

Overzicht van phpMyAdminSELECT-statementAlgemene taken (edit, add, delete)Import & export

Page 32: Joomla!: phpMyAdmin voor Beginners (NL)

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma ([email protected]) - Twitter @yireo

ExportExport

Welke database-tabellen?Enkele database-tabel?Meerdere database-tabel?Alle database-tabellen? (ofwel de hele database)

Welke gegevens?Structuur en/of data

.... of gebruik “Akeeba Backup” (akeebabackup.com)

Page 33: Joomla!: phpMyAdmin voor Beginners (NL)

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma ([email protected]) - Twitter @yireo

Deel 3:Geavanceerd

Deel 3:Geavanceerd

Page 34: Joomla!: phpMyAdmin voor Beginners (NL)

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma ([email protected]) - Twitter @yireo

Database table prefixDatabase table prefix

Instelbaar tijdens Joomla! installatieMaakt hacks moeilijker (SQL-injection)

Kies niet voor “jos_”Kies niet voor “verylongstring_” (ivm tabel-naam limiet van 64)

Page 35: Joomla!: phpMyAdmin voor Beginners (NL)

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma ([email protected]) - Twitter @yireo

User ID 42User ID 42

Standaard “admin” user heeft een ID 42 (Joomla! 2.5 en ouder)Maakt hacks makkelijker (SQL-injection)

Procedure om aan te passenMaak een nieuwe Super User aan en login als die userVerwijder de oude Super UserUpdate de nieuwe Super User met de oude details

... of gebruik “Akeeba AdminTools” (akeebabackup.com)

Page 36: Joomla!: phpMyAdmin voor Beginners (NL)

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma ([email protected]) - Twitter @yireo

Opschonen van database-tabellenOpschonen van database-tabellen

TRUNCATE `jos_content`;Wees hier voorzichtbaar mee:

Zorg voor een backupEr wordt niet gecontroleerd of de relaties met andere tabellen kloppen

Page 37: Joomla!: phpMyAdmin voor Beginners (NL)

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma ([email protected]) - Twitter @yireo

JOINsJOINs

LEFT JOINRIGHT JOININNER JOINOUTER JOIN

Page 38: Joomla!: phpMyAdmin voor Beginners (NL)

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma ([email protected]) - Twitter @yireo

Example JOINExample JOINSELECT article.*, cat.title AS cat_title 

FROM jos_content AS articleLEFT JOIN  jos_categories AS catON cat.id = a.catidWHERE cat.id = 3;

Page 39: Joomla!: phpMyAdmin voor Beginners (NL)

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma ([email protected]) - Twitter @yireo

UTF-8 & collationsUTF-8 & collations

UTF-8 = Standaard karakterset voor Joomla!Support voor Westerse talen, Arabisch, Sanskrit, Klingon

Collations = Interpretatie van karakterset m.b.t. opslagmethodeutf8_general_ci (standaard)

utf8_unicode_ci (aanbevolen)utf8_polish_cilatin1 (niet gebruiken)

Page 40: Joomla!: phpMyAdmin voor Beginners (NL)

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma ([email protected]) - Twitter @yireo

Verkeerde collationVerkeerde collation

Als een Joomla! database geen gebruik maakt van UTF-8 collaties, zorg ervoor dat dit wel aan komt te staan (per database, tabel en veld)

– Exporteer de database naar een SQL-file– Verander overal “charset=latin1 “ in “charset=utf8”– Importeer de SQL-file

... of gebruik “Phoca Changing Collation Tool” (phoca.cz)

Page 41: Joomla!: phpMyAdmin voor Beginners (NL)

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma ([email protected]) - Twitter @yireo

MyISAM & InnoDBMyISAM & InnoDB

MyISAM Storage EngineStandaard op meeste hosting omgeving

InnoDB Storage EngineMeer geavanceerd, meer tuning optiesMaar niet perse nodig voor Joomla!

Page 42: Joomla!: phpMyAdmin voor Beginners (NL)

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma ([email protected]) - Twitter @yireo

Alternatieven op MySQLAlternatieven op MySQL

PerconaMariaDbNoSQL

Page 43: Joomla!: phpMyAdmin voor Beginners (NL)

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma ([email protected]) - Twitter @yireo

Database optimalisatieDatabase optimalisatie

Genoeg RAM-geheugenVariabelen

query_cache_sizetable_cache, table_sizeVarious buffersInnoDB stuff (pool size, threading)

Aanpassen & monitoren; aanpassen & monitoren

Page 44: Joomla!: phpMyAdmin voor Beginners (NL)

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma ([email protected]) - Twitter @yireo

Mijn presentatieMijn presentatie

Deel I - MySQLStack; Client/server; SQL

Deel II - phpMyAdminINSERT, SELECT, UPDATE, DELETE;

Aanmaken van database, database-user; Import / export;

Deel III - GeavanceerdJOINs; UTF-8, collations; user-ID 42; MyISAM, InnoDB

TRUNCATE; database table prefix

Page 45: Joomla!: phpMyAdmin voor Beginners (NL)

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma ([email protected]) - Twitter @yireo

tweet @yireotweet @yireo