MySQL:n asennus ja ensimmäinen tietokanta
Käymme vaihe vaiheelta läpi, miten MySQL-palvelin asennetaan kolmeen käyttöjärjestelmään, miten määritellään turvalliset käyttäjät ja oikeudet ja miten luodaan ensimmäinen tietokanta ja taulu.

MySQL:n asennusta varten lataa Windowsissa ja macOS:ssä osoitteesta dev.mysql.com LTS-version asennusohjelma ja määritä root-salasana; Ubuntussa riittää sudo apt install mysql-server. Asennuksen jälkeen yhdistä komennolla mysql -u root -p, luo ensimmäinen tietokanta komennolla CREATE DATABASE ja luo sovellukselle erillinen käyttäjä, jolla on oikeudet vain kyseiseen tietokantaan.
Mikä on MySQL ja miksi sitä suositaan?
MySQL on yksi maailman yleisimmistä relaatiotietokantajärjestelmistä, joka tallentaa tiedot tauluihin ja jota kysellään SQL-kielellä. Monet ohjelmistot, kuten verkkosivustot, verkkokauppajärjestelmät sekä varaus- ja varastosovellukset, käyttävät taustalla MySQL:ää tai sen kanssa yhteensopivaa MariaDB:tä.
MySQL:llä on kaksi versioperhettä: pitkään tuettavat LTS-versiot ja uudet ominaisuudet aiemmin tuovat innovaatioversiot. Valitse yritysprojekteihin ja oppimiseen LTS; tarkista, mikä versio on ajantasainen LTS, dev.mysql.com-lataussivulta.
Tässä oppaassa asennamme MySQL Community Serverin eli ilmaisen yhteisöversion. Jos haluat vain kokeilla nopeasti PHP:n kanssa, myös MariaDB:tä sisältävä valmis paketti käy; kerroimme siitä XAMPP-asennusoppaassamme.
MySQL:n asennus Windowsissa
Valitse latausivulta Windowsille tarkoitettu MSI-asennusohjelma. Uusissa versioissa asennuksen jälkeen avautuu MySQL Configurator, jonka avulla palvelimen asetukset tehdään vaihe vaiheelta; vanhemmissa versioissa sama tehtiin MySQL Installerilla. Jos latausivulla pyydetään kirjautumaan Oracle-tilillä, voit ladata suoraan ”No thanks, just start my download” -linkin kautta.
- Valitse asennustyypiksi kehitystietokoneelle Development Computer -profiili; se pitää muistinkäytön alhaisena.
- Jätä yhteysasetuksissa oletusarvoinen portti 3306; jos jokin toinen tietokanta käyttää tietokoneella samaa porttia, syötä esimerkiksi 3307.
- Säilytä todennustavan kohdalla suositeltu vahva salausvaihtoehto.
- Määritä root-salasana ja kirjoita se turvalliseen paikkaan; se on palvelimen kaikkein valtuutetuin tili.
- Rekisteröi MySQL Windows-palveluksi ja valitse, että se käynnistyy tietokoneen käynnistyessä.
- Ota asetukset käyttöön viimeisessä vaiheessa; kun kaikki vaiheet saavat vihreän kuittauksen, palvelin on valmis.
Asennus macOS:ssä ja Linuxissa
macOS:ssä virallinen DMG-paketti asentaa järjestelmäasetuspaneelin, josta palvelin käynnistetään ja pysäytetään. Jos käytät Homebrewta, asennus ja palvelun hallinta hoituvat kahdella komennolla.
Ubuntussa ja Debianissa MySQL-palvelin löytyy jakelun varastosta. Ubuntussa asennuksen jälkeen root-käyttäjä todennetaan oletuksena auth_socket-menetelmällä; eli salasanan sijaan yhdistät komennolla sudo mysql. Suosittelemme ajamaan molemmissa järjestelmissä asennuksen jälkeen mysql_secure_installation-skriptin: se poistaa anonyymit käyttäjät ja testitietokannan ja estää rootin etäyhteyden.
brew install mysql
brew services start mysql
mysql_secure_installationsudo apt update
sudo apt install mysql-server
sudo systemctl status mysql
# Suojausasetukset
sudo mysql_secure_installation
# Älä kirjaudu root-käyttäjänä (auth_socket)
sudo mysqlAsennuksen varmistaminen
Tarkista seuraavilla komennoilla, että palvelin toimii ja että voit yhdistää siihen. Komento mysql -u root -p kysyy salasanaasi; jos oikealla salasanalla näet mysql>-kehotteen, asennus on valmis. Muista lisätä palvelimen sisällä oleviin SQL-komentoihin puolipiste loppuun.
mysql --version
mysql -u root -pSELECT VERSION();
SHOW DATABASES;
EXIT;MySQL-tietokannan luominen
Kun luot uutta tietokantaa, merkistön valitseminen oikein heti alussa estää myöhemmät ongelmat erikoismerkkien ja emojien kanssa. MySQL:n nykyversioissa oletusmerkistö on jo utf8mb4; silti on hyvä tapa määritellä se komennossa selvästi. Jos haluat turkin kielen lajittelusäännöt, voit käyttää utf8mb4_tr_0900_ai_ci-vertailua.
Luodaan seuraavaksi ensimmäinen taulu. Esimerkissä on yksinkertainen tuotetaulu: hinnalle käytetään DECIMAL-tyyppiä liukuluvun sijaan, koska rahasummissa pyöristysvirhe ei ole hyväksyttävä.
- PRIMARY KEY yksilöi jokaisen rivin; AUTO_INCREMENT antaa numeron automaattisesti.
- InnoDB-tallennusmoottori tukee transaktioita ja vierasavaimia, ja se on oletuksena nykyversioissa.
- Indeksin lisääminen usein hakemiisi sarakkeisiin nopeuttaa kyselyjä; mutta jokainen tarpeeton indeksi hidastaa kirjoitusoperaatioita.
CREATE DATABASE magaza
CHARACTER SET utf8mb4
COLLATE utf8mb4_tr_0900_ai_ci;
USE magaza;
CREATE TABLE urunler (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
ad VARCHAR(150) NOT NULL,
fiyat DECIMAL(10,2) NOT NULL,
stok INT NOT NULL DEFAULT 0,
olusturma DATETIME DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB;
INSERT INTO urunler (ad, fiyat, stok) VALUES ('Esimerkkituote', 10.00, 25);
SELECT * FROM urunler;MySQL-käyttäjän luominen ja oikeudet
Älä koskaan yhdistä sovellustasi tietokantaan root-käyttäjällä. Luo jokaiselle sovellukselle erillinen käyttäjä, joka pääsee vain omaan tietokantaansa ja voi tehdä vain tarvitsemansa toiminnot. Näin vahingot rajoittuvat kyseiseen tietokantaan, vaikka tietoturva-aukko syntyisi.
Käyttäjänimen vieressä oleva ’localhost’-osa määrittää, mistä yhteys hyväksytään. Jos sovellus ja tietokanta ovat samalla palvelimella, localhost riittää; jos tarvitaan etäyhteys, salli vain tietty IP-osoite ja vältä avaamasta kaikille merkillä ’%’.
CREATE USER 'magaza_app'@'localhost' IDENTIFIED BY 'Guclu-Bir-Sifre-2!';
GRANT SELECT, INSERT, UPDATE, DELETE ON magaza.* TO 'magaza_app'@'localhost';
SHOW GRANTS FOR 'magaza_app'@'localhost';
-- Salasanan vaihto ja käyttäjän poisto
ALTER USER 'magaza_app'@'localhost' IDENTIFIED BY 'Yeni-Sifre-3!';
DROP USER 'magaza_app'@'localhost';Visuaalinen hallinta MySQL Workbenchilla
Jos haluat komentorivin sijaan visuaalisen käyttöliittymän, MySQL Workbench on MySQL:n virallinen työpöytätyökalu. Yhteysnäytössä napsautat plusmerkkiä ja syötät palvelimen osoitteen (127.0.0.1), portin (3306) ja käyttäjänimen; Test Connection -painike varmistaa asetukset.
Workbenchissa voit suunnitella tauluja visuaalisesti, kirjoittaa kyselyitä ja nähdä tulokset taulukkona sekä viedä ja tuoda dataa Server-valikosta. Kyselynäkymässä Ctrl+Enter ajaa komennon, jossa kohdistin on.
Varmuuskopiointi ja palautus
Workbenchin vientinäkymä käyttää taustalla mysqldump-työkalua. Saman voi tehdä myös päätteestä; säännöllistä ja automaattista varmuuskopiointia varten tämän komennon voi lisätä ajastettuun tehtävään. Varmuuskopio ei ole varmuuskopio, ellet testaa aika ajoin, että se voidaan palauttaa.
# Yedek al
mysqldump -u root -p magaza > magaza.sql
# Palauta
mysql -u root -p magaza < magaza.sqlYleiset yhteysvirheet ja ratkaisut
Suurin osa MySQL:n ongelmista liittyy yhteyteen, todennukseen ja salasanakäytäntöön. Virheen numero on nopein tapa ymmärtää syy.
- ERROR 1045 Access denied: Käyttäjänimi, salasana tai yhteysosoite (localhost / 127.0.0.1) on väärä. Tarkista, mille osoitteelle käyttäjä on määritelty, komennolla SELECT user, host FROM mysql.user;.
- ERROR 2002 / 2003 Can't connect: Palvelin ei ole käynnissä. Käynnistä MySQL-palvelu Windowsissa Palvelut-näytöstä ja Linuxissa komennolla sudo systemctl start mysql.
- ERROR 1819 salasanakäytäntö: validate_password-komponentti hylkää heikon salasanan; valitse pidempi salasana, jossa on isoja kirjaimia, numeroita ja erikoismerkkejä.
- Portti 3306 on käytössä: Tietokoneella on käynnissä jokin toinen tietokanta, kuten XAMPP; pysäytä toinen tai vaihda toisen portti.
- Vanhan asiakasohjelman todennusvirhe: Nykyinen MySQL käyttää oletuksena caching_sha2_password-menetelmää; päivitä asiakaskirjastosi.
MySQL:n yhdistäminen sovellukseen
PHP-projekteissa suositeltu tapa yhdistää MySQL:ään on käyttää PDO:ta ja valmisteltuja kyselyjä (prepared statements); tämä menetelmä antaa perussuojan SQL-injektiota vastaan. Älä kirjoita yhteystietoja koodiin, vaan säilytä ne ympäristötiedostossa, jota ei lisätä Gitiin. PHP-riippuvuuksien hallintaan voit katsoa Composerin asennus -oppaamme.
Jos harkitset toista tietokantaa, voit verrata kahta järjestelmää artikkelin PostgreSQL:n asennus avulla. Muuta sisältöä löydät tietokanta-tunnisteen sivulta.
Tietokannan suunnittelu vaikuttaa suoraan sivuston tai verkkokauppa-alustan nopeuteen: väärät indeksit tai tarpeettomat kyselyt hidastavat sivun avautumista. Mittaamme ja korjaamme tällaisia pullonkauloja nopeus- ja suorituskykyoptimoinnin työssämme; yrityksen kotisivu -projekteissammekin rakennamme tietokannan alusta asti tällä ajatuksella.
<?php
$pdo = new PDO(
'mysql:host=localhost;dbname=magaza;charset=utf8mb4',
'magaza_app',
getenv('DB_SIFRE'),
[PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]
);
$sorgu = $pdo->prepare('SELECT ad, stok FROM urunler WHERE id = ?');
$sorgu->execute([1]);
print_r($sorgu->fetch());Usein kysytyt kysymykset
01Mikä ero on MySQL:llä ja MariaDB:llä?
MariaDB on MySQL:stä johdettu ja pitkälti yhteensopiva tietokanta. Perus-SQL-komennot ja useimmat sovellukset toimivat molemmissa samoin; uusissa versioissa jotkin ominaisuudet ja oletusasetukset ovat kuitenkin eriytyneet, joten käytä paikallisesti samaa kuin tuotantopalvelimella.
02Onko MySQL ilmainen?
MySQL Community Server on ilmainen ja avoimen lähdekoodin ohjelma. Oraclella on myös maksullisia yritysversioita, jotka sisältävät lisätyökaluja ja tukea; useimpiin verkkoprojekteihin yhteisöversio riittää.
03Unohdin root-salasanani, mitä voin tehdä?
Seuraa virallisen dokumentaation salasanan nollausohjeita: palvelin käynnistetään väliaikaisesti ohittaen oikeuksien tarkistus, ja uusi salasana asetetaan ALTER USER -komennolla. Jos root käyttää Ubuntussa auth_socketia, voit yhdistää komennolla sudo mysql ilman salasanaa ja tehdä muutoksen suoraan.
MySQL:n asentaminen LTS-versiolla ja suojausskriptin ajaminen, sovellukselle erillisen ja rajatuin oikeuksin varustetun käyttäjän määrittäminen sekä säännöllinen varmuuskopiointi ovat vankan tietokannan perusta. Jos haluat yrityksellesi tietokannan suunnittelusta käyttöliittymään asti räätälöidyn järjestelmän, tutustu Aurora Yazılımin räätälöityihin ohjelmistoratkaisuihin tai ota meihin yhteyttä.


