sql >> Database >  >> RDS >> Mysql

MySQL installeren en configureren op Ubuntu 20.04

Ubuntu-gebruikers hebben de keuze tussen twee betrouwbare relationele databasebeheersystemen (RDBMS),MySQL enMariaDB . MySQL heeft al lang een voorsprong in populariteit, maar er is een toegenomen interesse in MariaDB vanwege de prestatievoordelen en toegevoegde functies. Deze handleiding vergelijkt de twee databasesystemen en geeft instructies voor het installeren en gebruiken van MySQL op Ubuntu 20.04.

Wat is MySQL?

De MySQL RDBMS is een van de meest populaire open source-applicaties. Het maakt deel uit van de LAMP-stack , de hoeksteen van veel Ubuntu-systemen. Deze stack bestaat uit Linux, de Apache-webserver, de MySQL RDBMS en de programmeertaal PHP. Deze applicaties werken samen ter ondersteuning van webapplicaties, softwareontwikkeling en gespecialiseerde activiteiten zoals datawetenschap. Het belangrijkste gebruik van MySQL is in kleine tot middelgrote configuraties met één server.

MySQL-query's zijn geschreven in de Structured Query Language (SQL). Als relationele database worden gegevens in tabellen opgeslagen en geordend. Tabellen structureren de feitelijke gegevens in tabellen als een reeks rijen, waarbij elke rij uit een of meer kolommen bestaat. Elke rij vertegenwoordigt een ander item in de tabel, terwijl elke kolom één gegevensveld binnen het item bevat. De gegevensvelden in deze tabellen kunnen aan elkaar worden gerelateerd en deze relaties helpen bij het structureren en organiseren van de database. Met gespecialiseerde SQL-instructies kunnen klanten gegevens toevoegen, verwijderen, wijzigen en ophalen.

MySQL staat bekend om zijn stabiliteit en betrouwbaarheid en wordt als eenvoudig en gebruiksvriendelijk beschouwd. Het is beschikbaar als gratis open source software onder de GNU General Public License. MySQL is direct beschikbaar voor alle Linux-distributies en andere besturingssystemen. Het is nu eigendom van de Oracle Corporation. Oracle biedt ook de commerciële MySQL Enterprise Edition aan als een duurder product.

MySQL versus MariaDB

De twee belangrijkste open source database-alternatieven, MySQL en MariaDB, lijken erg op elkaar. Het zijn beide RDBMS-producten en beide gebruiken SQL. Beide databasesystemen hebben gratis versies en ze zien eruit en werken op vrijwel dezelfde manier. Omdat MariaDB oorspronkelijk is afgetakt van MySQL, is dit niet verwonderlijk. MariaDB is sindsdien verder ontwikkeld en biedt veel nieuwe verbeteringen op het gebied van beveiliging en prestaties. Met MySQL zijn veel geavanceerde functies echter alleen te vinden in de Enterprise Edition. Hier is een samenvatting van de overeenkomsten en verschillen tussen de twee producten:

  • MariaDB ondersteunt meer verbindingen dan MySQL.
  • Beide databases kunnen met meerdere opslagsystemen werken, hoewel MariaDB meer opties biedt.
  • MariaDB kan gegevens sneller repliceren dan MySQL en heeft betere algehele prestaties. MySQL verwerkt grote transacties effectiever, maar MariaDB presteert beter in geschaalde situaties.
  • MySQL ondersteunt sommige functies die MariaDB niet heeft, zoals dynamische kolommen. Elke database heeft een paar geavanceerde functies en verbeteringen die de andere niet heeft.
  • MySQL is ouder, beter ingeburgerd, populairder en heeft meer gemeenschapsondersteuning. MySQL biedt uitgebreidere betaalde ondersteuningsplannen.
  • MariaDB en MySQL zijn volledig compatibel.
  • Beide producten zijn open source, maar het MySQL-licentiemodel is restrictiever.

Om samen te vatten, beide systemen zijn meer dan voldoende voor de meeste gebruikers. MariaDB biedt betere prestaties, terwijl MySQL beter is ingeburgerd en beter wordt ondersteund.

