HUOM! Voit itse lisätä ja muuttaa sisältöä muokkaa-painikkeiden avulla

 Olet itse vastuussa tämän teoksen käytöstä aiheutuvista vahingoista Lue lisää.

PHP ja MySQL

Kohteesta Wikikko - kansan taitopankki
Loikkaa: valikkoon, hakuun

Yleistä[muokkaa]

Tämä sivu käsittelee MySQL-tietokannan käsittelyä ja erityisesti PHP-ohjelmointikielen avulla. Ilmainen MySQL-tietokanta soveltuu hyvin pienten ja suurempienkin nettisivustojen pyörittämiseen. Tietokantaa tarvitsevat esimerkiski Drupal, CMS Made Simple, Mediawiki ja Moodle.

Wikikon PHP-pääsivu
MySQL virallinen kotisivu

MySQL asennus[muokkaa]

  • Päivitettäessä Mavericks Yosemiteen, riittää kun kytket sen vain päälle uudestaan.
  • Asennetun mysql version tarkistus komentoriviltä: /usr/local/mysql/bin/mysql -v tai mysql --version
    • Pääte-ohjelma siirtyy interaktiiviseen moodiin, josta pääsee pois ainakin ctrl-c tai q

Linkkejä

Python ja MySQL

El Capitan[muokkaa]

  • Pikavinkkejä
    • Polku: /Users/käyttäjänimesi/Sites/ (Kts. pwd -komennolla pääteohjemalla kun olet Sites hakemistossa). Tätä voi tarvita esm. Smarty:n kanssa kun tavoittelet sitä esm. Sites -hakemistossa.

Alkuperäinen ohje: https://coolestguidesontheplanet.com/get-apache-mysql-php-and-phpmyadmin-working-on-osx-10-11-el-capitan/

  1. Lataa sivulta http://dev.mysql.com/downloads/mysql/ paketti mysql-5.7.17-macos10.12-x86_64.dmg. Kirjautuminen ei ole pakollinen, valitse No thanks, just start my download.
  2. Asenna paketti
    1. Ota tilapäinen salasana talteen!
  3. Käynnistäminen Järjestelmäasetuksista johon ilmestyy oma paneeli tai Pääte-ohjelmalla: sudo /usr/local/mysql/support-files/mysql.server start

KESKEN

Yosemite[muokkaa]

  • Pikavinkkejä
    • Polku: /Users/käyttäjänimesi/Sites/ (Kts. pwd -komennolla pääteohjemalla kun olet Sites hakemistossa). Tätä voi tarvita esm. Smarty:n kanssa kun tavoittelet sitä esm. Sites -hakemistossa.

Alkuperäinen ohje: http://coolestguidesontheplanet.com/get-apache-mysql-php-phpmyadmin-working-osx-10-10-yosemite/

  1. Lataa sivulta http://dev.mysql.com/downloads/mysql/ paketti Mac OS X 10.9 (x86, 64-bit), DMG Archive. Kirjautumista ei vaadita, valitse No thanks, just start my download.
  2. Asenna paketti
  3. Käynnistäminen Järjestelmäasetuksista johon ilmestyy oma paneeli tai Pääte-ohjelmalla: sudo /usr/local/mysql/support-files/mysql.server start
  4. Muutetaan polku yksinkertaisemmaksi lisäämällä .bash_profile -tiedostoosi ohjaus:
cd ; nano .bash_profile
export PATH="/usr/local/mysql/bin:$PATH"
ctrl-x ja sitten y
source ~/.bash_profile
  1. Testataan mysql -v
  2. Asennetaan juurisalasana tietokannalle komennolla
    1. /usr/local/mysql/bin/mysqladmin -u root password 'salasanatähän'
  3. Korjataan 2002 MySQL Socket error
    1. sudo mkdir /var/mysql
    2. sudo ln -s /tmp/mysql.sock /var/mysql/mysql.sock

