Installasjonsguider

Installasjon av MySQL og første database

Vi viser steg for steg hvordan du installerer MySQL-serveren på tre operativsystemer, setter opp sikre brukere og rettigheter, og oppretter den første databasen og tabellen.

Aurora YazılımRedaksjonen 6 min lesetid
Installasjon av MySQL og første database
Hvordan installerer du MySQL?

For en MySQL-installasjon på Windows og macOS laster du ned installasjonsprogrammet for LTS-versjonen fra dev.mysql.com og setter et root-passord; på Ubuntu holder det med sudo apt install mysql-server. Etter installasjonen kobler du til med mysql -u root -p, oppretter den første databasen med CREATE DATABASE og lager en egen bruker for applikasjonen din som bare har rettigheter til den databasen.

Hva er MySQL, og hvorfor velge det?

MySQL er et av verdens mest utbredte relasjonsdatabasesystemer; det lagrer data i tabeller og spørres med SQL. Mye programvare, som nettsider, nettbutikksystemer og reservasjons- og lagerapplikasjoner, bruker MySQL eller det kompatible MariaDB i bakgrunnen.

MySQL har to versjonsfamilier: LTS-versjoner med lang støtte og innovasjonsversjoner som får nye funksjoner tidligere. Velg LTS for forretningsprosjekter og læring, og sjekk hvilken versjon som er gjeldende LTS, på nedlastingssiden hos dev.mysql.com.

I denne guiden installerer vi MySQL Community Server, altså den gratis fellesskapsversjonen. Hvis du bare vil prøve raskt med PHP, fungerer også en ferdig pakke med MariaDB; den har vi forklart i guiden for XAMPP-installasjon.

MySQL-installasjon på Windows

Velg MSI-installasjonsprogrammet for Windows på nedlastingssiden. I nyere versjoner åpnes MySQL Configurator etter installasjonen og lar deg gjøre serverinnstillingene steg for steg; i eldre versjoner ble det samme gjort med MySQL Installer. Hvis nedlastingssiden ber om innlogging med Oracle-konto, kan du laste ned direkte med lenken «No thanks, just start my download».

  1. Velg profilen Development Computer som installasjonstype for en utviklingsmaskin; den holder minnebruken lav.
  2. La standardporten 3306 stå under tilkoblingsinnstillingene; hvis en annen database på maskinen bruker den, kan du skrive inn en verdi som 3307.
  3. Behold det anbefalte sterke krypteringsalternativet som autentiseringsmetode.
  4. Sett et root-passord og noter det på et trygt sted; dette er den mektigste kontoen på serveren.
  5. Registrer MySQL som en Windows-tjeneste og velg at den skal starte når maskinen starter.
  6. Bruk innstillingene i siste steg; når alle trinnene har fått grønt flagg, er serveren klar.

Installasjon på macOS og Linux

På macOS installerer den offisielle DMG-pakken et panel i systeminnstillingene, og herfra starter og stopper du serveren. Bruker du Homebrew, gjøres installasjon og tjenestestyring med to kommandoer.

På Ubuntu og Debian finnes MySQL-serveren i distribusjonens pakkearkiv. På Ubuntu autentiseres root-brukeren som standard med metoden auth_socket etter installasjonen; du kobler altså til med kommandoen sudo mysql i stedet for passord. På begge systemer anbefaler vi å kjøre skriptet mysql_secure_installation etter installasjonen: det fjerner anonyme brukere og testdatabasen og slår av fjerntilkobling for root.

bashmacOS (Homebrew)
brew install mysql
brew services start mysql
mysql_secure_installation
bashUbuntu / Debian
sudo apt update
sudo apt install mysql-server
sudo systemctl status mysql

# Sikkerhetsinnstillinger
sudo mysql_secure_installation

# Ikke koble til som root (auth_socket)
sudo mysql

Verifisere installasjonen

Sjekk at serveren kjører og at du får koblet til, med kommandoene under. Kommandoen mysql -u root -p ber om passordet ditt; ser du mysql>-prompten med riktig passord, er installasjonen ferdig. Husk semikolon på slutten av SQL-kommandoer inne i serveren.

bashTerminal
mysql --version
mysql -u root -p
sqlmysql>-prompt
SELECT VERSION();
SHOW DATABASES;
EXIT;

Opprette en MySQL-database

Når du oppretter en ny database, unngår du problemer med spesialtegn og emojier senere ved å velge riktig tegnsett fra start. I nyere MySQL-versjoner er standard tegnsett allerede utf8mb4, men det er en god vane å oppgi det eksplisitt i kommandoen. Hvis du vil ha tyrkiske sorteringsregler, kan du bruke kollasjonen utf8mb4_tr_0900_ai_ci.

La oss deretter opprette den første tabellen. Eksempelet har en enkel produkttabell: for prisen brukes typen DECIMAL i stedet for flyttall, siden avrundingsfeil ikke kan godtas på pengebeløp.

  • PRIMARY KEY identifiserer hver rad unikt; AUTO_INCREMENT gir nummeret automatisk.
  • Lagringsmotoren InnoDB støtter transaksjoner og fremmednøkler, og er standard i nyere versjoner.
  • Å legge indekser på kolonner du søker ofte i, gjør spørringer raskere; men hver unødvendige indeks gjør skriveoperasjoner tregere.
sqlDatabase og tabell
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 ('Eksempelprodukt', 10.00, 25);
SELECT * FROM urunler;

Opprette MySQL-bruker og rettigheter