Voordat u begint

  1. Als je dit nog niet hebt gedaan, maak dan een Linode-account en Compute Instance aan. Zie onze handleidingen Aan de slag met Linode en Een rekeninstantie maken.

  2. Volg onze handleiding voor het instellen en beveiligen van een rekeninstantie om uw systeem bij te werken. Mogelijk wilt u ook de tijdzone instellen, uw hostnaam configureren, een beperkt gebruikersaccount maken en SSH-toegang versterken.

Opmerking De stappen in deze handleiding zijn geschreven voor niet-rootgebruikers. Opdrachten die verhoogde bevoegdheden vereisen, worden voorafgegaan door sudo . Als u niet bekend bent met de sudo commando, zie de handleiding voor Linux-gebruikers en -groepen.

Hoe MySQL Server te installeren

MySQL is beschikbaar als onderdeel van de standaard Ubuntu-pakketten, dus het is niet nodig om de bronlijst te bewerken. Het kan eenvoudig worden geïnstalleerd met apt , maar het is belangrijk om de applicatie te beveiligen en daarna de firewall te bewerken. Deze instructies zijn bedoeld voor Ubuntu-gebruikers, maar zijn over het algemeen van toepassing op degenen die MySQL op een andere Linux-distributie willen installeren.

MySQL downloaden

Volg de onderstaande stappen om de MySQL-server op Ubuntu te installeren:

  1. Installeer de MySQL-servertoepassing.

    sudo apt install mysql-server
    
  2. Bevestig dat de MySQL-server actief is met behulp van de systemctl opdracht. Het zou de status active moeten weergeven .

    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

Configureer de MySQL-server op Linux

De mysql_secure_installation hulpprogramma is de gemakkelijkste manier om de toepassing te configureren. Volg deze stappen om het installatiescript te gebruiken:

  1. Start de mysql_secure_installation hulpprogramma om het root-wachtwoord in te stellen en andere standaardopties te configureren.

    sudo mysql_secure_installation
    
  2. De applicatie vraagt ​​of de VALIDATE PASSWORD COMPONENT . moet worden ingeschakeld onderdeel. Als je y . beantwoordt , het vraagt ​​dan of de wachtwoordsterkte moet worden ingesteld op LOW , MEDIUM , of 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. Bij de volgende prompt vraagt ​​het hulpprogramma om een ​​wachtwoord voor het root-account. Stel het wachtwoord in en voer het opnieuw in.

    Please set the password for root here.
    
    New password:
    
    Re-enter new password:
  4. De volgende vragen vragen of anonieme gebruikers moeten worden verwijderd om de root . toe te staan account om op afstand verbinding te maken en om de test . te verwijderen databank. Voer y in of n bij elke prompt volgens uw voorkeuren. De test database is handig tijdens de eerste validatie, maar om veiligheidsredenen is het het beste om de root niet toe te staan account om op afstand in te loggen.

    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. Laad het privilege opnieuw wanneer daarom wordt gevraagd tabellen om de database bij te werken.

    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. (Optioneel ) Om MySQL op afstand te openen, moet u ervoor zorgen dat MySQL-verkeer is toegestaan ​​via de ufw firewall. Voeg de volgende regel toe om poort 3306 te openen op de firewall. Deze regel mag niet worden toegevoegd als toegang op afstand niet vereist is.

    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 in op MySQL als de rootgebruiker

Hoewel de root gebruiker volledige toegang heeft tot de MySQL-database, moet het gebruik ervan worden gereserveerd voor administratieve doeleinden. Dit verkleint de kans dat kritieke delen van de database per ongeluk worden overschreven. Zelfs in een configuratie voor één gebruiker moet voor de meeste MySQL-activiteiten een apart gebruikersaccount worden aangemaakt.

