Ubuntu-brugere har valget mellem to pålidelige Relationelle databasestyringssystemer (RDBMS),MySQL og MariaDB . MySQL har en langvarig fordel i popularitet, men der har været øget interesse for MariaDB på grund af dets ydeevnefordele og ekstra funktioner. Denne vejledning sammenligner de to databasesystemer og giver instruktioner om, hvordan du installerer og bruger MySQL på Ubuntu 20.04.
Hvad er MySQL?
MySQL RDBMS er en af de mest populære open source-applikationer. Det er en del af LAMP-stakken , som er hjørnestenen i mange Ubuntu-systemer. Denne stak består af Linux, Apache-webserveren, MySQL RDBMS og PHP-programmeringssproget. Disse applikationer arbejder sammen for at understøtte webapplikationer, softwareudvikling og specialiserede aktiviteter såsom datavidenskab. Den primære brug af MySQL er i små til mellemstore enkeltserverkonfigurationer.
MySQL-forespørgsler er skrevet i Structured Query Language (SQL). Som en relationel database lagrer og organiserer den data i tabeller. Tabeller strukturerer de faktiske data inde i tabeller som en række rækker, hvor hver række består af en eller flere kolonner. Hver række repræsenterer en anden post i tabellen, mens hver kolonne indeholder et datafelt i posten. Datafelterne i disse tabeller kan relateres til hinanden, og disse relationer hjælper med at strukturere og organisere databasen. Specialiserede SQL-sætninger tillader klienter at tilføje, slette, ændre og hente data.
MySQL er kendt for sin stabilitet og pålidelighed og anses for enkel og nem at bruge. Den er tilgængelig som gratis open source-software under GNU General Public License. MySQL er let tilgængelig til alle Linux-distributioner såvel som andre operativsystemer. Det ejes nu af Oracle Corporation. Oracle tilbyder også den kommercielle MySQL Enterprise Edition som et avanceret produkt.
MySQL vs. MariaDB
De to vigtigste open source-databasealternativer, MySQL og MariaDB, er meget ens. De er begge RDBMS-produkter og begge bruger SQL. Begge databasesystemer har gratis versioner, og de ser ud og fungerer på nogenlunde samme måde. Fordi MariaDB oprindeligt forgrenede sig fra MySQL, er dette ikke overraskende. MariaDB har siden gennemgået yderligere udvikling og byder på mange nye forbedringer i sikkerhed og ydeevne. Med MySQL findes mange avancerede funktioner dog kun i Enterprise Edition. Her er en oversigt over lighederne og forskellene mellem de to produkter:
- MariaDB understøtter flere forbindelser end MySQL.
- Begge databaser kan arbejde med flere lagersystemer, selvom MariaDB tilbyder flere muligheder.
- MariaDB kan replikere data hurtigere end MySQL og har bedre generel ydeevne. MySQL håndterer store transaktioner mere effektivt, men MariaDB klarer sig bedre i skalerede situationer.
- MySQL understøtter nogle funktioner MariaDB ikke har, såsom dynamiske kolonner. Hver database har et par avancerede funktioner og forbedringer, som den anden ikke har.
- MySQL er ældre, bedre etableret, mere populær og har mere fællesskabsstøtte. MySQL tilbyder mere omfattende betalte supportplaner.
- MariaDB og MySQL er fuldt kompatible.
- Begge produkter er open source, men MySQL-licensmodellen er mere restriktiv.
For at opsummere er begge systemer mere end tilstrækkelige for de fleste brugere. MariaDB har bedre ydeevne, mens MySQL er bedre etableret og bedre understøttet.
Før du begynder
-
Hvis du ikke allerede har gjort det, skal du oprette en Linode-konto og Compute Instance. Se vores vejledninger Kom godt i gang med Linode og Oprettelse af en beregningsinstans.
-
Følg vores guide til konfiguration og sikring af en computerinstans for at opdatere dit system. Du ønsker måske også at indstille tidszonen, konfigurere dit værtsnavn, oprette en begrænset brugerkonto og skærpe SSH-adgang.
Bemærk Trinene i denne vejledning er skrevet til ikke-rootbrugere. Kommandoer, der kræver forhøjede privilegier, er præfikset medsudo
. Hvis du ikke er bekendt medsudo
kommando, se vejledningen til Linux-brugere og -grupper.
Sådan installeres MySQL Server
MySQL er tilgængelig som en del af standard Ubuntu-pakkerne, så det er ikke nødvendigt at redigere kildelisten. Det kan nemt installeres ved hjælp af apt
, men det er vigtigt at sikre applikationen og redigere firewallen bagefter. Disse instruktioner er rettet mod Ubuntu-brugere, men er generelt anvendelige for dem, der ønsker at installere MySQL på en anden Linux-distribution.
Download MySQL
Følg nedenstående trin for at installere MySQL-serveren på Ubuntu:
-
Installer MySQL-serverapplikationen.
sudo apt install mysql-server
-
Bekræft, at MySQL-serveren kører ved hjælp af
systemctl
kommando. Den skulle vise statussenactive
.sudo systemctl status mysql
mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset:> Active: active (running) since Thu 2021-09-09 12:24:29 UTC; 1h 44min ago
Konfigurer MySQL-serveren på Linux
mysql_secure_installation
hjælpeprogrammet er den nemmeste måde at konfigurere applikationen på. Følg disse trin for at bruge opsætningsscriptet:
-
Start
mysql_secure_installation
værktøj til at indstille root-adgangskoden og konfigurere andre standardindstillinger.sudo mysql_secure_installation
-
Applikationen spørger, om du vil aktivere
VALIDATE PASSWORD COMPONENT
komponent. Hvis du svarery
, spørger den derefter, om adgangskodens styrke skal indstilles tilLOW
,MEDIUM
ellerHIGH
.VALIDATE PASSWORD COMPONENT can be used to test passwords and improve security. It checks the strength of password and allows the users to set only those passwords which are secure enough. Would you like to setup VALIDATE PASSWORD component?
-
Ved den næste prompt beder værktøjet om en adgangskode til root-kontoen. Indstil adgangskoden, og indtast den derefter igen.
Please set the password for root here. New password: Re-enter new password:
-
Følgende spørgsmål spørger, om anonyme brugere skal fjernes for at tillade
root
konto for at forbinde eksternt og fjernetest
database. Indtasty
ellern
ved hver prompt i henhold til dine præferencer.test
databasen er nyttig under indledende validering, men af sikkerhedsmæssige årsager er det bedst at afviseroot
konto fra at logge på eksternt.By default, a MySQL installation has an anonymous user, allowing anyone to log into MySQL without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? (Press y|Y for Yes, any other key for No) : Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? (Press y|Y for Yes, any other key for No) : By default, MySQL comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? (Press y|Y for Yes, any other key for No
-
Genindlæs
privilege
, når du bliver bedt om det tabeller for at opdatere databasen.Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? (Press y|Y for Yes, any other key for No)
y
Success. All done!
-
(Valgfrit ) For at få fjernadgang til MySQL skal du sørge for, at MySQL-trafik er tilladt gennem
ufw
firewall. Tilføj følgende regel for at åbne port3306
på firewallen. Denne regel bør ikke tilføjes, hvis fjernadgang ikke er påkrævet.ufw allow mysql
Status: active To Action From -- ------ ---- Apache Full ALLOW Anywhere OpenSSH ALLOW Anywhere 3306/tcp ALLOW Anywhere Apache Full (v6) ALLOW Anywhere (v6) OpenSSH (v6) ALLOW Anywhere (v6) 3306/tcp (v6) ALLOW Anywhere (v6)
Log ind på MySQL som rodbruger
Selvom root
brugeren har fuld adgang til MySQL-databasen, dens brug skal være forbeholdt administrative formål. Dette reducerer chancen for ved et uheld at overskrive kritiske dele af databasen. Selv i en enkeltbrugeropsætning bør der oprettes en separat brugerkonto til de fleste MySQL-aktiviteter.
For at få adgang til MySQL-serveren som root
bruger og opret en ny brugerkonto, følg disse trin:
-
Brug
sudo mysql
kommando for at få adgang til databasen. MySQL autentificerer root-brugeren baseret på deres root-legitimationsoplysninger, når de logger ind lokalt, så der kræves ingen adgangskode. Alternativt kan du få adgang til root-kontoen ved at brugesudo mysql -u root -p
, sammen medroot
adgangskode.sudo mysql
-
MySQL viser udgivelsesnummeret og nogle oplysninger om installationen og præsenterer derefter MySQL-prompten.
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 15 Server version: 8.0.26-0ubuntu0.20.04.2 (Ubuntu) ... mysql>
-
For at bekræfte, at MySQL fungerer korrekt, skal du bruge
SHOW DATABASES
kommando for at vise alle databaserne.SHOW DATABASES;
+--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | +--------------------+ 4 rows in set (0.01 sec)
-
Opret en ny bruger ved hjælp af
CREATE USER
kommando. Indtast brugernavnet i formatet'username'@'IP_Address'
, hvorIP_Address
er brugerens IP-adresse. Hvis brugeren har adgang til MySQL fra den lokale Linode, skal du erstattelocalhost
i stedet for IP-adressen. I kommandoen nedenfor skal du erstattemysqluser
ogpassword
med det faktiske brugernavn og adgangskoden.Bemærk MySQL tilbyder flere forskellige godkendelsesmekanismer.
caching_sha2_password
metode anbefales til brugere, der ønsker at logge ind med en adgangskode og bruges her. Visse ældre programmer kan dog muligvis ikke godkendes korrekt på denne måde. I så fald,mysql_native_password
skal bruges i stedet. MySQL kilde-replik replikering kræver muligvissha256_password
metode.CREATE USER 'mysqluser'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'password';
-
Giv adgang til den nye bruger ved at bruge
GRANT PRIVILEGE
kommando, ved hjælp af formatetGRANT list of privileges ON table TO 'username'@'IP_Address';
. Nogle af de mere almindelige privilegier inkludererCREATE
,ALTER
,DROP
,INSERT
,UPDATE
,DELETE
ogSELECT
. For at anvende disse privilegier til alle databaser, brug jokertegnvariablen*.*
. Følgende kommando giver almindelige ikke-administrative rettigheder på alle databaser tilmysqluser
.GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES, RELOAD ON *.* TO 'mysqluser'@'localhost' WITH GRANT OPTION;
-
For at afslutte MySQL-prompten skal du skrive
exit
.exit
Sådan bruges MySQL
MySQL bruger standard SQL-syntaks til alle dets kommandoer. Trinene i dette afsnit viser, hvordan man udfører grundlæggende opgaver i MySQL, såsom oprettelse af databaser, tabeller og tilføjelse af data. For fuldstændig information om, hvordan du bruger MySQL, se MySQL Reference Manual. For en kort, men grundig introduktion, prøv MySQL-selvstudiet.
Opret en database
-
For at oprette en database skal du logge ind på MySQL med en konto med
CREATE
privilegier. Erstatmysqlusername
med det brugernavn, du har oprettet.mysql -u mysqlusername -p
-
Opret en ny database ved hjælp af
CREATE DATABASE
kommando. Erstatnewdatabasename
med det ønskede navn til din database.CREATE DATABASE newdatabasename;
Query OK, 1 row affected (0.00 sec)
-
For at bekræfte, at den nye database er blevet oprettet korrekt, skal du bruge
SHOW DATABASES
.SHOW DATABASES;
+--------------------+ | Database | +--------------------+ ... | newdatabasename | ... +--------------------+ 5 rows in set (0.00 sec)
-
Angiv den database, du vil arbejde med ved hjælp af
USE
kommando. Erstatnewdatabasename
med navnet på den database, du lige har oprettet.USE newdatabasename;
Database changed
Bemærk Du kan også bruge
USE
kommando, når du har mere end én database, og du vil skifte mellem dem. -
For at finde ud af navnet på den aktuelle database, brug
SELECT DATABASE
kommando. Outputtet viser databasenavnet.SELECT DATABASE();
+------------------+ | DATABASE() | +------------------+ | newdatabasename | +------------------+
Opret en tabel
På dette tidspunkt er databasen newdatabasename
har ingen tabeller, så det er ikke muligt at gemme data i den endnu. For at definere en tabel, brug CREATE TABLE
kommando. Sammen med navnet på tabellen kræver denne kommando navnet og datatypen for hvert felt. Datatypen karakteriserer de data, der er gemt i feltet. For eksempel kan datatypen være en streng med variabel længde, kendt som en VARCHAR
. Se MySQL-dokumentationen for en komplet liste over datatyper. Nogle af de mere almindelige datatyper er som følger.
- INT: Dette kan indeholde en værdi mellem
-2147483648
og2147483647
. Hvis angivet somUNSIGNED
, den kan gemme værdier mellem0
og4294967295
. - SMALLINT: Indeholder en endnu mindre heltalsværdi mellem
-32768
og32767
. - FLYDE: Denne type kan gemme et flydende decimaltal.
- DATO: Gemmer en dato i
YYYY-MM-DD
format. - DATETIME: Gemmer en dato- og tidskombination i
YYYY-MM-DD HH:MM:SS
format. Den samme tid kan gemmes uden bindestreger og koloner iTIMESTAMP
format. - VARCHAR(N): Dette er en streng med variabel længde mellem
1
ogN
tegn i længde, med en maksimal længde på255
tegn. - TEKST: Denne datatype kan indeholde op til
65535
tegn. Den kan indeholde tekst, billeder eller binære data. - CHAR(N): Denne type repræsenterer et tekstfelt med fast længde med længde
N
. For at indeholde tilstandskoder på to tegn skal du f.eks. bruge en datatypeCHAR(2)
.
Før du opretter nogen tabeller, er det vigtigt at beslutte sig for et skema for databasen. Skemaet beskriver, hvad hver tabel repræsenterer, hvilke data der er gemt i hver tabel, og hvordan tabellerne relaterer sig. Følg disse trin for at oprette en tabel:
-
Mens du er logget på MySQL, skal du skifte til den database, hvor du vil tilføje tabellen.
use newdatabasename;
-
Brug
CREATE TABLE
kommando for at generere en ny tabel. Brug formatetCREATE TABLE table_name (field_1 datatype, field_n datatype);
.CREATE TABLE newtablename (column1 VARCHAR(20), column2 CHAR(1), column3 DATE, column4 SMALLINT UNSIGNED);
Query OK, 0 rows affected (0.02 sec)
-
For at bekræfte, at tabellen nu eksisterer, skal du bruge
SHOW TABLES
kommando.SHOW TABLES;
+----------------------------+ | Tables_in_newdatabasename | +----------------------------+ | newtablename | +----------------------------+ 1 row in set (0.00 sec)
-
Brug
DESCRIBE
for at gennemgå tabelstrukturen og bekræfte listen over felter kommando.DESCRIBE newtablename;
+---------+-------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+-------------------+------+-----+---------+-------+ | column1 | varchar(20) | YES | | NULL | | | column2 | char(1) | YES | | NULL | | | column3 | date | YES | | NULL | | | column4 | smallint unsigned | YES | | NULL | | +---------+-------------------+------+-----+---------+-------+ 4 rows in set (0.00 sec)
-
Hvis en tabel ikke længere er påkrævet, skal du slette den ved at bruge
DROP TABLE
kommando.Forsigtig Når en tabel slettes, går alle data i tabellen tabt og kan ikke gendannes.
DROP TABLE newtablename;
Tilføj og hent data
Den vigtigste måde at indsætte en ny række data på i en tabel er med INSERT
kommando.
-
For at tilføje en række skal du bruge
INSERT
kommando. Angiv tabelnavnet, søgeordetVALUES
, og en parentes, kommasepareret liste over værdier i formatetINSERT INTO tablename VALUES ('value_1', ... 'value_n');
. Kolonneværdierne skal have samme rækkefølge som tabeldefinitionen med streng- og datoværdierne i anførselstegn. For eksempel at tilføje data tilnewtablename
, angiv værdier forcolumn1
,column2
,column3
ogcolumn4
, i nævnte rækkefølge.INSERT INTO newtablename VALUES ('value1','a','2021-09-10',123);
Query OK, 1 row affected (0.01 sec)
-
For at hente data skal du bruge
SELECT
kommando, sammen med nogle begrænsninger, der fortæller MySQL, hvilke rækker der skal returneres. Hele indholdet af tabellen kan returneres, eller kun en delmængde. For at vælge alle rækker i en tabel, brugSELECT *
kommando, men tilføj ikke nogen kvalifikationer.SELECT * FROM newtablename;
+---------+---------+------------+---------+ | column1 | column2 | column3 | column4 | +---------+---------+------------+---------+ | value1 | a | 2021-09-10 | 123 | | value2 | b | 2021-09-08 | 123 | +---------+---------+------------+---------+ 2 rows in set (0.00 sec)
-
Det er også muligt kun at vælge rækker, der passer til bestemte kriterier, for eksempel hvor en kolonne er sat til en bestemt værdi. Brug
WHERE
søgeord som kvalifikation, efterfulgt af matchkriterierne som en begrænsning. I dette eksempel er det kun rækker, hvorcolumn2
er indstillet tilb
vises.SELECT * FROM newtablename WHERE column2 = 'b';
+---------+---------+------------+---------+ | column1 | column2 | column3 | column4 | +---------+---------+------------+---------+ | value2 | b | 2021-09-08 | 123 | +---------+---------+------------+---------+ 1 row in set (0.00 sec)
-
For tabeller med mange kolonner er det ofte nemmere at begrænse den information, der vises. For kun at vælge bestemte kolonner for hver række, skal du angive kolonnenavnene i stedet for
*
symbol.SELECT column1, column4 FROM newtablename;
+---------+---------+ | column1 | column4 | +---------+---------+ | value1 | 123 | | value2 | 123 | +---------+---------+ 2 rows in set (0.00 sec)
-
For at ændre en række i en tabel, brug
UPDATE
kommando.SET
nøgleord angiver kolonnen, der skal opdateres, og den nye værdi. Om nødvendigt,WHERE
nøgleord giver en metode til at begrænse operationen til kun at gælde for bestemte rækker. I det følgende eksempel er værdien af column4
er kun ændret til155
hviscolumn2
er lig medb
.UPDATE newtablename SET column4 = 155 WHERE column2 = 'b';
Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0
-
SELECT *
erklæring kan bruges til at bekræfte opdateringen.SELECT * FROM newtablename;
+---------+---------+------------+---------+ | column1 | column2 | column3 | column4 | +---------+---------+------------+---------+ | value1 | a | 2021-09-10 | 123 | | value2 | b | 2021-09-08 | 155 | +---------+---------+------------+---------+ 2 rows in set (0.00 sec)
Konklusion:MySQL på Ubuntu 20.04
MySQL er et godt valg til små til mellemstore webapplikationer. Det bruger industristandarden SQL-programmeringssprog, som er ret ligetil at bruge. MySQL er meget stabil og robust og har masser af ressourcer sammen med god support. Hovedalternativet til MySQL er MariaDB. Den har bedre ydeevne og nyere funktioner, men er ikke så veletableret.
Du kan nemt downloade og installere MySQL-serveren på Ubuntu ved hjælp af apt
pakker og mysql_secure_installation
nytte. Selvom du er den eneste person, der bruger MySQL, er det bedst at oprette en ny MySQL-bruger med mere begrænsede privilegier.
For at bruge MySQL skal du først bestemme databaseskemaet og definere tabelindholdet. Opret derefter en database og datatabellerne. Data kan tilføjes ved hjælp af INSERT
kommando, ændret ved hjælp af UPDATE
kommandoen og hentet ved hjælp af SELECT
kommando. Selvfølgelig kan MySQL udføre selv meget komplekse operationer. Gennemfør MySQL-selvstudiet for at komme i gang, og se MySQL-dokumentationen for at få et fuldstændigt overblik.
Flere oplysninger
Du ønsker måske at konsultere følgende ressourcer for yderligere oplysninger om dette emne. Selvom disse leveres i håb om, at de vil være nyttige, bemærk venligst, at vi ikke kan stå inde for nøjagtigheden eller aktualiteten af eksternt hostede materialer.
- MariaDB-websted
- MySQL-websted