Virheilmoituksia ja ongelmia[muokkaa]

  • ERROR 1064 (42000) at line 19: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'TYPE=MyISAM' at line x
    • Saattaa viitata siihen että yrität tuoda tauluja MySQL ohjelmistoon, joka on uudempi kuin tauluista ottamasi kopio
    • Korvaa tekstieditorilla kaikki taulun TYPE=MyISAM kohdat ENGINE=MyISAM kohdiksi

MySQL ei käynnisty tietokoneen käynnistyessä[muokkaa]

Kts. http://coolestguidesontheplanet.com/get-apache-mysql-php-phpmyadmin-working-osx-10-10-yosemite/

Mavericks[muokkaa]

Paljon käytetty MySQL ei ole oletuksena Mavericks:ssa. Huomaa että jos käytät Pythonin kanssa MySQL-tietokantaa se ei välttämättä toimi kuin 32-bittisen version kanssa (12/2013).

  • Lataa uusin 32 tai 64-bittinen DMG-versio MySQL-sivustosta. Alareunassa on vaihtoehto No thanks, just start my download. 10.7 (joulu 2013).
  • Asenna kaikki kolme eli mysql..pkg, MySQLStart..pkg ja MySQL.prefPane
    • klikkaa hiiren oikeaa painiketta .pkg-tiedoston päällä ja valitse Avaa, jolla ohitat Applen Gatekeeper -toiminnon.
  • Järjestelmäasetukset valikkoon tulee uusi kohta nimeltä MySQL josta tietokanta kytketään päälle ja pois.
    • Pääte-ohjelmassa
päälle kytkeminen: sudo /usr/local/mysql/support-files/mysql.server start 
versiotieto: /usr/local/mysql/bin/mysql -v
versiotiedosta pääset pois \q komennolla eli shift-alt-7 ja q ja enter
  • Jotta em. /usr/local.. polkua ei tarvitse joka kerta antaa Pääte-ohjelmassa, anna seuravat komennot Pääte-ohjelmassa
Avaa editori komennolla:   cd ; nano .bash_profile 
Lisää editoriin rivi:   export PATH="/usr/local/mysql/bin:$PATH"
Poistu editorista ctrl-x, paina y ja enter
Aktivoi muutos:   source ~/.bash_profile
  • Aseta MySQL-tietokannalle oma juuri-käyttäjän salasana (root password).
/usr/local/mysql/bin/mysqladmin -u root password 'salasanatahan'
  • Korjaa 2002 MySQL Socket virhe
Anna komento ja pyydettäessä Mac-pääkäyttäjätilisi ylläpitosalasana:   sudo mkdir /var/mysql
Anna komento:   sudo ln -s /tmp/mysql.sock /var/mysql/mysql.sock
  • Palomuuria ei ole syytä avata mysqld:lle, koska ohjelmat yleensä suoraan itse luovat yhteyden, mutta käyttäjät (asiakkaat) eivät saisi muodostaa suoraa yhteyttä.
    • Järjestelmäasetukset > Suojaus ja yksityisyys > Palomuurivalinnat... > mysqld aseta Estä saapuvat yhteydet > OK

MySQL asennuksen poistaminen[muokkaa]