Toegang krijgen tot de MySQL-server als de root gebruiker en maak een nieuwe gebruikersaccount, volg deze stappen:

  1. Gebruik de sudo mysql commando om toegang te krijgen tot de database. MySQL verifieert de root-gebruiker op basis van zijn root-referenties wanneer hij lokaal inlogt, dus er is geen wachtwoord vereist. U kunt ook toegang krijgen tot het root-account met sudo mysql -u root -p , samen met de root wachtwoord.

    sudo mysql
    
  2. MySQL geeft het releasenummer en wat informatie over de installatie weer en geeft vervolgens de MySQL-prompt weer.

    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. Om te bevestigen dat MySQL correct werkt, gebruikt u de SHOW DATABASES commando om alle databases weer te geven.

    SHOW DATABASES;
    
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    | sys                |
    +--------------------+
    4 rows in set (0.01 sec)
  4. Maak een nieuwe gebruiker aan met de CREATE USER opdracht. Voer de gebruikersnaam in het formaat 'username'@'IP_Address' , waar IP_Address is het IP-adres van de gebruiker. Als de gebruiker MySQL opent vanuit de lokale Linode, vervangt u localhost in plaats van het IP-adres. Vervang in de onderstaande opdracht mysqluser en password met de daadwerkelijke gebruikersnaam en wachtwoord.

    Opmerking MySQL biedt verschillende authenticatiemechanismen. Het caching_sha2_password methode wordt aanbevolen voor gebruikers die willen inloggen met een wachtwoord en wordt hier gebruikt. Het is echter mogelijk dat bepaalde oudere toepassingen op deze manier niet correct kunnen worden geverifieerd. In dat geval mysql_native_password in plaats daarvan moet worden gebruikt. MySQL-bronreplica-replicatie vereist mogelijk het sha256_password methode.
    CREATE USER 'mysqluser'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'password';
    
  5. Verleen toegang aan de nieuwe gebruiker met behulp van de GRANT PRIVILEGE commando, gebruik makend van het formaat GRANT list of privileges ON table TO 'username'@'IP_Address'; . Enkele van de meest voorkomende privileges zijn CREATE , ALTER , DROP , INSERT , UPDATE , DELETE , en SELECT . Gebruik de wildcard-variabele *.* . om deze privileges toe te passen op alle databases . De volgende opdracht verleent algemene niet-beheerdersrechten op alle databases aan mysqluser .

    GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES, RELOAD ON *.* TO 'mysqluser'@'localhost' WITH GRANT OPTION;
    
  6. Om de MySQL-prompt af te sluiten, typt u exit .

    exit
    

MySQL gebruiken

MySQL gebruikt standaard SQL-syntaxis voor al zijn opdrachten. De stappen in deze sectie laten zien hoe u basistaken in MySQL kunt uitvoeren, zoals het maken van databases, tabellen en het toevoegen van gegevens. Zie de MySQL Reference Manual voor volledige informatie over het gebruik van MySQL. Probeer de MySQL-zelfstudie voor een korte maar grondige introductie.

Maak een database

  1. Om een ​​database aan te maken, logt u in op MySQL met een account met CREATE voorrechten. Vervang mysqlusername met de gebruikersnaam die je hebt gemaakt.

    mysql -u mysqlusername -p
    
  2. Maak een nieuwe database met behulp van de CREATE DATABASE opdracht. Vervang newdatabasename met de gewenste naam voor uw database.

    CREATE DATABASE newdatabasename;
    
    Query OK, 1 row affected (0.00 sec)
  3. Om te bevestigen dat de nieuwe database correct is aangemaakt, gebruikt u SHOW DATABASES .

    SHOW DATABASES;
    
    +--------------------+
    | Database           |
    +--------------------+
    ...
    | newdatabasename   |
    ...
    +--------------------+
    5 rows in set (0.00 sec)
  4. Geef de database aan waarmee u wilt werken met behulp van de USE opdracht. Vervang newdatabasename met de naam voor de database die u zojuist hebt gemaakt.

    USE newdatabasename;
    
    Database changed
    Opmerking U kunt ook de USE . gebruiken commando als je meer dan één database hebt en je wilt ertussen schakelen.
  5. Om de naam van de huidige database te achterhalen, gebruikt u de SELECT DATABASE opdracht. De uitvoer toont de databasenaam.

    SELECT DATABASE();
    
    +------------------+
    | DATABASE()       |
    +------------------+
    | newdatabasename |
    +------------------+

