In deze blogpost laten we u een stapsgewijze handleiding zien voor het installeren en instellen van een MySQL-server, zowel handmatig op het Ubuntu 20.04-besturingssysteem als met behulp van de beheerde databaseservice van ScaleGrid. In de volgende secties van deze zelfstudie helpen we u bij elke stap om uw eigen MySQL-server met succes in te stellen en correct te configureren.
Een beetje over MySQL en Ubuntu
MySQL is een open-source relationeel databasebeheersysteem (DBMS). Het draait op Windows- en Linux-servers en wordt gewoonlijk geïnstalleerd als onderdeel van de LAMP-stack (Linux, Apache, MySQL, PHP/Python/Perl) of de LEMP-stack (Linux, Nginx, MySQL, PHP). Het is een geschikte keuze als je weet dat je gewoon een database nodig hebt, aangezien het een snel, eenvoudig en schaalbaar op SQL gebaseerd systeem is en wordt beschouwd als het meest populaire relationele databasebeheersysteem.
Hoewel Ubuntu een van 's werelds populairste open-source desktop-besturingssystemen is, wordt Ubuntu 20.04 geleverd met enterprise-class stabiliteit, veerkracht en zelfs betere beveiliging in een kosteneffectief model.
Hoe installeer ik MySQL op Ubuntu 20.04
Voordat we ingaan op het proces om een MySQL-server op Ubuntu te installeren, moet u rekening houden met deze vereisten:
- Een Ubuntu 20.04-server met een niet-rootbeheerder of sudo-gebruiker om de gezaghebbende stappen uit te voeren en een UFW-geconfigureerde firewall
- Het systeem moet worden bijgewerkt met:
sudo apt update
sudo apt upgrade -y
- Een stabiele netwerkverbinding
Nieuwe installatie van MySQL op Ubuntu 20.04
Installeer MySQL
Om MySQL op Ubuntu 20.04 te installeren, kan een eenvoudige opdracht (apt install mysql-server) worden uitgevoerd, aangezien het installatiepakket deel uitmaakt van de officiële Ubuntu 20.04-repository.
apt install mysql-server -y
De installatie van de MySQL-server beveiligen
MySQL-server heeft een vooraf gebouwd script voor een veilige installatie. Als een gebruikelijke praktijk om dit een veilige installatie te maken, voert u dit script uit na de installatieopdracht. Wat het doet, is dat de gebruiker het root-wachtwoord voor MySQL kan instellen, de toegankelijkheid van het root-account van buiten de lokale host kan uitschakelen, anonieme gebruikersaccounts kan verwijderen en ook de testdatabase kan verwijderen die toegankelijk is voor anonieme gebruikers. Dit script kan worden aangeroepen met deze sudo
commando:
sudo mysql_secure_installation
Er verschijnt een reeks prompts na het uitvoeren van het beveiligde installatiescript. De eerste prompt is om VALIDATE PASSWORD COMPONENT
in te stellen . Deze prompt (indien geselecteerd) voert validatie uit bij het aanmaken van het wachtwoord van de gebruiker. U kunt het wachtwoord alleen maken als het overeenkomt met de wachtwoordstandaarden op MySQL.
Het root-wachtwoord instellen
De volgende prompt is voor het instellen van het wachtwoord voor root. De gebruiker moet dit wachtwoord instellen. Beantwoord alle volgende prompts met "Ja", aangezien dit een best practice is vanuit beveiligingsperspectief.
SSL instellen voor de MySQL-serverinstallatie
Er zijn momenten dat na het installeren van MySQL de databaseserver is geconfigureerd op een afzonderlijke fysieke machine op hetzelfde of een ander netwerk. Om met zo'n database te kunnen communiceren, moet de communicatie beveiligd en versleuteld zijn. Daarom moeten SSL-certificaten op de databaseserver zijn geïnstalleerd en ingeschakeld. Het SSL-protocol gebruikt een paar sleutels om beveiligde verbindingen te verifiëren, te beveiligen en te beheren. Gebruik de volgende opdracht om SSL-sleutels te genereren:
sudo mysql_ssl_rsa_setup --uid=mysql
Hun standaardmap bevat deze sleutels en u kunt ze vinden door het volgende commando uit te voeren:
sudo sudo find /var/lib/mysql -name '*.pem' -ls
mysql> \s
Door de bovenstaande opdracht vanuit de SQL-prompt aan te roepen, kunt u bevestigen dat SSL actief is door te zoeken naar de rij met de tekst SSL: Cipher in use is […]
, zoals te zien in de onderstaande afbeelding.
Uw database beveiligen
Databasebeveiliging is een van de meest kritische elementen waarmee u rekening moet houden bij het plannen van de installatie van MySQL. Aanvallers zijn altijd op zoek naar manieren om via een achterdeur toegang te krijgen tot databasesystemen en om voorkennis over het doelwit te verkrijgen. Het wijzigen van de standaardpoort is een gemakkelijke manier om de beveiliging van uw database te vergroten. Dit kan worden gewijzigd in het configuratiebestand op /etc/mysql/mysql.conf.d/mysqld.cnf
.
Maak een MySQL-gebruiker en database
Door deze eenvoudige opdracht te gebruiken, kunt u een MySQL-databasegebruikersaccount maken samen met het wachtwoord:
CREATE USER 'Username' @ 'localhost' IDENTIFIED BY 'StrongPassword';
Het veld localhost
in de CREATE USER
commando geeft aan dat de gebruiker verbinding zal maken vanaf dezelfde server. Het kan worden vervangen door een IP-adres als u verbinding wilt maken vanaf een machine met een specifiek IP-adres, of het kan worden vervangen door een procentteken %
als de gebruiker overal toegang wil hebben tot de database.
Als u alleen een database wilt maken, kunt u deze maken met de volgende opdracht:
CREATE DATABASE databasename;
Nadat u de gebruiker en de database hebt gemaakt, krijgt de gebruiker de vereiste machtigingen voor de database.
Machtigingen kunnen van elk type zijn; bijvoorbeeld CREATE
, ALTER
, INSERT
, UPDATE
, DELETE
, SELECT
, RELOAD
, enz. Gewoonlijk heeft de eigenaar van de database alle machtigingen nodig en deze machtigingen kunnen onafhankelijk aan een gebruiker worden toegewezen. Al deze machtigingen kunnen in één keer worden verleend door het commando te gebruiken.
GRANT ALL PRIVILEGES ON databasename.tablename TO 'username' @ 'localhost';
Nogmaals, het localhost-sleutelwoord kan worden vervangen door een IP-adres of door de %
teken, als de gebruiker van plan is verbinding te maken vanaf een specifiek IP-adres of een andere bron.
Bevoegdheden voor een gebruiker kunnen worden bekeken via het SHOW GRANTS-commando
SHOW GRANTS for 'databaseuser'@'localhost';
Alle privileges kunnen voor een gebruiker worden ingetrokken met het commando:
REVOKE ALL PRIVILEGES ON database.name.* FROM 'database.user'@'localhost';
Hier kun je zien dat na het uitvoeren van de REVOKE
commando, zijn er geen privileges voor de gebruiker jason
.
Tabellen maken en verwijderen
Het is eenvoudig om tabellen toe te voegen aan of te verwijderen uit uw database. Het enige dat u hoeft te doen, is een van de volgende opdrachten gebruiken:
DROP TABLE databasename.tablename
CREATE TABLE databasename.tablename ( column1 datatype,column2 datatype ,column3 datatype);
De kolomparameter specificeert de naam, terwijl de datatypeparameter specificeert welk type gegevens de kolom bevat.
Er zijn momenten waarop een primaire sleutel aan een kolom moet worden toegevoegd. Met een primaire sleutel kunt u elk item in uw tabel op unieke wijze identificeren. Dit kan door het te vermelden in de CREATE TABLE
opdracht. Het onderstaande voorbeeld maakt een kolom user_id
met een primaire sleutel die automatisch wordt verhoogd. Houd er rekening mee dat de primaire sleutel unieke waarden moet bevatten en geen null-waarden mag bevatten
Kolommen in een tabel toevoegen of verwijderen
Kolommen kunnen ook worden toegevoegd aan of verwijderd uit een specifieke tabel van een database nadat deze is gemaakt.
Om dat te doen, wijzigt u de database die u wilt wijzigen met behulp van de use database_name
commando.
Vervolgens zullen de volgende commando's een kolom toevoegen en neerzetten:
ALTER TABLE tablename ADD columnname datatype;
ALTER TABLE tablename DROP columnname;
Gegevens in een tabel invoegen
Voeg gegevens in een tabel in met behulp van de volgende opdracht:
INSERT INTO tablename (column1,column2,column3) VALUES ('value1','value2','value3' );
U moet de kolomnamen en de waarde die in elke kolom moet worden ingevoegd, op volgorde opgeven. Als u waarden in elke kolom van een tabel wilt invoegen, kunt u eenvoudig de kolommen weglaten en de waarden direct na de tabelnaam beginnen op te geven:
INSERT INTO tablename VALUES ('value1','value2','value3' );
Update Data in a Table
Gebruik de volgende opdracht om de gegevens in een tabel bij te werken:
UPDATE tablename SET columnname= 'newvalue' WHERE columnname='value'
De WHERE
voorwaarde vertelt in welke rij de gegevens moeten worden bijgewerkt. Als de voorwaarde niet is opgegeven, worden de gegevens in alle rijen van de opgegeven kolom bijgewerkt.
Selecteer gegevens uit een tabel
Gebruik de volgende opdracht om gegevens uit bepaalde kolommen in een tabel te selecteren en te bekijken:
SELECT column1,column2 FROM tablename;
Om echter alle kolommen uit een tabel te selecteren, is de gebruikte opdracht:
SELECT * FROM tablename;
Binaire logboekregistratie inschakelen
Door binaire logboekregistratie in de MySQL-databaseserver in te schakelen, kunt u de query's registreren die wijzigingen in de database hebben aangebracht. Binaire logboekregistratie is een handige functie om te hebben ingeschakeld als u bijvoorbeeld een probleem moet oplossen dat wordt veroorzaakt door een query in de database.
Om binaire logboekregistratie in te schakelen, voegt u de volgende regel toe aan het configuratiebestand op /etc/mysql/mysql.conf.d/mysqld.cnf
.
log-bin=mysql-bin.log
Om te bevestigen of de binaire logging actief is, roept u de volgende opdracht op vanuit de MySQL-shell:
show variables like '% log_bin%'
Standaard worden binaire logbestanden opgeslagen in de /var/lib/mysql
directory in de meeste Linux-distributies, inclusief Ubuntu.
Eenvoudige asynchrone replicatie instellen
MySQL biedt ondersteuning voor replicatie, wat handig is bij het plannen van noodherstel en om ervoor te zorgen dat u de kans op downtime minimaliseert. MySQL ondersteunt twee soorten replicaties:
- Semi-synchrone replicatie
- Asynchrone replicatie
Met semi-synchrone replicatie, wanneer een bron een transactie vastlegt, zullen alle replica's de transactie ook hebben vastgelegd voordat de bron terugkeert naar de sessie die de transactie heeft uitgevoerd. Het nadeel is dat het een grote vertraging veroorzaakt bij het voltooien van de transactie vanwege het bovengenoemde transactiesysteem.
Terwijl bij asynchrone replicatie de bron gebeurtenissen naar zijn binaire logboek schrijft en replica's deze opvragen wanneer ze klaar zijn. Er is echter geen garantie dat een evenement ooit een replica zal bereiken.
Standaard heeft MySQL asynchrone replicatie ingeschakeld vanwege de snelle verwerkingstijd. Toch is het grootste nadeel dat als de brondatabase faalt, er geen manier is om gegevens op te halen die de transacties niet hebben voltooid om DB's te replicaten. Aan de andere kant richt de semi-synchrone replicatiemodus zich meer op de beschikbaarheid en duurzaamheid van gegevens, maar is deze erg traag. Het kiezen van een replicatiemodus hangt uitsluitend af van gebruikersspecifieke behoeften rond hun databaseconfiguratie.
In het my.cnf-bestand voor de bronserver en de replicaserver kunt u de server-ID's respectievelijk schrijven als:
server_id=1
server_id=2
Er kan een speciale MySQL-gebruiker worden gemaakt op de bronserver, die door de replica zal worden gebruikt om verbinding te maken met de bronserver.
GRANT REPLICATION SLAVE ON *.* TO ‘masterusername’ @ 'ipaddress of slave server' → IDENTIFIED BY ‘masterpassword’;
Het replicatieproces op de replicaserver kan worden gestart door:
mysql> CHANGE MASTER TO -> MASTER_HOST='ip address', -> MASTER_PORT=port number, -> MASTER_USER='username', -> MASTER_PASSWORD='password', -> MASTER_LOG_FILE='', -> MASTER_LOG_POS=4; mysql> start slave;
Deze instructies beginnen met het maken van de replicaserver als een kopie van de bronserver.
Back-up/herstel van een MySQL-database
Het is altijd een goed idee om een back-up van uw database te maken, u weet nooit wanneer u deze nodig heeft om ervoor te zorgen dat kritieke gegevens niet verloren gaan. Om een back-up te maken van een database voor MySQL op Ubuntu OS, voert u gewoon de volgende mysqldump
uit commando:
sudo mysqldump -u root -p <database.name> > <filename.sql>
Om een verwijderde database te herstellen, wordt de database eerst met dezelfde naam aangemaakt in MySQL. De database wordt dan hersteld met het commando:
sudo mysql -u root -p <database.name> < <filename.sql>
De volgende schermafbeelding verwijdert eerst onze test_database, maakt deze vervolgens opnieuw en probeert alle gegevens te herstellen van de eerder gemaakte back-up. Het importeren van gegevens kan ook worden gedaan door hetzelfde proces te volgen.
Afronding van de installatie van MySQL op Ubuntu
U hebt nu met succes de basisstappen voltooid om MySQL op Ubuntu 20.04 te installeren. Na het voltooien van de installatie heeft u een operationele relationele database die u kunt gebruiken om uw volgende applicatie of website te bouwen.
Als u dit hele proces liever geautomatiseerd en beheerd door experts wilt hebben, bekijk dan het volgende deel van deze handleiding.
ScaleGrid gebruiken om uw DigitalOcean MySQL-implementatie in te stellen
In dit deel van de handleiding gebruiken we onze volledig beheerde MySQL-hostingoplossing, omdat deze de hoogste doorvoer en laagste latentie biedt op DigitalOcean. Lees meer in het artikel Best MySQL DigitalOcean Performance om de prijzen, latentie en doorvoerprestaties van ScaleGrid en DigitalOcean Managed Databases te vergelijken.
Het hele proces duurt minder dan 20 minuten, met slechts een paar minuten aan het begin om uw MySQL-implementatieconfiguratie aan te passen en een paar minuten aan het einde om verbinding te maken met uw toepassing .
Nadat u zich heeft aangemeld voor een gratis proefaccount, is het eerste wat u doet MySQL selecteren als uw database, DigitalOcean als uw cloud en Dedicated Hosting als uw plan om de proces voor het maken van clusters:
Stap 1. Voer MySQL-implementatiegegevens in
De wizard voor het maken van clusters wordt geopend bij de eerste stap waarin u de basisdetails van uw implementatie kunt aanpassen. Voer een naam in voor uw cluster met behulp van alfanumerieke tekens en gebruik een unieke, beschrijvende naam zodat u uw cluster later gemakkelijk kunt herkennen.
Selecteer vervolgens het DigitalOcean-datacenter dat u voor uw masterserver wilt gebruiken in de vervolgkeuzelijst voor cloudregio's - we raden u aan dezelfde regio te gebruiken als uw toepassingen DigitalOcean Droplets voor het beste uitvoering. Vervolgens kunt u uw VM-grootte van DigitalOcean Droplet-instanties selecteren en de versie van MySQL die u wilt gebruiken (alle belangrijke versies worden ondersteund). InnoDB Storage Engine is de standaard voor alle MySQL-implementaties. Klik op volgende.
Stap 2. Master-Slave-replicatie inschakelen
In stap 2 kunt u DigitalOcean MySQL master-slave-replicatie inschakelen om hoge beschikbaarheid aan uw implementatie toe te voegen. Replicatie is belangrijk om uw applicatie beschikbaar en online te houden voor uw gebruikers in het geval dat uw DigitalOcean-datacenterregio uitvalt. Hoewel DigitalOcean een zeer betrouwbare cloudprovider is met 99,99% uptime, gaan datacenters onvermijdelijk uit de lucht, dus door uw gegevens te repliceren naar andere datacenterlocaties kunt u het risico op gegevensverlies en downtime voor uw gebruikers minimaliseren.
Als u door wilt gaan met een zelfstandige implementatie, klikt u op Volgende om naar stap 3 te gaan zonder master-slave-configuratie in te schakelen.
Opmerking – master-slave-configuratie is alleen beschikbaar voor betaalde accounts. U kunt geen replicaset-implementatie instellen terwijl u zich in de proefmodus bevindt.
Configureer de MySQL Master-Slave-configuratie
Er zijn hier een aantal opties om je MySQL master-slave-configuratie aan te passen. Ten eerste kunt u kiezen tussen 2 + 1 Quorum of 3 nodes voor uw implementatie. Beide bieden hoge beschikbaarheid, maar in de 2 + 1 Quorum-configuratie heb je slechts 2 gegevensdragende knooppunten, aangezien het Quorum-knooppunt dient als beslisser in een failover-gebeurtenis. U kunt ook contact opnemen met ondersteuning om uw master-slave-configuratie aan te passen om meer knooppunten aan uw implementatie toe te voegen.
Vervolgens kun je kiezen tussen semisynchrone en asynchrone replicatie. Semisynchrone replicatie garandeert dat ten minste één slave alle gegevens heeft ontvangen die de master heeft vastgelegd, zodat de failover naar de juiste slave verliesvrij is. Bij asynchrone replicatie synchroniseert elke slave asynchroon met de master, dus een failover van master naar slave kan resulteren in een failover naar een server die niet volledig is gesynchroniseerd met de huidige master.
Pas ten slotte de DigitalOcean-datacenterlocaties aan die u voor uw slave-knooppunten wilt gebruiken. Als je klaar bent, klik je op volgende.
MySQL instellen op DigitalOceanClick To Tweet
Stap 3. SSL inschakelen
In stap 3 kunt u SSL inschakelen voor uw implementatie. Standaard installeert de MySQL-server altijd SSL-configuratie en schakelt deze in, maar het wordt niet afgedwongen dat clients verbinding maken via SSL. Klanten kunnen ervoor kiezen om verbinding te maken met of zonder SSL, aangezien de server beide soorten verbindingen toestaat. Leer meer over het configureren en beheren van SSL in deze MySQL-zelfstudie.
Stap 4. Firewalls configureren
Voer in de laatste stap van het proces voor het maken van clusters ten minste één IP-CIDR in die toegang krijgt tot uw MySQL-implementatie om uw firewallregel in te stellen. Je huidige IP CIDR vind je bovenaan de pagina. Deze kunnen later zowel op clusterniveau als op accountniveau worden aangepast. Nadat u het hebt ingevoerd, klikt u op Toevoegen. Voer alle gewenste IP-CIDR's in en klik op volgende.
Stap 5. Reviewen en maken
De laatste pagina geeft een korte samenvatting van uw nieuwe MySQL DigitalOcean-cluster. Bekijk alle details en klik op de knop Vorige om terug te gaan naar een eerdere stap en uw configuraties aan te passen. Als u klaar bent, klikt u op Maken om uw cluster op te starten.
En dat is alles! Uw implementatie wordt nu ingericht! Dit duurt ongeveer 15 minuten, dus terwijl u wacht, kunt u vertrouwd raken met de beheertools voor MySQL in de console - back-ups, herstel, schalen, waarschuwingen, query-analyse, enz.
Verbinden en migreren
Zodra de clusterstatus verandert van 'Aanmaken' in 'Uitvoeren', kunt u verbinding maken met uw implementatie. Er zijn een aantal verschillende manieren om dit te doen:via uw verbindingsreeks naar uw app, via de opdrachtregel, via WordPress, via MySQL Workbench of andere populaire GUI-tools. Al uw verbindingsdetails zijn beschikbaar in de onderste helft van het tabblad Overzicht van de pagina met clusterdetails.
Bezoek de bovenste tabbladen om een MySQL-database te maken en een MySQL-databasegebruiker aan te maken. Deze kunnen op elk moment worden geopend en beheerd vanuit de ScaleGrid-console.
Migreer uw bestaande MySQL-installatie in enkele minuten
Migreren is ook een geautomatiseerd proces dat slechts een paar details van uw bestaande implementatie vereist. Klik op de knop Gegevens importeren op het tabblad Overzicht en voer uw servernaam, poort, databasenaam(en), gebruikersnaam en wachtwoord in. Bekijk ons MySQL-migratiedocument voor meer details en aanvullende migratie-opties.
|
Uw MySQL-server draaien op DigitalOcean
Zodra u aan de slag bent, kan uw MySQL-implementatie virtueel op de automatische piloot werken. Aangezien ScaleGrid een volledig beheerde service is, nemen wij al uw dagelijkse administratie en onderhoud van uw MySQL-databases voor onze rekening, zodat u zich kunt concentreren op het bouwen van uw app. Als er iets gebeurt dat uw aandacht vereist, zoals onvoldoende schijfruimte, sturen we u een melding zodat u kunt inloggen en kunt zien of u klaar bent om uw cluster op te schalen.
U kunt ook altijd contact opnemen met onze MySQL-experts via onze 24/7 ondersteuning om u te helpen bij het opzetten en oplossen van problemen met uw implementatie.