sql >> Databasteknik >  >> RDS >> Mysql

Installera och konfigurera MySQL på Ubuntu 20.04

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

  1. 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.

  2. 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 prefixet sudo . Om du inte är bekant med sudo 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:

  1. Installera MySQL-serverapplikationen.

    sudo apt install mysql-server
    
  2. Bekräfta att MySQL-servern körs med systemctl kommando. Den ska visa statusen active .

    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:

  1. Starta mysql_secure_installation verktyg för att ställa in root-lösenordet och konfigurera andra standardalternativ.

    sudo mysql_secure_installation
    
  2. Applikationen frågar om du vill aktivera VALIDATE PASSWORD COMPONENT komponent. Om du svarar y , frågar den sedan om lösenordsstyrkan ska ställas in på LOW , MEDIUM , eller HIGH .

    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?
  3. 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:
  4. 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 bort test databas. Ange y eller n 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åta root 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
  5. 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!
  6. (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 port 3306 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:

  1. 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 med sudo mysql -u root -p , tillsammans med root lösenord.

    sudo mysql
    
  2. 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>
  3. 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)
  4. Skapa en ny användare med CREATE USER kommando. Ange användarnamnet i formatet 'username'@'IP_Address' , där IP_Address är användarens IP-adress. Om användaren använder MySQL från den lokala Linode, byt ut localhost istället för IP-adressen. I kommandot nedan, ersätt mysqluser och password 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å fall mysql_native_password bör användas istället. MySQL källreplik replikering kan kräva sha256_password metod.
    CREATE USER 'mysqluser'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'password';
    
  5. Bevilja åtkomst till den nya användaren med GRANT PRIVILEGE kommando, med formatet GRANT list of privileges ON table TO 'username'@'IP_Address'; . Några av de vanligaste privilegierna inkluderar CREATE , ALTER , DROP , INSERT , UPDATE , DELETE och SELECT . För att tillämpa dessa privilegier på alla databaser, använd jokerteckenvariabeln *.* . Följande kommando ger vanliga icke-administrativa privilegier på alla databaser till mysqluser .

    GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES, RELOAD ON *.* TO 'mysqluser'@'localhost' WITH GRANT OPTION;
    
  6. 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

  1. För att skapa en databas, logga in på MySQL med ett konto som innehåller CREATE privilegier. Ersätt mysqlusername med användarnamnet du skapade.

    mysql -u mysqlusername -p
    
  2. Skapa en ny databas med CREATE DATABASE kommando. Ersätt newdatabasename med önskat namn för din databas.

    CREATE DATABASE newdatabasename;
    
    Query OK, 1 row affected (0.00 sec)
  3. 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)
  4. Ange vilken databas du vill arbeta med med hjälp av USE kommando. Ersätt newdatabasename 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.
  5. 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 och 2147483647 . Om det anges som UNSIGNED , den kan lagra värden mellan 0 och 4294967295 .
  • SMALLINT: Innehåller ett ännu mindre heltalsvärde mellan -32768 och 32767 .
  • 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 i TIMESTAMP format.
  • VARCHAR(N): Detta är en sträng med variabel längd mellan 1 och N 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 datatypen CHAR(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:

  1. När du är inloggad på MySQL byter du till databasen där du vill lägga till tabellen.

    use newdatabasename;
    
  2. Använd CREATE TABLE kommando för att skapa en ny tabell. Använd formatet CREATE 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)
  3. 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)
  4. 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)
  5. 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.

  1. För att lägga till en rad, använd INSERT kommando. Ange tabellnamnet, nyckelordet VALUES , och en kommaseparerad lista med värden inom parentes i formatet INSERT 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 till newtablename , ange värden för column1 , column2 , column3 och column4 , i den ordningen.

    INSERT INTO newtablename VALUES ('value1','a','2021-09-10',123);
    
    Query OK, 1 row affected (0.01 sec)
  2. 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änd SELECT * 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)
  3. 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är column2 ä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)
  4. 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)
  5. 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 till 155 om column2 är lika med b .

    UPDATE newtablename SET column4 = 155 WHERE column2 = 'b';
    
    Query OK, 1 row affected (0.00 sec)
    Rows matched: 1  Changed: 1  Warnings: 0
  6. 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

  1. Ta bort ett databaspostkonto i SQL Server (T-SQL)

  2. Hur man skapar en MySQL-installation för lokal testning

  3. viloläge orakelsekvens producerar stort gap

  4. Slå ned väggarna! Hur du tar bort dina data