Tietokanta on monen eri toiminnan ydin. Sitä tarvitaan näkyvässä osassa esimerkiksi rakentamaan WordPress-sivut. Mutta se vastaa konepelin alla myös järjestelmän toiminnasta. Voit asentaa minkä tietokannan tahansa, ja lopputuloksen kannalta ne ovat hyvin samankaltaisia. Sen sijaan nopeuksissa on eroja, myös minkälaisia ympäristöissä niitä käytetään sekä tuetysti komentojen syntaksit vaihtelevat hieman. Jos sinulla on erikoistarpeita, niin tiedät minkä asennat. Ns. tavallisessa käytössä sinulla on vain kaksi vaihtoehtoa: MySQL ja MariaDB. Aidosti vaihtohdot ovat enemmänkin poliittisia, koska nuo ovat perimmältään sama asia. Alustana minulla on tässä jutussa DigitalOceanin droplet ja Ubuntu 19.04.
Muinaishistoriassa 1990-luvulla vaihtoehtoja oli Microsoftin SQL sekä Oracle. Molemmat olivat kalliita ja rajoitettuja. 1995 julkaistiin open source vaihtoehto, ilmaiseksi, jonka nimi oli MySQL. Hetken kuluttua se oli ohittanut teollisuusjättiläiset ja kattaa nykyään noin puolet maailman tietokannoista. Sitten Sun Microsystems osti MySQL:n. Hetken kuluttua Oracle, joka oli maailman johtava kaupallinem tietokantatoimittaja, osti Sun Microsystemsin ja sai itselleen MySQL:n. Jos puhutaan markkinoiden keskittymisestä, niin tässä on yksi sellainen: maailman suurin kaupallinen tietokantayritys omistaa maailman suurimman vapaan tietokantajärjestelmän. Tilanne on sama kuin jos Microsoft ostaisi linuxit.
Tuo aiheutti pelkotiloja ja kaikki olivat varmoja, että Oracle joko kuristaisi tai rajoittaisi MySQL:ää saadakseen siirrettyä käyttäjiä maksullisen järjestelmän puolelle. MySQL:n tekijät rakensivat forkin, muokkauksen tai puukotuksen, korvaamaan MySQL. Se julkaistiin 2010 ja sai nimen MariaDB.
Aidosti MariaDB on MySQL – mutta hieman viritetympänä. Se taasen näkyy hieman parempana nopeutena, väittävät. Itse en ole huomannut eroa tavallisessa websivu- ja verkkokauppakäytössä.
Koska MariaDB on MySQL, niin se näkyy yhdessä toisessakin asiassa. Kaikki komennot (melkein) ja muukin toiminta on samanlaista, joten MySQL-esimerkit toimivat suoraan – aina komentoja myöten.
Sinulla on asennushommissa kolme vaihtoehtoa:
- asentaa ja käyttää MySQL:ää
- asentaa ja käyttää MariaDB:tä
- asentaa MySQL, muuttaa se MariaDB:ksi ja käyttää sitä
Teki minkä tahansa, niin tällä aloitetaan:
apt update
Puhdas MySQL
MySQL:n asennus on kovin suoraviivainen
apt install mysql-server
MariaDB:n asennus
MariaDB asennetaan periaatteessa aivan samalla tavalla
apt install mariadb-server
You have held broken packages
Ja nyt siirrytään periaattesta käytäntöön. Nykyään DigitalOceanin Ubuntu 19.04 osaa asentaa MariaDB:n. Kaikissa jakeluissa sitä ei kuitenkaan välttämättä ole ja silloin saat otsikon mukaisen virheilmoituksen. Jos noin käy, niin siirry suunnitelmaan B.
- Mene sivulle https://downloads.mariadb.org/mariadb/repositories/
Valitse haluamasi linux-jakelu, versio ja mistä haluat MariaDB:n ladattavan. Sivun alaosassa on silloin ohjeet miten sen asennat. Lyhyesti: kerrot järjestelmälle mistä se löytää sellaisen paketin, jossa on MariaDB.
Itse käytin Ubuntu 19.04:lle MariaDB:n version 10.4 asentamiseen DigitalOcean New Yorkin tarjoamasta paketista tällä tavalla:
- Tämä sinulla varmaan on jo asennettuna, mutta varmistetaan:
apt install software-properties-common
- Asennetaan repo, josta paketti saadaan:
apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
add-apt-repository 'deb [arch=amd64] http://nyc2.mirrors.digitalocean.com/mariadb/repo/10.4/ubuntu disco main'
apt update
Mahdollisesti kannattaa tehdä päivitys, jos sitä tarjotaan
apt dist-upgrade
- Ja nyt asennetaan MariaDB:
apt install mariadb-server
MySQL ja MariaDB asettaminen
Laitan niin MySQL:n kuin MariaDB:n samaan, koska ne tehdään yhtä poikkeusta lukuunottamatta tismalleen samoin. Asettaminen käynnistetään komennolla:
mysql_secure_installation
Sinulta kysytään määrättyjä asetuksia, niihin kelpaa aika pitkälle oletukset:
Set root password
– aseta rootin salasana; älä käytä samaa kuin muihin kirjautumiseen, mutta valitse sellainen, jonka muistat. Me tavalliset kuolevaiset tupataan kirjoittamaan nämä muistiin.
Kun shellissä scripti kysyy jotain, niin usein on merkitty mahdolliset vaihtoehdot näkyviin. KutenSet root password? [Y/n]
hyväksyyy
eli yes/kyllä jan
kuin no/ei. Oletusvaihtoehto on merkitty isolla kirjaimella ja se tulee käyttöön pelkällä enterillä.Remove anonymous users
– poistetaanko tuntemattomat käyttäjät; en tiedä mistä niitä olisi tullut, mutta vastaaY
eli kyllä.Disallow root login remotely
– kiellä rootin kirjautuminen etänä; vastaaY
eli kyllä, estetään.Remove test database and access to it
– poistetaanko testikamat;Y
eli kyllä poistetaanReload privilege tables now
– varmistetaan, että käyttäjien oikeudet on oikein;Y
eli kyllä
Varmistetaan onko salasana käytössä tietokantaan kirjauduttaessa:
mysql -u root
Jos pääsit sisälle, niin salasanakysely on pakotettava. Ja nyt MySQL ja MariaDB eroavat toisistaan.
- MySQL:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'salasana';
Muuta salasana
haluamaksesi ennen kuin painat enteriä. Käytä sitä minkä annoit edellisessä vaiheessa tai vaihda uuteen.
- MariaDB toimii hieman eri logiikalla. Jos sinulla on oikeudet omaava tunnus, kuten root, niin MariaDB ei ole kiinnostunut salasanastasi konsolissa. Jos olet päässyt kirjautumaan shelliin, niin MariaDB luottaa sinun olevan se kuka väitätkin. Jos olen oikein ymmärtänyt, niin kun kiellettiin etäyhteys, niin salasanan pakottaminen poistu. Jos haluat salasanan pakotetuksi, niin samalla mahdollistetaan etäyhteys – tosin, saatan olla pahasti väärässäkin. Se, että salasanaa ei erikseen vaadita shellissä, on periaatteessa turvallisuutta heikentävä, mutta toisaalta: ei salasanaa erikseen kysy mikään muu palvelu. Mutta jos haluat, että rootilta kysytään salasanaa MariaDB:hen kirjauduttaessa, niin se tapahtuu näin:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');
UPDATE mysql.user SET plugin = '' WHERE user = 'root' AND host = 'localhost';
Sitten palataan yhteiselle polulle.
Otetaan uudet säännöt käyttöön.
flush privileges;
Pääset MySQL:stä pois:
exit;
Kokeile pääsetkö kirjautumaan ilman salasanaa:
mysql -u root
Saanet virheilmoituksen, joten kokeillaan salasanan kanssa:
mysql -u root -p
Sinulta kysytään salasanaa ja oikealla pääset sisälle.
Voit antaa salasanan myös -p
lipun yhteydessä näin -psalasana
mutta se ei ole todellakaan suositeltavaa – silloin jätät salasanan näkyviin mm. bashin muistiin (tiesithän, että voit selata antamiasi komentoja kursorinäppäimillä, ylös ja alas?)
Päivitys MySQL:stä MariaDB:hen
Harvempi päivitys on yhtä helppo.
Pysäytä ensin MySQL.
systemctl stop mysql
Asenna MariaDB.
apt install mariadb-server
Jos sitä ei löytynyt, niin te alussa olevan asennuksen ”plan B” mukaan.
Asennuksen jälkeen käynnistä MariaDB.
systemctl start mysql
Se oli siinä.