MariaDB installeres for å drifte MySQL databasen som nettstedet skal benytte. I tillegg installeres databaseklienten fordi man blant annet da kan kjøre skript med SQL-kommandoer.
Oppdater programvarepakker
Først oppdateres programvarepakker (apt).
~$ sudo apt update
Unix Socket Authentication
Unix Socket based authentication er tilgjengelig i MariaDB Server fra og med versjon 10.4.3
I Ubuntu jammy 22.04 er MariaDB-versjon 10.6.
Dette er en authentication plugin som muliggjør innlogging i MariaDB server med en systembruker man er logget inn med i Ubuntu.
Man kan velge om det skal installeres og tas i bruk eller ikke. Det er fordeler og ulemper, men sikkerheten skal være bedre enn før.
Se denne artikkelen fra MariaDB for full informasjon om Authentication Plugin – Unix Socket.
Man bør sjekke om det går greit å bruke Unix Socket Authentication ved bruk av f eks MySQL Workbench eller andre databaseprogrammer fra ekstern PC.
Installere MariaDB Server og MariaDB klient
Her installeres både databaseserveren og databaseklienten. Man kan bruke switch -y i tillegg i denne kommandoen. -y betyr at man svarer «Yes» til alle valg automatisk.
brukernavn@servernavn:~$ sudo apt install mariadb-server mariadb-client
Kjøre sikkerhetsskript
Installasjon gjør ikke MariaDB Server sikker nok, så dette må ordnes i neste trinn ved å kjøre sikkerhetsskriptet.
Skriptet stiller bruker overfor flere viktige valg:
- Vil du bytte til Unix Socket Authentication?
- Skal passord for MariaDB Root lages?
- Skal anonyme brukere fjernes?
- Skal Remote Login tillates?
- Vil du fjerne testdatabasen?
- Vil du reload privilege tables?
Det anbefales å sjekke pålitelige ressurser for hva som er smart (y eller n), men til syvende og sist må man vurdere selv.
brukernavn@servernavn:~$ sudo mysql_secure_installation
Kjører MariaDB nå?
MariaDB trenger ikke å startes. Vi kan sjekke. Den kjører automatisk.
brukernavn@servernavn:~$ sudo systemctl status mariadb
[sudo] password for brukernavn:
● mariadb.service – MariaDB 10.6.16 database server
Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor prese>
Active: active (running) since….
Innlogging
La oss anta at vi valgte å benytte Unix Socket Auth.
Vi har også root i databasen som vi har angitt passord for.
Men nå er det et nytt regime for autentisering. Vi trenger ikke lenger å bruke root.
Siden vi er innlogget i Ubuntu med vår vanlige sudo-bruker, har vi allerede rettigheter som root i mysql. Vi trenger kun å skrive:
brukernavn@servernavn:~$ sudo mysql
Starte, stoppe, restarte MariaDB Server
Som nevnt kjører MariaDB Server automatisk ved f eks reboot av server. Vi kan likevel stoppe, starte og restartre databaseserver manuelt hvis vi trenger det.
brukernavn@servernavn:~$ sudo service mysql start
brukernavn@servernavn:~$ sudo service mysql stop
brukernavn@servernavn:~$ sudo service mysql restart
mariadb eller mysql?
MariaDB er en såkal fork (forgrening) av MySQL, en videreutvikling av MySQL. MariaDB er lisensiert under GNU General Public License, en fri offentlig lisens.
Det er utviklere av MySQL som har laget MariaDB. Derfor fungerer MySQL-kommandoer i MariaDB.
MariaDB er pålitelig programvare.
Opprette database
Vi logger inn med sudo mysql og oppretter en ny database.
brukernavn@servernavn:~$ sudo mysql
[sudo] password for brukernavn:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 1056
Server version: 10.6.16-MariaDB-0ubuntu0.22.04.1 Ubuntu 22.04
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.
MariaDB [(none)]>CREATE DATABASE brukerbase;
Se databaser
Kommando SHOW DATABASES; viser databaser:
Tildele rettigheter
Bruker ‘nettstedadmin’ tildeles fulle rettigheter på alt, omtrent som root.
MariaDB [ (none) ] >GRANT ALL PRIVILEGES ON *.* to ‘nettstedadmin’@’localhost’ WITH GRANT OPTION;
Flush privileges
For at endringene i rettighetene skal ta effekt brukes følgende kommando:
MariaDB [ (none) ] >FLUSH PRIVILEGES;
SQL syntaks
MariaDB har masse SQL-ressurser på sine nettsider.
Remote administration
Anta at vi skal administrere databasen for utviklingsnettstedet fra en Windows PC som står i lokalnettet.
For å få til det må MariaDB lytte på serverens nettverkskort. Default lytter MariaDB på localhost (127.0.0.1) og port 3306.
Men vi ønsker å endre IP til 192.168.1.2, som er IP-adressen på nettverkskortet.
Innlogging fra en Win klient eller annen Linux klient krever at MariaDB konfigureres for å tillate innlogging på et network adapter som er koblet til TCP/IP.
Dette gjøres mulig med direktivet bind-address.
Om bind-address
Description: … In some systems, such as Debian and Ubuntu, the bind_address is set to 127.0.0.1, which binds the server to listen on localhost only. bind_address has always been available as a mariadbd option; from MariaDB 10.3 its also available as a system variable. Before MariaDB 10.6.0 «::» implied listening additionally on IPv4 addresses like «*». From 10.6.0 onwards it refers to IPv6 stictly. Starting with MariaDB 10.11, a comma-separated list of addresses to bind to can be given. See also Configuring MariaDB for Remote Client Access.
-
- Commandline: –bind-address=addr
- Scope: Global
- Dynamic: No
- Data Type: string
- Default Value: (Empty string)
- Valid Values: Host name, IPv4, IPv6, ::, *
Kilde: https://mariadb.com/kb/en/server-system-variables/
Sjekk system variabel bind-address
bind-address er en Server System Variable.
bind-address er ikke en dynamisk varabel og kan derfor ikke settes «at runtime».
Nå sjekker vi hvilken addresse den har:
MariaDB [(none)]> SELECT * FROM information_schema.SYSTEM_VARIABLES WHERE VARIABLE_NAME=’BIND_ADDRESS’\G
VARIABLE_NAME: BIND_ADDRESS
SESSION_VALUE: NULL
GLOBAL_VALUE: 127.0.0.1
1 row in set (0.003 sec)
Endre bind-address
bind-address er konfigurert i en eller annen cnf-fil. Det er flere cnf-filer å lete i. Dokumentasjonen sier at bind-address skal være konfigurert i en av disse tre filene:
/etc/my.cnf
/etc/mysql/my.cnf
~/.my.cnf
Det stemte ikke for denne serveren.
På denne serveren var bind-address konfigurert med filen /etc/mysql/mariadb.conf.d/50-server.cnf
Filen 50-server.cnf ble derfor redigert:
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
I nano ble 127.0.0.1 endret til 192.168.1.2 (serverens IP).
Deretter vanlig lagring i nano (Ctrl+o) og avslutte nano (Ctrl+x).
brukernavn@servernavn:~$ sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
Vi sjekker også at port = 3306
Deretter Lagre Ctrl+O og Avslutte Ctrl+X
Restart MariaDB
MariaDB re-startes, evt stoppes og startes på nytt for at den nye konfigurasjonen skal ta effekt.
brukernavn@servernavn:~$ sudo service mysql restart
Sjekke bind-address igjen
MariaDB [(none)]> SELECT * FROM information_schema.SYSTEM_VARIABLES WHERE VARIABLE_NAME=’BIND_ADDRESS’\G
VARIABLE_NAME: BIND_ADDRESS
SESSION_VALUE: NULL
GLOBAL_VALUE: 192.168.1.2
1 row in set (0.003 sec)
Output skal nå vise GLOBAL_VALUE: Serverens IP (her eksempelvis 192.168.1.2)
Nå gjenstår det bare å opprette en bruker i databasen som ikke er root.
Opprette bruker for tilkobling med MySQL Workbench
Vi oppretter nå en bruker med navn «wbbruker» som vi kan benytte ved remote tilkobling med MySQL Workbench på PC.
MariaDB [(none)]>CREATE USER ‘wbbruker’@’%’ IDENTIFIED BY ‘**********’;
MariaDB [(none)]>GRANT ALL PRIVILEGES ON *.* TO ‘wbbruker’@’%’;
MariaDB [(none)]>FLUSH PRIVILEGES;
\q
brukernavn@servernavn:~$ sudo service mysql restart
Lage connection i MySQL Workbench
I MySQL Workbench lages en ny connection for wbbruker.
Nå skal vi kunne koble MySQL Workbench til MariaDB-databasen og jobbe på PC.