Maak een tabel

Op dit punt is de database, newdatabasename heeft geen tabellen, dus het is nog niet mogelijk om er gegevens in op te slaan. Om een ​​tabel te definiëren, gebruik de CREATE TABLE opdracht. Naast de naam van de tabel vereist deze opdracht de naam en het gegevenstype van elk veld. Het gegevenstype kenmerkt de gegevens die in het veld zijn opgeslagen. Het gegevenstype kan bijvoorbeeld een tekenreeks met variabele lengte zijn, bekend als een VARCHAR . Raadpleeg de MySQL-documentatie voor een volledige lijst met gegevenstypen. Enkele van de meest voorkomende gegevenstypen zijn als volgt.

  • INT: Dit kan een waarde tussen -2147483648 . bevatten en 2147483647 . Indien gespecificeerd als UNSIGNED , het kan waarden opslaan tussen 0 en 4294967295 .
  • KLEIN: Bevat een nog kleiner geheel getal tussen -32768 en 32767 .
  • FLOAT: Dit type kan een getal met drijvende komma opslaan.
  • DATUM: Slaat een datum op in YYYY-MM-DD formaat.
  • DATETIME: Slaat een datum- en tijdcombinatie op in YYYY-MM-DD HH:MM:SS formaat. Dezelfde tijd kan worden opgeslagen zonder streepjes en dubbele punten in de TIMESTAMP formaat.
  • VARCHAR(N): Dit is een string met variabele lengte tussen 1 en N tekens lang, met een maximale lengte van 255 tekens.
  • TEKST: Dit gegevenstype kan maximaal 65535 . bevatten karakters. Het kan tekst, afbeeldingen of binaire gegevens bevatten.
  • CHAR(N): Dit type vertegenwoordigt een tekstveld van vaste lengte met de lengte N . Als u bijvoorbeeld statuscodes van twee tekens wilt bevatten, gebruikt u het gegevenstype CHAR(2) .

Voordat u tabellen maakt, is het belangrijk om een ​​schema te kiezen voor de databank. Het schema beschrijft wat elke tabel vertegenwoordigt, welke gegevens in elke tabel zijn opgeslagen en hoe de tabellen zich verhouden. Volg deze stappen om een ​​tabel te maken:

  1. Terwijl u bent aangemeld bij MySQL, schakelt u over naar de database waaraan u de tabel wilt toevoegen.

    use newdatabasename;
    
  2. Gebruik de CREATE TABLE commando om een ​​nieuwe tabel te genereren. Gebruik het formaat 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. Om te bevestigen dat de tabel nu bestaat, gebruikt u de SHOW TABLES commando.

    SHOW TABLES;
    
    +----------------------------+
    | Tables_in_newdatabasename |
    +----------------------------+
    | newtablename              |
    +----------------------------+
    1 row in set (0.00 sec)
  4. Om de tabelstructuur te bekijken en de lijst met velden te controleren, gebruikt u de DESCRIBE commando.

    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. Als een tabel niet langer nodig is, verwijder deze dan met de DROP TABLE commando.

    Let op Wanneer een tabel wordt verwijderd, gaan alle gegevens in de tabel verloren en kunnen deze niet worden hersteld.
    DROP TABLE newtablename;
    

Gegevens toevoegen en ophalen