Ilmeisesti onnistuu tällä:

  • Ota varmuuskopiot tietokannoista
  • Pysäytä tietokantapalvelin
  • sudo rm /usr/local/mysql
  • sudo rm -rf /usr/local/mysql*
  • sudo rm -rf /Library/StartupItems/MySQLCOM
  • sudo rm -rf /Library/PreferencePanes/My*
  • sudo vi /etc/hostconfig ja poista rivi MYSQLCOM=-NO-
  • rm -rf ~/Library/PreferencePanes/My*
  • sudo rm -rf /Library/Receipts/mysql*
  • sudo rm -rf /Library/Receipts/MySQL*
  • sudo rm -rf /private/var/db/receipts/*mysql*

Missä MySQL tietokanta sijaitsee[muokkaa]

Suorita esimerkiksi phpMyAdmin-ohjelmassa komento SELECT @@datadir, @@innodb_data_home_dir

  • esimerkiksi OS X:ssa tietokannat sijaitsevat yleensä hakemistossa /usr/local/mysql/data/tietokannannimi

MySQL Workbench asennus[muokkaa]

Tietokannan muokkaamiseen voit valita esimerkiksi MySQL Workbench tai phpMyAdmin -ohjelman tai kummatkin.

  • Yosemite
    • Asenna dmg-tidostona kotisivuilta ladattuna
  • Jos et saa muodostettua yhteyttä tietokantaan toimi seuraavasti:
  1. Asensithan ensin MySQL tietokannan käyttökuntoon ja sitten vasta Workbench:in
  2. Asensithan MySQL tietokannan asennuspaketista MySQL Server, preference pane ja startup
  3. Tarkista Järjestelmäasetuspaneelista että MySQL on käynnissä! Jos asetuspaneelia ei näy, ei Workbench toimi!
  4. Anna pääte-ohjelmassa komento mysql > SHOW GLOBAL VARIABLES LIKE 'PORT';
    1. tarkista mitä porttia MySQL käyttää, todennäköisesti 3307 eikä 3306
    2. löytyy myös Macintosh HD > Kirjasto > LaunchDaemons > com.oracle.oss.mysql.mysqld.plist > --port=
  5. Lisää UUSI yhteys
  6. Coonection Name: localhost > Connection Method: Standard (TCP/IP) > Hostname: localhost > Port: 3307 > Username: root
  7. Paina nyt Test Connection ja lisää salasana root -tunnukselle ja VALITSE AVAINNIPPUUN TALLENTAMINEN
    1. tarvittaessa paina Clear, jotta kysyy salasanaa tai aloita alusta uudella yhteydellä
    2. jos root ei ole tietokantasi käyttäjätunnus, käytä sitä mikä on ja sen salasanaa

phpMyAdmin asennus[muokkaa]

Katso Phpmyadmin

Tietokanta teoriaa[muokkaa]

  • Taulukäsittelijät. Tällainen on esimerkiksi InnoDB. Eri taulukäsittelijävaihtoehdoista tulisi valita se joka parhaiten soveltuu tarpeeseen. MySQL voi käyttää samanaikaisesti tietokannassa eri käsittelijöitä eri tauluille.
  • Select-kyselyt ja tulokset ovat välimuistissa, joten aina ei tietokannasta välttämättä haeta. Välimuistia tyhjennetään ja täydennetään automaattisesti.

Tietokannan luominen[muokkaa]

1. Luodaan tietokanta
2. Luodaan tietokantaan taulu(t) (esim. osoitetiedot) ja samassa komennossa tauluun kentät (sarakkeet, esim. Etunimi, Sukunimi).
3. Lisätään tauluihin tietueet (rivit, esim. Matti, Virtanen)

Sivun alussa on neuvottu tietokannan luominen phpMyAdmin-ohjelman avulla ja myöhemmin suoraan PHP-koodista.

Tietokannan luominen ja poistaminen[muokkaa]

Katso sivulta Python ja MySQL#Tietokannan luominen ja poistaminen

Taulun luonti[muokkaa]

  • Valitse tietokanta ja sitten välilehti SQL
  • Kirjoita seuraava ja paina Siirry
  • Lisätään seuraavassa taulu nimeltä taulunimi ja siihen kentät numerokentta, tekstikentta ja liukuluku. int(10) tarkoittaa kokonaislukua jonka maksimipituus on 10 merkkiä.
CREATE TABLE taulunimi (numerokentta int(10) NOT NULL, tekstikentta varchar(50), liukuluku float, PRIMARY KEY(numerokentta));

TAI

  • Valitse tietokanta ja Rakenne -välilehti
  • Anna taululle nimi ja kenttien määrä ja paina Siirry. Anna nimi ja täydennä ominaisuudet:
  • Tyyppi. Minkälaista tietoa kenttään tallennetaan.
  • Pituus. Kentän pituus.
  • Oletusarvo. Mahdollinen kentän oletusarvo
  • Aakkosjärjestys (collation): kts. yllä
  • Attribuutit
    • BINARY - the collation for the field will be binary, for example utf8_bin;
    • UNSIGNED - the field numeric values will be positive or 0;
    • UNSIGNED ZEROFILL - the field numeric values will be positive or 0 and leading zeros will be added to a number;
    • ON UPDATE CURRENT_TIMESTAMP - the value for a data type field has the current timestamp as its default value, and is automatically updated;
  • Tyhjä. Voiko arvo olla nolla
  • Indeksi
  • Auto_Increment
  • Kommentit. Vapaamuotoinen teksti
  • Taulun kommentit. Vapaamuotoinen teksti
  • Tallennusmoottori. Usein InnodDB Miksi?
  • Aakkosjärjestys.
  • Partition-määritelmä

Tietueen (rivin) lisääminen tauluun[muokkaa]

Tällä sivulla käytetään seuraavanlaista tietokantaa:

Tietokantanimi: tietokannannimi ja taulu: taulunimi

Numerokentta Tekstikentta Liukuluku
rivi1 (tietue) 123456789 Teksti1 10.00
rivi2 23456789 Teksti2 20.00
rivi3 3456789 Teksti3 30.00
  • Valitse taulu ja sitten välilehti SQL
  • Kirjoita seuraava ja paina Siirry
  • Lisääminen tapahtuu INSERT -komennolla ja jokaiselle kentälle on annettava arvo.
  • Lisätään seuraavassa tauluun nimeltä taulunimi rivit (tietueet)
INSERT INTO taulunimi VALUES(123456789,"Teksti1",10.00);
INSERT INTO taulunimi VALUES(23456789,"Teksti2",20.00);
INSERT INTO taulunimi VALUES(3456789,"Teksti3",30.00);

TAI

  • Valitse taulu ja sitten välilehti Lisää rivi ja syötä arvot.

Perusjärjestys[muokkaa]

1. Luodaan yhteys tietokantapalveluun
2. Luodaan yhteys tietokantaan
3. Luetaan / kirjoitetaan / muutetaan / poistetaan tietoa tauluista
4. Suljetaan yhteys

Yhteys tietokantapalvelimeen PHP:llä[muokkaa]

Ensimmäisenä muodostetaan yhteys tietokantapalvelimeen.

  • TCP-yhteys muodostetaan MySQL-palvelimelle seuraavalla funktiolla. Jos yhteys ei onnistu, tulee virheilmoitus, muutoin ei tule mitään näkyviin.
  • Porttinumero on oletuksena 3306 ja tarvittaessa muu porttinumero annetaan muodossa localhost:porttinumero
  • Yhteys katkaistaan mysql_close();
  • Käyttäjätunnus ja salasana ovat PALVELIMEN käyttäjätunnus ja salasana. localhost -kohtaan muutetaan tarvittaessa palvelimen osoite, muutoin localhost yhdistää sille palvelimelle, jossa php-ohjelma suoritetaan. Omalla palvelimella pelkästää mysql_connect(); saattaa riittää.
  • die -komennolla tulostetaan virhe ja suljetaan xhtml-koodi. Huomaa että tällöin mysql_connect -rivin lopussa ei saa olla puolipistettä koska rivi on vain selkeyden vuoksi jaettu kahdelle riville tässä. Jos die-komentoa ei käytetä, silloin ; -merkki tietysti pitää rivin lopussa olla. Virheilmoitusta kannattaa käyttää aina tietokantaan kohdistuvien käskyjen jälkeen, jolloin tiedetään jos virheitä tapahtuu. Virheriville voi vaikka suomeksi määritellä minkä toiminnon jälkeen virhe on tapahtunut.
    $tietokanta = mysql_connect("localhost", "käyttäjätunnus", "salasana")
        or die("Virhe: ".mysql_error()"</body></html>"); // Näyttää viimeisimmän tietokannan virheilmoituksen.
  • Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in ... .php on line -virheilmoitus voi viitata siihen että et ole antanut käyytäjätunnusta ja salasanaa yhteyden avaamisessa. Vaikka samalla palvelimella pelkkä connect() tai "localhost" pitäisi kyllä riittää.

Yhteys tietokantaan[muokkaa]

Toiseksi muodostetaan yhteys haluttuun tietokantaan. Jos tietokantakahvaa ei määritellä, muodostetaan viimeksi avattua yhteyttä. Jos yhteys ei onnistu, tulee virheilmoitus, muutoin ei tule mitään näkyviin.

    mysql_select_db ("tietokannannimi", $tietokanta );

Kysely tietokannasta ja yleisesti[muokkaa]

  • Kyselyssä tietokannasta haetaan rivejä määritellyillä ehdoilla. Tämän jälkeen haettua joukkoa voidaan käsitellä tarpeen mukaan. Tämä ei siis tallenna tai vahingoita tietokantaa mitenkään. Tietokannasta ei kannata hakea kuin se mitä tarvitaan eli turha hakea koko taulukkoa jos tarvitaan yksi rivi.
  • PHP:llä on oma komentonsa mysql_query tietokannan kanssa kommunikointiin. Itse tietokannalle annetaan komennot SQL-kielellä eli SELECT, UPDATE jne. Haettaessa tietoa muodostetaan uusi relaatio, joka voi sisältää tietoa useasta taulusta ja taulujen eri kentistä. Kentän voi ajatella taulukon sarakkeiksi ja tallennetun tiedon riveiksi. Erilainen tieto kannattaa sijoittaa eri tauluihin ja toisiinsa kuuluva tieto merkitä kuhunkin tauluun esimerkiksi tunnistenumeron avulla. Esimerkiksi osoitetiedot yhdessä taulukossa ja verkkokauppatilaukset toisessa, kummassakin taulussa yksi kenttä on asiakasnumero. Tästä tarkemmin myöhemmin sivun alaosassa kohdassa Tietokannan perusteet.
  • Jos tietokantakahvaa ei määritellä, muodostetaan viimeksi avattua yhteyttä.
  • Rivit eivät välttämättä ole tietokannassa siinä järjestyksessä kuin ne syötetään. Siksi ne on sieltä luettaessa tarvittaessa järjestettävä.
  • Esimerkistä nähdään kuinka haku tehdään mysql_query funktion avulla. Haku muodostaa joukon ja sitä joudutaan käsittelemään mysql-funktiolla.
    // Haetaan taulusta nimeltä taulunimi sen kenttä1:n kaikki rivit (*) eli arvot
    $haku1 = mysql_query("SELECT * FROM taulunimi WHERE kentta1", $tietokanta);
    
    // Tulostetaan silmukan avulla rivi riviltä kunnes False. Huomaa että print käyttää taulun kenttää
    while($muuttuja1 = mysql_fetch_array($haku1)){
        print ($muuttuja1['numerokentta']."<br/>");
    }
    mysql_close($tietokanta);
    // Sijoitetaan SQL-komento muuttujaan
    $kysely = "SELECT * FROM taulunimi";
    $haku1 = mysql_query($kysely, $tietokanta);
    // tulostetaan numerokentästä toinen rivi mysql_result -funktiolla. 
    // laskenta alkaa nollasta ja numerokentta voidaan korvata kentän numerolla.
    print mysql_result($haku1, 1, "numerokentta");

SELECT[muokkaa]

Järjestys on oltava: SELECT DISTINCT FROM WHERE GROUP BY ORDER BY LIMIT
* on jokerimerkki eli tarkoittaa kaikkia
'teksti' merkkijono laitetaan heittomerkkeihin
= < > AND OR jne. operaattorit
funktiot
// Haetaan kaikki kentät (sarakkeet) ja rivit (tietueet) eli koko taulu
$haku1 = mysql_query("SELECT * FROM taulunimi", $tietokanta);

// Haetaan kaikki rivit joihin sisältyy kentta1 ja kentta2
$haku1 = mysql_query("SELECT kentta1, kentta2 FROM taulunimi", $tietokanta);

// Haetaan kaikki rivit joissa kentta1 arvo on teksti
$haku1 = mysql_query("SELECT * FROM taulunimi WHERE kentta1 LIKE 'teksti'", $tietokanta);

// Haetaan koko taulu ja järjestetään se kentta1 mukaan suurimmasta pienimpään
$haku1 = mysql_query("SELECT * FROM taulunimi ORDER BY kentta1 DESC", $tietokanta);

// Haetaan kentta1 kaikki rivit ja järjestetään ne pienimmästä suurimpaan kentta3 mukaan
$haku1 = mysql_query("SELECT * FROM taulunimi WHERE kentta1 ORDER BY kentta3", $tietokanta);
 
// Haetaan kaikki rivit joissa kentta1 arvo 10 ja kentta2 arvo suurempi kuin 50
$haku1 = mysql_query("SELECT * FROM taulunimi WHERE kentta1 = 10 AND kentta2 > 50", $tietokanta);

// Haetaan 5 ensimmäistä riviä
$haku1 = mysql_query("SELECT * FROM taulunimi LIMIT 5", $tietokanta);

// Haetaan kentta1 rivit 6 7 ja 8
$haku1 = mysql_query("SELECT * FROM taulunimi WHERE kentta1 LIMIT 5,3", $tietokanta);

// Haetaan rivien määrä
$haku1 = mysql_query("SELECT COUNT(*) FROM taulunimi", $tietokanta);

// Haetaan kentta1 rivien erilaiset arvot
$haku1 = mysql_query("SELECT DISTINCT kentta1 FROM taulunimi", $tietokanta);

// Haetaan kentta1 rivien 5 ensimmäistä merkkiä
$haku1 = mysql_query("SELECT LEFT(kentta1, 5) FROM taulunimi", $tietokanta);

// Haetaan kentta1 suurin arvo
$haku1 = mysql_query("SELECT MAX(kentta1) FROM taulunimi", $tietokanta);

// Haetaan kentta1 arvot ja kerrotaan kahdella ja tulostetaan kolmella desimaalilla
$haku1 = mysql_query("SELECT ROUND(kentta1 * 2, 3) FROM taulunimi", $tietokanta);

// Haetaan kentta1 yhteenlaskettu arvo
$haku1 = mysql_query("SELECT SUM(kentta1) FROM taulunimi", $tietokanta);

Rivin lisääminen tauluun[muokkaa]

  • SQL -käsky INSERT muuttaa tietokantaa! Jos yrität ajaa kahteen kertaan saman syötteen, saat todennäköisesti virheilmoituksen.
    // Lisätään arvot 10, Teksti1 ja viimeiseen kenttään tyhjä
    mysql_query("INSERT INTO taulunimi VALUES(10, 'Teksti1', null)")
  • Rivin lisääminen suoraan nettisivun lomakkeesta tietokantaan:
    // Esimerkki 1
    $tietue = <<<MERKKI1
    INSERT INTO taulunimi VALUES(
    "{$_POST['lomakekenttanimi1']}", 
    "{$_POST['lomakekenttanimi2']}";
MERKKI1;

    // Esimerkki 2
    // INSERT INTO taulunimi VALUES ("arvo1", "arvo2");
    $tietue = 'INSERT INTO taulunimi VALUES(' .
    "\"{$_POST['lomakenttanimi1']}\", " .
    "\"{$_POST['lomakekenttanimi2']}\");";

    // Viedään edellinen lauseke tietokantaan
    mysql_query($tietue);

INSERT[muokkaa]

// Lisätään kenttiin arvoja samassa järjestyksessä
mysql_query("INSERT INTO taulunimi(kentta1, kentta2, kentta3) VALUES(10, 'Teksti1', null)")

Muuttaminen[muokkaa]

UPDATE[muokkaa]

// Vaihdetaan kentta1 arvoksi 50 kaikkiin riveihin joissa kentta2 arvona on Teksti1
mysql_query("UPDATE taulunimi SET kentta1 = 50 WHERE kentta2 = 'Teksti1'")

// Lisätään kentta1 arvoa yhdella kaikilla riveillä joissa kentta2 arvona on Teksti1
mysql_query("UPDATE taulunimi SET kentta1 = kentta1 +1 WHERE kentta2 = 'Teksti1'")

Rivin poistaminen taulusta[muokkaa]

DELETE[muokkaa]

// Poistetaan rivit, joiden kentta1 arvo on Teksti1 mysql_query("DELETE FROM taulunimi WHERE kentta1 = 'Teksti1'")

Tietokannan perusteet[muokkaa]

kirjoitetaan jossain vaiheessa

Tietokannan rakenne[muokkaa]

MySQL varmuuskopiointi[muokkaa]

Katso varmuuskopioinnin ajastus sivulta Cron.

Komennon valinnat

MediaWiki[muokkaa]

  • tietokanta sisältää sivut, käyttäjät, asetukset jne. Tiedostojärjestelmä sisältää kuvat, ulkoasut, laajennukset jne.
  • Vaihtoehtona MediaWikissä on kopiointi suoraan sivustosta viemällä sivut xml-muodossa. Katso ohje sivulta MediaWiki.
  • $wgReadOnly = 'Varmuuskopioidaan tietokantaa. Yritä uudestaan hetken kuluttua.'; asetettuna LocalSettings.php -tiedostoon estää tietokantaan kirjoittamisen varmuuskopioinnin aikana.
  • MediaWikissä suositellaan käyttämään binary merkistöä, joka sallii suuremmat merkkimäärät. Tietokannan merkistö saattaa olla siis binary joka tarkoittaa että varmuuskopiossa ääkköset näkyvät oudosti. Mysqldump käyttää oletuksena utf8, vanhat versiot käyttivät latin1. Näet tietokannan käyttämän koodauksen LocalSettings.php -tiedostosta kohdasta $wgDBTableOptions DEFAULT CHARSET
mysqldump --user=käyttäjätunnus --password=salasana tietokannannimi > varmuuskopio.sql
mysqldump -ukäyttäjätunnus -psalasana tietokannannimi > | gzip > ~/osoite/varmuuskopio.sql.gz
mysqldump -ukäyttäjätunnus -psalasana --xml tietokannannimi > ~/osoite/varmuuskopio.xml
mysqldump -ukäyttäjätunnus -psalasana --xml tietokannannimi | gzip > ~/osoite/varmuuskopio.xml.gz
mysqldump -ukäyttäjätunnus -psalasana --default-character-set=utf8 --xml tietokannannimi > ~/osoite/varmuuskopio.xml
nice -n 19 mysqldump -ukäyttäjätunnus --password=salasana tietokannannimi -c | nice -n 19 gzip -9 > ~/osoite/mediawiki-tietokkanannimi-$(date '+%Y%m%d').sql.gz
Ohje
http://www.mediawiki.org/wiki/User:Flominator/Backup_MW

XML varmuuskopio[muokkaa]

  • XML-varmuuskopio sisältää MediaWikin sisällön, mutta ei käyttäjätilejä, kuvien metatietoja, lokitietotja jne. Kyseessä ei siis ole tietokannan kopiointi vaan sisällön kopiointi jonka voi tuoda uudempiin MediaWikin versioihin. Sijainti /maintenance/dumpBackup.php
mysqldump --user=käyttäjätunnus --password=salasana tietokannannimi --xml > varmuuskopio.xml
Sivut historian kanssa
php ~/Sites/mediawiki/maintenance/dumpBackup.php --full > ~/osoite/mediawiki-dump-tietokkanannimi-$(date '+%Y%m%d').xml
Vain viimeisin versio sivusta
php ~/Sites/mediawiki/maintenance/dumpBackup.php --current > ~/osoite/mediawiki-dump-tietokkanannimi-$(date '+%Y%m%d').xml
Ohje