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 medsudokommando, 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
systemctlkommando. Den skulle vise statussenactive.sudo systemctl status mysqlmysql.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_installationværktøj til at indstille root-adgangskoden og konfigurere andre standardindstillinger.sudo mysql_secure_installation -
Applikationen spørger, om du vil aktivere
VALIDATE PASSWORD COMPONENTkomponent. Hvis du svarery, spørger den derefter, om adgangskodens styrke skal indstilles tilLOW,MEDIUMellerHIGH.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
rootkonto for at forbinde eksternt og fjernetestdatabase. Indtastyellernved hver prompt i henhold til dine præferencer.testdatabasen er nyttig under indledende validering, men af sikkerhedsmæssige årsager er det bedst at afviserootkonto 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)ySuccess. All done! -
(Valgfrit ) For at få fjernadgang til MySQL skal du sørge for, at MySQL-trafik er tilladt gennem
ufwfirewall. Tilføj følgende regel for at åbne port3306på firewallen. Denne regel bør ikke tilføjes, hvis fjernadgang ikke er påkrævet.ufw allow mysqlStatus: 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 mysqlkommando 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 medrootadgangskode.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 DATABASESkommando 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 USERkommando. Indtast brugernavnet i formatet'username'@'IP_Address', hvorIP_Addresser brugerens IP-adresse. Hvis brugeren har adgang til MySQL fra den lokale Linode, skal du erstattelocalhosti stedet for IP-adressen. I kommandoen nedenfor skal du erstattemysqluserogpasswordmed det faktiske brugernavn og adgangskoden.Bemærk MySQL tilbyder flere forskellige godkendelsesmekanismer.
caching_sha2_passwordmetode 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_passwordskal bruges i stedet. MySQL kilde-replik replikering kræver muligvissha256_passwordmetode.CREATE USER 'mysqluser'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'password'; -
Giv adgang til den nye bruger ved at bruge
GRANT PRIVILEGEkommando, 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,DELETEogSELECT. 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
CREATEprivilegier. Erstatmysqlusernamemed det brugernavn, du har oprettet.mysql -u mysqlusername -p -
Opret en ny database ved hjælp af
CREATE DATABASEkommando. Erstatnewdatabasenamemed 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
USEkommando. Erstatnewdatabasenamemed navnet på den database, du lige har oprettet.USE newdatabasename;Database changedBemærk Du kan også bruge
USEkommando, 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 DATABASEkommando. 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
-2147483648og2147483647. Hvis angivet somUNSIGNED, den kan gemme værdier mellem0og4294967295. - SMALLINT: Indeholder en endnu mindre heltalsværdi mellem
-32768og32767. - FLYDE: Denne type kan gemme et flydende decimaltal.
- DATO: Gemmer en dato i
YYYY-MM-DDformat. - DATETIME: Gemmer en dato- og tidskombination i
YYYY-MM-DD HH:MM:SSformat. Den samme tid kan gemmes uden bindestreger og koloner iTIMESTAMPformat. - VARCHAR(N): Dette er en streng med variabel længde mellem
1ogNtegn i længde, med en maksimal længde på255tegn. - TEKST: Denne datatype kan indeholde op til
65535tegn. 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 TABLEkommando 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 TABLESkommando.SHOW TABLES;+----------------------------+ | Tables_in_newdatabasename | +----------------------------+ | newtablename | +----------------------------+ 1 row in set (0.00 sec) -
Brug
DESCRIBEfor 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 TABLEkommando.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
INSERTkommando. 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,column3ogcolumn4, 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
SELECTkommando, 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
WHEREsøgeord som kvalifikation, efterfulgt af matchkriterierne som en begrænsning. I dette eksempel er det kun rækker, hvorcolumn2er indstillet tilbvises.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
UPDATEkommando.SETnøgleord angiver kolonnen, der skal opdateres, og den nye værdi. Om nødvendigt,WHEREnø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 column4er kun ændret til155hviscolumn2er 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