sql >> Database teknologi >  >> RDS >> Mysql

Installation og konfiguration af MySQL på Ubuntu 20.04

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

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

  2. 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 med sudo . Hvis du ikke er bekendt med sudo 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:

  1. Installer MySQL-serverapplikationen.

    sudo apt install mysql-server
     
  2. Bekræft, at MySQL-serveren kører ved hjælp af systemctl kommando. Den skulle vise statussen 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 

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:

  1. Start mysql_secure_installation værktøj til at indstille root-adgangskoden og konfigurere andre standardindstillinger.

    sudo mysql_secure_installation
     
  2. Applikationen spørger, om du vil aktivere VALIDATE PASSWORD COMPONENT komponent. Hvis du svarer y , spørger den derefter, om adgangskodens styrke skal indstilles til 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. 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: 
  4. Følgende spørgsmål spørger, om anonyme brugere skal fjernes for at tillade root konto for at forbinde eksternt og fjerne test database. Indtast y eller n 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 afvise root 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 
  5. 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! 
  6. (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 port 3306 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:

  1. 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 bruge sudo mysql -u root -p , sammen med root adgangskode.

    sudo mysql
     
  2. 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> 
  3. 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)
  4. Opret en ny bruger ved hjælp af CREATE USER kommando. Indtast brugernavnet i formatet 'username'@'IP_Address' , hvor IP_Address er brugerens IP-adresse. Hvis brugeren har adgang til MySQL fra den lokale Linode, skal du erstatte localhost i stedet for IP-adressen. I kommandoen nedenfor skal du erstatte mysqluser og password 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 muligvis sha256_password metode.
    CREATE USER 'mysqluser'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'password';
     
  5. Giv adgang til den nye bruger ved at bruge GRANT PRIVILEGE kommando, ved hjælp af formatet GRANT list of privileges ON table TO 'username'@'IP_Address'; . Nogle af de mere almindelige privilegier inkluderer CREATE , ALTER , DROP , INSERT , UPDATE , DELETE og SELECT . For at anvende disse privilegier til alle databaser, brug jokertegnvariablen *.* . Følgende kommando giver almindelige ikke-administrative rettigheder på alle databaser til mysqluser .

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

  1. For at oprette en database skal du logge ind på MySQL med en konto med CREATE privilegier. Erstat mysqlusername med det brugernavn, du har oprettet.

    mysql -u mysqlusername -p
     
  2. Opret en ny database ved hjælp af CREATE DATABASE kommando. Erstat newdatabasename med det ønskede navn til din database.

    CREATE DATABASE newdatabasename;
     
    Query OK, 1 row affected (0.00 sec) 
  3. 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)
  4. Angiv den database, du vil arbejde med ved hjælp af USE kommando. Erstat newdatabasename 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.
  5. 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 og 2147483647 . Hvis angivet som UNSIGNED , den kan gemme værdier mellem 0 og 4294967295 .
  • SMALLINT: Indeholder en endnu mindre heltalsværdi mellem -32768 og 32767 .
  • 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 i TIMESTAMP format.
  • VARCHAR(N): Dette er en streng med variabel længde mellem 1 og N 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 datatype CHAR(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:

  1. Mens du er logget på MySQL, skal du skifte til den database, hvor du vil tilføje tabellen.

    use newdatabasename;
     
  2. Brug CREATE TABLE kommando for at generere en ny tabel. Brug 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. 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)
  4. 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)
  5. 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.

  1. For at tilføje en række skal du bruge INSERT kommando. Angiv tabelnavnet, søgeordet VALUES , og en parentes, kommasepareret liste over værdier i formatet INSERT 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 til newtablename , angiv værdier for column1 , column2 , column3 og column4 , i nævnte rækkefølge.

    INSERT INTO newtablename VALUES ('value1','a','2021-09-10',123);
     
    Query OK, 1 row affected (0.01 sec) 
  2. 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, brug SELECT * 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)
  3. 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, hvor column2 er indstillet til b vises.

    SELECT * FROM newtablename WHERE column2 = 'b';
     
    +---------+---------+------------+---------+ | column1 | column2 | column3 | column4 | +---------+---------+------------+---------+ | value2 | b | 2021-09-08 | 123 | +---------+---------+------------+---------+ 1 row in set (0.00 sec)
  4. 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)
  5. 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 til 155 hvis column2 er lig 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 * 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

  1. PostgreSQL tilbagekalder tilladelser fra pg_catalog-tabeller

  2. Give privilegier på fremtidige borde i PostgreSQL?

  3. Find afstanden mellem to punkter ved hjælp af bredde- og længdegrad i mysql

  4. GROUP_CONCAT() Funktion i MySQL