Koble aldri applikasjonen til databasen med root-brukeren. Lag en egen bruker for hver applikasjon, som bare har tilgang til sin egen database og bare kan utføre operasjonene den trenger. Da blir skaden begrenset til den databasen selv om et sikkerhetshull skulle oppstå.

Delen 'localhost' ved siden av brukernavnet avgjør hvor tilkoblingen godtas fra. Ligger applikasjonen og databasen på samme server, holder localhost; trengs fjerntilkobling, tillat bare en bestemt IP-adresse og unngå å åpne for alle med '%'.

sqlApplikasjonsbruker
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';

-- Endre passord og slette bruker
ALTER USER 'magaza_app'@'localhost' IDENTIFIED BY 'Yeni-Sifre-3!';
DROP USER 'magaza_app'@'localhost';

Visuell administrasjon med MySQL Workbench

Foretrekker du et grafisk grensesnitt i stedet for kommandolinjen, er MySQL Workbench MySQLs offisielle skrivebordsverktøy. På tilkoblingsskjermen klikker du på plussymbolet og skriver inn serveradressen (127.0.0.1), porten (3306) og brukernavnet; knappen Test Connection bekrefter innstillingene.

I Workbench kan du designe tabeller visuelt, skrive spørringer og se resultatene som tabeller, og eksportere og importere data fra Server-menyen. På spørringsskjermen kjører Ctrl+Enter kommandoen markøren står i.

Sikkerhetskopi og gjenoppretting

Eksportskjermen i Workbench bruker verktøyet mysqldump i bakgrunnen. Du kan gjøre det samme fra terminalen; for regelmessig og automatisk sikkerhetskopiering kan kommandoen legges inn i en planlagt oppgave. Du har ikke tatt sikkerhetskopi før du innimellom har testet at kopien kan gjenopprettes.

bash
# Yedek al
mysqldump -u root -p magaza > magaza.sql

# Gjenopprett
mysql -u root -p magaza < magaza.sql

Vanlige tilkoblingsfeil og løsninger

De fleste problemene i MySQL handler om tilkobling, autentisering og passordpolicy. Feilnummeret er den raskeste veien til årsaken.

  • ERROR 1045 Access denied: Brukernavnet, passordet eller tilkoblingsadressen (localhost / 127.0.0.1) er feil. Sjekk hvilken adresse brukeren er definert for, med SELECT user, host FROM mysql.user;.
  • ERROR 2002 / 2003 Can't connect: Serveren kjører ikke. På Windows starter du MySQL-tjenesten fra Tjenester-skjermen; på Linux bruker du sudo systemctl start mysql.
  • ERROR 1819 passordpolicy: Komponenten validate_password avviser et svakt passord; velg et lengre passord med store bokstaver, tall og spesialtegn.
  • Port 3306 er i bruk: En annen database, som XAMPP, kjører på maskinen; stopp den ene eller endre en av portene.
  • Autentiseringsfeil med gammel klient: Gjeldende MySQL bruker som standard metoden caching_sha2_password; oppdater klientbiblioteket ditt.

Koble MySQL til applikasjonen

I PHP-prosjekter er den anbefalte måten å koble til MySQL på å bruke PDO med forberedte spørringer (prepared statements); denne metoden gir grunnleggende beskyttelse mot SQL-injeksjon. I stedet for å skrive tilkoblingsinformasjonen inn i koden bør du ha den i en miljøfil som ikke legges til i Git. For å styre PHP-avhengigheter kan du se guiden vår for Composer-installasjon.

Vurderer du en annen database, kan du sammenligne de to systemene med artikkelen om PostgreSQL-installasjon. For annet innhold kan du ta en titt på siden for databaser.

Databasedesign påvirker hastigheten på en nettside eller en nettbutikkplattform direkte: feil indekser eller unødvendige spørringer gjør at siden åpnes sent. Slike flaskehalser måler og utbedrer vi i arbeidet vårt med hastighet og ytelse; i prosjektene våre for bedriftsnettsider bygger vi også databasen med dette i tankene fra starten.

phpTilkobling med PDO
<?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());

Vanlige spørsmål

01Hva er forskjellen på MySQL og MariaDB?

MariaDB er en database avledet fra MySQL og i stor grad kompatibel med den. De grunnleggende SQL-kommandoene og de fleste applikasjoner fungerer likt på begge, men i nyere versjoner skiller noen funksjoner og standardinnstillinger seg fra hverandre, så bruk den samme lokalt som den som brukes på produksjonsserveren.

02Er MySQL gratis?

MySQL Community Server er gratis og åpen kildekode. Oracle har også betalte bedriftsversjoner med tilleggsverktøy og støtte; for de fleste nettprosjekter holder fellesskapsversjonen.

03Jeg har glemt root-passordet, hva kan jeg gjøre?

Følg trinnene for tilbakestilling av passord i den offisielle dokumentasjonen: serveren startes midlertidig uten rettighetskontroll, og et nytt passord settes med ALTER USER. Bruker root auth_socket på Ubuntu, kan du koble til uten passord med sudo mysql og gjøre endringen direkte.

Å installere MySQL med LTS-versjonen og kjøre sikkerhetsskriptet, å definere en egen bruker med begrensede rettigheter for applikasjonen og å ta regelmessige sikkerhetskopier er grunnlaget for en solid database. Vil du ha et skreddersydd system for virksomheten din, fra databasedesign til grensesnitt, kan du se Aurora Yazılıms skreddersydde programvareløsninger eller ta kontakt med oss.