De belangrijkste manier om een ​​nieuwe rij gegevens in een tabel in te voegen is met de INSERT commando.

  1. Gebruik de INSERT . om een ​​rij toe te voegen opdracht. Geef de tabelnaam op, het trefwoord VALUES , en een door komma's gescheiden lijst met waarden in de indeling INSERT INTO tablename VALUES ('value_1', ... 'value_n'); . De kolomwaarden moeten dezelfde volgorde hebben als de tabeldefinitie, met de tekenreeks- en datumwaarden tussen aanhalingstekens. Om bijvoorbeeld gegevens toe te voegen aan newtablename , geef waarden op voor column1 , column2 , column3 , en column4 , in die volgorde.

    INSERT INTO newtablename VALUES ('value1','a','2021-09-10',123);
    
    Query OK, 1 row affected (0.01 sec)
  2. Gebruik de SELECT . om gegevens op te halen commando, samen met enkele beperkingen die MySQL vertellen welke rijen moeten worden geretourneerd. De volledige inhoud van de tabel kan worden geretourneerd, of alleen een subset. Om alle rijen in een tabel te selecteren, gebruikt u de SELECT * commando, maar voeg geen kwalificaties toe.

    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. Het is ook mogelijk om alleen rijen te selecteren die aan bepaalde criteria voldoen, bijvoorbeeld wanneer een kolom op een bepaalde waarde is ingesteld. Gebruik de WHERE zoekwoord als kwalificatie, gevolgd door de overeenkomstcriteria als beperking. In dit voorbeeld alleen rijen waarin column2 is ingesteld op b worden weergegeven.

    SELECT * FROM newtablename WHERE column2 = 'b';
    
    +---------+---------+------------+---------+
    | column1 | column2 | column3    | column4 |
    +---------+---------+------------+---------+
    | value2  | b       | 2021-09-08 |     123 |
    +---------+---------+------------+---------+
    1 row in set (0.00 sec)
  4. Voor tabellen met veel kolommen is het vaak makkelijker om de weergegeven informatie te beperken. Om alleen bepaalde kolommen voor elke rij te selecteren, specificeert u de kolomnamen in plaats van de * symbool.

    SELECT column1, column4 FROM newtablename;
    
    +---------+---------+
    | column1 | column4 |
    +---------+---------+
    | value1  |     123 |
    | value2  |     123 |
    +---------+---------+
    2 rows in set (0.00 sec)
  5. Om een ​​rij in een tabel te wijzigen, gebruikt u de UPDATE opdracht. De SET trefwoord geeft de kolom aan die moet worden bijgewerkt en de nieuwe waarde. Indien nodig, de WHERE trefwoord biedt een methode om de bewerking te beperken tot alleen bepaalde rijen. In het volgende voorbeeld is de waarde van column4 is alleen gewijzigd in 155 if column2 is gelijk aan 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. De SELECT * verklaring kan worden gebruikt om de update te bevestigen.

    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)

Conclusie:MySQL op Ubuntu 20.04

MySQL is een goede keuze voor kleine tot middelgrote webapplicaties. Het maakt gebruik van de industriestandaard SQL-programmeertaal, die vrij eenvoudig te gebruiken is. MySQL is zeer stabiel en robuust en heeft veel bronnen en goede ondersteuning. Het belangrijkste alternatief voor MySQL is MariaDB. Het biedt betere prestaties en nieuwere functies, maar is niet zo goed ingeburgerd.

U kunt de MySQL-server eenvoudig downloaden en installeren op Ubuntu met behulp van de apt pakketten en de mysql_secure_installation nut. Zelfs als u de enige persoon bent die MySQL gebruikt, kunt u het beste een nieuwe MySQL-gebruiker maken met beperktere rechten.

Om MySQL te gebruiken, bepaalt u eerst het databaseschema en definieert u de tabelinhoud. Maak vervolgens een database en de datatabellen. Gegevens kunnen worden toegevoegd met behulp van de INSERT commando, aangepast met de UPDATE commando, en opgehaald met de SELECT opdracht. Natuurlijk kan MySQL zelfs zeer complexe bewerkingen uitvoeren. Doorloop de MySQL-tutorial om aan de slag te gaan en raadpleeg de MySQL-documentatie voor een volledig overzicht.

Meer informatie

U kunt de volgende bronnen raadplegen voor aanvullende informatie over dit onderwerp. Hoewel deze worden verstrekt in de hoop dat ze nuttig zullen zijn, houd er rekening mee dat we niet kunnen instaan ​​voor de nauwkeurigheid of tijdigheid van extern gehost materiaal.

  • MariaDB-website
  • MySQL-website

  1. Pivot-operator in SQL begrijpen

  2. Hoe SHOW COLLATION werkt in MariaDB

  3. Retourneer een lijst met tijdzones die worden ondersteund door PostgreSQL

  4. Bekijk het laatste nieuws over Microsoft Access, inclusief Access 2022!