Joomla!: phpMyAdmin voor Beginners (NL)

Post on 17-Jan-2015

805 views 0 download

description

Presentatie over phpMyAdmin voor Joomla! beginners

Transcript of Joomla!: phpMyAdmin voor Beginners (NL)

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma (jisse@yireo.com) - Twitter @yireo

phpMyAdminvoor beginnersphpMyAdmin

voor beginners

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma (jisse@yireo.com) - Twitter @yireo

Ik ben Jisse ReitsmaIk ben Jisse Reitsma

Developer

Ondernemer

Eigenaar van YireoJoomla! & Magento

Extensies & ontwikkeling

Documentatie & blogs

Joomla! templates-book (NL)

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma (jisse@yireo.com) - Twitter @yireo

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

Joomla! site-eigenaar?

Joomla! bouwer?

Joomla! programmeur?

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma (jisse@yireo.com) - Twitter @yireo

Mijn presentatieMijn presentatie

Deel I - MySQL

Deel II - phpMyAdmin

Deel III - Geavanceerd

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

Tweets: @yireo

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma (jisse@yireo.com) - Twitter @yireo

Deel 1:MySQLDeel 1:MySQL

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma (jisse@yireo.com) - Twitter @yireo

Introductie tot MySQLIntroductie tot MySQL

Onderdeel van een stack

Client/server architectuur

Wat is SQL?

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma (jisse@yireo.com) - 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

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma (jisse@yireo.com) - Twitter @yireo

Introductie tot MySQLIntroductie tot MySQL

Onderdeel van een stack

Client/server architectuur

Wat is SQL?

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma (jisse@yireo.com) - 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

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma (jisse@yireo.com) - 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)

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma (jisse@yireo.com) - 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

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma (jisse@yireo.com) - 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

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma (jisse@yireo.com) - Twitter @yireo

SQL databasesSQL databases

MySQL

MariaDB

Oracle

Microsoft SQL

DB2

PostgreSQL

SQLite

Sybase

Microsoft Access

dBase

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma (jisse@yireo.com) - 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”

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma (jisse@yireo.com) - 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

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma (jisse@yireo.com) - 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

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma (jisse@yireo.com) - Twitter @yireo

Deel 2:phpMyAdmin

Deel 2:phpMyAdmin

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma (jisse@yireo.com) - Twitter @yireo

phpMyAdminphpMyAdmin

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

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma (jisse@yireo.com) - Twitter @yireo

Inloggen op phpMyAdminInloggen op phpMyAdmin

Directe weblinkControle panel

CPanel, Plesk, DirectAdminmaatwerk controlepaneel (Byte, MijnDomein)

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma (jisse@yireo.com) - Twitter @yireo

Een database aanmakenEen database aanmaken

Maak een gebruiker aan met corresponderende databaseControleer de 'collation'

utf8_unicode_ci / utf8_general_ci

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma (jisse@yireo.com) - Twitter @yireo

phpMyAdminphpMyAdmin

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

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma (jisse@yireo.com) - Twitter @yireo

Een database-tabel openenEen database-tabel openen

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma (jisse@yireo.com) - 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;

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma (jisse@yireo.com) - Twitter @yireo

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

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma (jisse@yireo.com) - Twitter @yireo

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

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma (jisse@yireo.com) - 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”;

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma (jisse@yireo.com) - 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%”;

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma (jisse@yireo.com) - 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` > “”;

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma (jisse@yireo.com) - Twitter @yireo

phpMyAdminphpMyAdmin

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

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma (jisse@yireo.com) - 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;

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma (jisse@yireo.com) - Twitter @yireo

phpMyAdminphpMyAdmin

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

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma (jisse@yireo.com) - 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)

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma (jisse@yireo.com) - Twitter @yireo

Deel 3:Geavanceerd

Deel 3:Geavanceerd

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma (jisse@yireo.com) - 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)

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma (jisse@yireo.com) - 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)

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma (jisse@yireo.com) - 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

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma (jisse@yireo.com) - Twitter @yireo

JOINsJOINs

LEFT JOINRIGHT JOININNER JOINOUTER JOIN

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma (jisse@yireo.com) - 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;

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma (jisse@yireo.com) - 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)

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma (jisse@yireo.com) - 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)

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma (jisse@yireo.com) - Twitter @yireo

MyISAM & InnoDBMyISAM & InnoDB

MyISAM Storage EngineStandaard op meeste hosting omgeving

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

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma (jisse@yireo.com) - Twitter @yireo

Alternatieven op MySQLAlternatieven op MySQL

PerconaMariaDbNoSQL

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma (jisse@yireo.com) - Twitter @yireo

Database optimalisatieDatabase optimalisatie

Genoeg RAM-geheugenVariabelen

query_cache_sizetable_cache, table_sizeVarious buffersInnoDB stuff (pool size, threading)

Aanpassen & monitoren; aanpassen & monitoren

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma (jisse@yireo.com) - 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

Presentatie “phpMyAdmin voor beginners” - http://slideshare.net/yireoJisse Reitsma (jisse@yireo.com) - Twitter @yireo

tweet @yireotweet @yireo