Ubuntu-användare kan välja mellan två pålitliga Relationella databashanteringssystem (RDBMS),MySQL och MariaDB . MySQL har en långvarig fördel i popularitet, men intresset för MariaDB har ökat på grund av dess prestandafördelar och extra funktioner. Den här guiden jämför de två databassystemen och ger instruktioner om hur du installerar och använder MySQL på Ubuntu 20.04.
Vad är MySQL?
MySQL RDBMS är en av de mest populära applikationerna med öppen källkod. Det är en del av LAMP-stacken , som är hörnstenen i många Ubuntu-system. Denna stack består av Linux, Apache-webbservern, MySQL RDBMS och PHP-programmeringsspråket. Dessa applikationer arbetar tillsammans för att stödja webbapplikationer, mjukvaruutveckling och specialiserade aktiviteter som datavetenskap. Den huvudsakliga användningen av MySQL är i små till medelstora enserverkonfigurationer.
MySQL-frågor skrivs i Structured Query Language (SQL). Som en relationsdatabas lagrar och organiserar den data i tabeller. Tabeller strukturerar den faktiska datan inuti tabeller som en serie rader, där varje rad består av en eller flera kolumner. Varje rad representerar en annan post i tabellen, medan varje kolumn innehåller ett datafält i posten. Datafälten i dessa tabeller kan relateras till varandra, och dessa relationer hjälper till att strukturera och organisera databasen. Specialiserade SQL-satser tillåter klienter att lägga till, ta bort, ändra och hämta data.
MySQL är känt för sin stabilitet och tillförlitlighet och anses vara enkelt och lätt att använda. Den är tillgänglig som gratis programvara med öppen källkod under GNU General Public License. MySQL är lätt tillgänglig för alla Linux-distributioner såväl som andra operativsystem. Det ägs nu av Oracle Corporation. Oracle erbjuder också den kommersiella MySQL Enterprise Edition som en avancerad produkt.
MySQL vs. MariaDB
De två huvudsakliga databasalternativen med öppen källkod, MySQL och MariaDB, är väldigt lika. De är båda RDBMS-produkter och båda använder SQL. Båda databassystemen har gratisversioner, och de ser ut och fungerar på ungefär samma sätt. Eftersom MariaDB ursprungligen förgrenade sig från MySQL är detta inte förvånande. MariaDB har sedan dess genomgått vidareutveckling och har många nya förbättringar i säkerhet och prestanda. Med MySQL finns dock många avancerade funktioner bara i Enterprise Edition. Här är en sammanfattning av likheterna och skillnaderna mellan de två produkterna:
- MariaDB stöder fler anslutningar än MySQL.
- Båda databaserna kan fungera med flera lagringssystem, även om MariaDB erbjuder fler alternativ.
- MariaDB kan replikera data snabbare än MySQL och har bättre övergripande prestanda. MySQL hanterar stora transaktioner mer effektivt, men MariaDB presterar bättre i skalade situationer.
- MySQL stöder vissa funktioner som MariaDB inte har, till exempel dynamiska kolumner. Varje databas har några avancerade funktioner och förbättringar som den andra inte har.
- MySQL är äldre, bättre etablerad, mer populär och har mer community-stöd. MySQL erbjuder mer omfattande betalda supportplaner.
- MariaDB och MySQL är helt kompatibla.
- Båda produkterna är öppen källkod, men MySQL-licensmodellen är mer restriktiv.
För att sammanfatta, båda systemen är mer än tillräckliga för de flesta användare. MariaDB har bättre prestanda, medan MySQL är bättre etablerat och stöds bättre.
Innan du börjar
-
Om du inte redan har gjort det, skapa ett Linode-konto och Compute Instance. Se våra guider Komma igång med Linode och Skapa en beräkningsinstans.
-
Följ vår guide för att ställa in och säkra en beräkningsinstans för att uppdatera ditt system. Du kanske också vill ställa in tidszonen, konfigurera ditt värdnamn, skapa ett begränsat användarkonto och förstärka SSH-åtkomsten.
Obs Stegen i den här guiden är skrivna för icke-rootanvändare. Kommandon som kräver förhöjda privilegier har prefixetsudo
. Om du inte är bekant medsudo
kommandot, se guiden för Linux-användare och -grupper.
Hur man installerar MySQL Server
MySQL är tillgängligt som en del av Ubuntus standardpaket, så det är inte nödvändigt att redigera källlistan. Det kan enkelt installeras med apt
, men det är viktigt att säkra applikationen och redigera brandväggen i efterhand. Dessa instruktioner är inriktade på Ubuntu-användare, men är generellt tillämpliga för dem som vill installera MySQL på en annan Linux-distribution.
Ladda ner MySQL
För att installera MySQL-servern på Ubuntu, följ stegen nedan:
-
Installera MySQL-serverapplikationen.
sudo apt install mysql-server
-
Bekräfta att MySQL-servern körs med
systemctl
kommando. Den ska visa statusenactive
.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
Konfigurera MySQL-servern på Linux
mysql_secure_installation
verktyget är det enklaste sättet att konfigurera programmet. Följ dessa steg för att använda installationsskriptet:
-
Starta
mysql_secure_installation
verktyg för att ställa in root-lösenordet och konfigurera andra standardalternativ.sudo mysql_secure_installation
-
Applikationen frågar om du vill aktivera
VALIDATE PASSWORD COMPONENT
komponent. Om du svarary
, frågar den sedan om lösenordsstyrkan ska ställas in påLOW
,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?
-
Vid nästa prompt ber verktyget om ett lösenord för root-kontot. Ställ in lösenordet och ange det sedan igen.
Please set the password for root here. New password: Re-enter new password:
-
Följande frågor frågar om man ska ta bort anonyma användare för att tillåta
root
konto för att ansluta på distans och för att ta borttest
databas. Angey
ellern
vid varje uppmaning enligt dina önskemål.test
databasen är användbar under den första valideringen, men av säkerhetsskäl är det bäst att inte tillåtaroot
konto från att logga in på distans.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
-
När du uppmanas, ladda om
privilege
tabeller för att uppdatera 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!
-
(Valfritt ) För att få åtkomst till MySQL på distans, se till att MySQL-trafik tillåts via
ufw
brandvägg. Lägg till följande regel för att öppna port3306
på brandväggen. Denna regel bör inte läggas till om fjärråtkomst inte krävs.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)
Logga in på MySQL som rotanvändare
Även om root
användaren har full tillgång till MySQL-databasen, dess användning bör reserveras för administrativa ändamål. Detta minskar risken för att oavsiktligt skriva över kritiska delar av databasen. Även i en enanvändarkonfiguration bör ett separat användarkonto skapas för de flesta MySQL-aktiviteter.
För att komma åt MySQL-servern som root
användare och skapa ett nytt användarkonto, följ dessa steg:
-
Använd
sudo mysql
kommando för att komma åt databasen. MySQL autentiserar root-användaren baserat på deras root-uppgifter när de loggar in lokalt, så inget lösenord krävs. Alternativt kan du komma åt rootkontot medsudo mysql -u root -p
, tillsammans medroot
lösenord.sudo mysql
-
MySQL visar releasenummer och lite information om installationen och presenterar sedan 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>
-
För att bekräfta att MySQL fungerar korrekt, använd
SHOW DATABASES
kommando för att visa alla databaser.SHOW DATABASES;
+--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | +--------------------+ 4 rows in set (0.01 sec)
-
Skapa en ny användare med
CREATE USER
kommando. Ange användarnamnet i formatet'username'@'IP_Address'
, därIP_Address
är användarens IP-adress. Om användaren använder MySQL från den lokala Linode, byt utlocalhost
istället för IP-adressen. I kommandot nedan, ersättmysqluser
ochpassword
med det faktiska användarnamnet och lösenordet.Obs MySQL erbjuder flera olika autentiseringsmekanismer.
caching_sha2_password
metod rekommenderas för användare som vill logga in med ett lösenord och används här. Vissa äldre program kanske inte kan autentiseras korrekt på detta sätt. I så fallmysql_native_password
bör användas istället. MySQL källreplik replikering kan krävasha256_password
metod.CREATE USER 'mysqluser'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'password';
-
Bevilja åtkomst till den nya användaren med
GRANT PRIVILEGE
kommando, med formatetGRANT list of privileges ON table TO 'username'@'IP_Address';
. Några av de vanligaste privilegierna inkluderarCREATE
,ALTER
,DROP
,INSERT
,UPDATE
,DELETE
ochSELECT
. För att tillämpa dessa privilegier på alla databaser, använd jokerteckenvariabeln*.*
. Följande kommando ger vanliga icke-administrativa privilegier på alla databaser tillmysqluser
.GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES, RELOAD ON *.* TO 'mysqluser'@'localhost' WITH GRANT OPTION;
-
För att avsluta MySQL-prompten, skriv
exit
.exit
Hur man använder MySQL
MySQL använder standard SQL-syntax för alla sina kommandon. Stegen i det här avsnittet visar hur man utför grundläggande uppgifter i MySQL, som att skapa databaser, tabeller och lägga till data. För fullständig information om hur du använder MySQL, se MySQL-referensmanualen. För en kort men grundlig introduktion, prova MySQL-handledningen.
Skapa en databas
-
För att skapa en databas, logga in på MySQL med ett konto som innehåller
CREATE
privilegier. Ersättmysqlusername
med användarnamnet du skapade.mysql -u mysqlusername -p
-
Skapa en ny databas med
CREATE DATABASE
kommando. Ersättnewdatabasename
med önskat namn för din databas.CREATE DATABASE newdatabasename;
Query OK, 1 row affected (0.00 sec)
-
För att bekräfta att den nya databasen har skapats korrekt, använd
SHOW DATABASES
.SHOW DATABASES;
+--------------------+ | Database | +--------------------+ ... | newdatabasename | ... +--------------------+ 5 rows in set (0.00 sec)
-
Ange vilken databas du vill arbeta med med hjälp av
USE
kommando. Ersättnewdatabasename
med namnet på databasen som du just skapade.USE newdatabasename;
Database changed
Obs Du kan också använda
USE
kommando när du har mer än en databas och du vill växla mellan dem. -
För att ta reda på namnet på den aktuella databasen, använd
SELECT DATABASE
kommando. Utdatat visar databasnamnet.SELECT DATABASE();
+------------------+ | DATABASE() | +------------------+ | newdatabasename | +------------------+
Skapa en tabell
Vid det här laget, databasen, newdatabasename
har inga tabeller, så det är inte möjligt att lagra några data i den ännu. För att definiera en tabell, använd CREATE TABLE
kommando. Tillsammans med namnet på tabellen kräver detta kommando namnet och datatypen för varje fält. Datatypen kännetecknar data som lagras i fältet. Datatypen kan till exempel vara en sträng med variabel längd, känd som en VARCHAR
. För en komplett lista över datatyper, se MySQL-dokumentationen. Några av de vanligaste datatyperna är följande.
- INT: Detta kan innehålla ett värde mellan
-2147483648
och2147483647
. Om det anges somUNSIGNED
, den kan lagra värden mellan0
och4294967295
. - SMALLINT: Innehåller ett ännu mindre heltalsvärde mellan
-32768
och32767
. - FLYTTA: Den här typen kan lagra ett flyttal.
- DATUM: Lagrar ett datum i
YYYY-MM-DD
format. - DATETIME: Lagrar en kombination av datum och tid i
YYYY-MM-DD HH:MM:SS
formatera. Samma tid kan lagras utan bindestreck och kolon iTIMESTAMP
format. - VARCHAR(N): Detta är en sträng med variabel längd mellan
1
ochN
tecken långa, med en maximal längd på255
tecken. - TEXT: Denna datatyp rymmer upp till
65535
tecken. Den kan innehålla text, bilder eller binär data. - CHAR(N): Den här typen representerar ett textfält med fast längd med längden
N
. För att till exempel ha två teckens tillståndskoder, använd datatypenCHAR(2)
.
Innan du skapar några tabeller är det viktigt att besluta om ett schema för databasen. Schemat beskriver vad varje tabell representerar, vilken data som lagras i varje tabell och hur tabellerna relaterar. För att skapa en tabell, följ dessa steg:
-
När du är inloggad på MySQL byter du till databasen där du vill lägga till tabellen.
use newdatabasename;
-
Använd
CREATE TABLE
kommando för att skapa en ny tabell. Använd 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)
-
För att bekräfta att tabellen nu finns, använd
SHOW TABLES
kommando.SHOW TABLES;
+----------------------------+ | Tables_in_newdatabasename | +----------------------------+ | newtablename | +----------------------------+ 1 row in set (0.00 sec)
-
För att granska tabellstrukturen och verifiera listan med fält, använd
DESCRIBE
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)
-
Om en tabell inte längre behövs, radera den med
DROP TABLE
kommando.Varning När en tabell släpps förloras all data i tabellen och kan inte återställas.
DROP TABLE newtablename;
Lägg till och hämta data
Det huvudsakliga sättet att infoga en ny rad med data i en tabell är med INSERT
kommando.
-
För att lägga till en rad, använd
INSERT
kommando. Ange tabellnamnet, nyckelordetVALUES
, och en kommaseparerad lista med värden inom parentes i formatetINSERT INTO tablename VALUES ('value_1', ... 'value_n');
. Kolumnvärdena måste ha samma sekvens som tabelldefinitionen, med sträng- och datumvärdena inom citattecken. Till exempel för att lägga till data tillnewtablename
, ange värden förcolumn1
,column2
,column3
ochcolumn4
, i den ordningen.INSERT INTO newtablename VALUES ('value1','a','2021-09-10',123);
Query OK, 1 row affected (0.01 sec)
-
För att hämta data, använd
SELECT
kommando, tillsammans med några begränsningar som talar om för MySQL vilka rader som ska returneras. Hela innehållet i tabellen kan returneras, eller bara en delmängd. För att välja alla rader i en tabell, användSELECT *
kommando, men lägg inte till några kvalificerare.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 är också möjligt att bara välja rader som passar särskilda kriterier, till exempel där en kolumn är satt till ett visst värde. Använd
WHERE
sökord som kvalificering, följt av matchningskriterierna som en begränsning. I det här exemplet, endast rader därcolumn2
är inställd påb
visas.SELECT * FROM newtablename WHERE column2 = 'b';
+---------+---------+------------+---------+ | column1 | column2 | column3 | column4 | +---------+---------+------------+---------+ | value2 | b | 2021-09-08 | 123 | +---------+---------+------------+---------+ 1 row in set (0.00 sec)
-
För tabeller med många kolumner är det ofta lättare att begränsa informationen som visas. För att bara välja vissa kolumner för varje rad, ange kolumnnamnen istället för
*
symbol.SELECT column1, column4 FROM newtablename;
+---------+---------+ | column1 | column4 | +---------+---------+ | value1 | 123 | | value2 | 123 | +---------+---------+ 2 rows in set (0.00 sec)
-
För att ändra en rad i en tabell, använd
UPDATE
kommando.SET
nyckelord anger kolumnen som ska uppdateras och det nya värdet. Om det behövs,WHERE
nyckelordet tillhandahåller en metod för att begränsa operationen till att endast tillämpas på vissa rader. I följande exempel, värdet påcolumn4
ändras endast till155
omcolumn2
är lika 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 *
uttalande kan användas för att bekräfta uppdateringen.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)
Slutsats:MySQL på Ubuntu 20.04
MySQL är ett bra val för små till medelstora webbapplikationer. Den använder det industristandardiserade SQL-programmeringsspråket, vilket är ganska enkelt att använda. MySQL är mycket stabil och robust och har gott om resurser tillsammans med bra support. Huvudalternativet till MySQL är MariaDB. Den har bättre prestanda och nyare funktioner, men är inte lika väletablerad.
Du kan enkelt ladda ner och installera MySQL-servern på Ubuntu med hjälp av apt
paket och mysql_secure_installation
verktyg. Även om du är den enda personen som använder MySQL, är det bäst att skapa en ny MySQL-användare med mer begränsade privilegier.
För att använda MySQL, bestäm först databasschemat och definiera tabellinnehållet. Skapa sedan en databas och datatabellerna. Data kan läggas till med INSERT
kommandot, modifierat med UPDATE
kommandot och hämtade med SELECT
kommando. Naturligtvis kan MySQL utföra även mycket komplexa operationer. Arbeta igenom MySQL-handledningen för att komma igång och konsultera MySQL-dokumentationen för en fullständig översikt.
Mer information
Du kanske vill konsultera följande resurser för ytterligare information om detta ämne. Även om dessa tillhandahålls i hopp om att de kommer att vara användbara, vänligen observera att vi inte kan garantera noggrannheten eller aktualiteten hos externt värdmaterial.
- MariaDB webbplats
- MySQL-webbplats