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

Sådan implementeres MySQL på Ubuntu og fuldt administreret

I dette blogindlæg vil vi vise dig en trin-for-trin guide til, hvordan du installerer og opsætter en MySQL-server både manuelt på Ubuntu 20.04-operativsystemet, såvel som ved at bruge ScaleGrids administrerede databasetjeneste. I de følgende afsnit af denne vejledning hjælper vi dig gennem hvert trin for at konfigurere din helt egen MySQL-server og konfigurere den korrekt.

Lidt om MySQL &Ubuntu

MySQL er et open source relationel database management system (DBMS). Det kører på Windows- og Linux-servere, og det er almindeligvis installeret som en del af LAMP-stakken (Linux, Apache, MySQL, PHP/Python/Perl) eller LEMP-stakken (Linux, Nginx, MySQL, PHP). Det er et passende valg, hvis du ved, at du blot har brug for en database, da det er et hurtigt, enkelt og skalerbart SQL-baseret system og betragtes som det mest populære relationelle databasestyringssystem.

Selvom Ubuntu er et af verdens mest populære open source desktop-operativsystemer, kommer Ubuntu 20.04 med stabilitet i virksomhedsklasse, robusthed og endnu bedre sikkerhed i en omkostningseffektiv model.

Sådan installeres MySQL på Ubuntu 20.04

Før vi dykker ned i processen med at installere en MySQL-server på Ubuntu, skal du huske på disse forudsætninger:

  • En Ubuntu 20.04-server med en ikke-root-administrator eller sudo-bruger til at udføre de autoritative trin og en UFW-konfigureret firewall
  • Systemet bør opdateres ved at bruge:
    • sudo apt update
    • sudo apt upgrade -y
  • En stabil netværksforbindelse

Frisk installation af MySQL på Ubuntu 20.04

Installer MySQL

For at installere MySQL på Ubuntu 20.04 kan en simpel kommando (apt install mysql-server) udføres, da installationspakken er en del af det officielle Ubuntu 20.04-lager.

apt install mysql-server -y

Sikring af MySQL-serverinstallationen

MySQL-serveren har et forudbygget script til dens sikre installation. Som en almindelig praksis for at gøre dette til en sikker installation, skal du køre dette script efter installationskommandoen. Hvad det gør, er, at det lader brugeren indstille root-adgangskoden til MySQL, deaktivere tilgængeligheden af ​​root-kontoen uden for den lokale vært, fjerne anonyme brugerkonti og også fjerne testdatabase, som anonyme brugere kan få adgang til. Dette script kan startes med denne sudo kommando:

sudo mysql_secure_installation

En række meddelelser vises efter at have kørt det sikre installationsscript. Den første prompt er at konfigurere VALIDATE PASSWORD COMPONENT . Denne prompt (hvis valgt) udfører validering efter brugerens oprettelse af adgangskode. Det vil kun lade dig oprette adgangskoden, hvis den matcher adgangskodestandarderne på MySQL.

Opsætning af root-adgangskoden

Følgende prompt er til opsætning af adgangskoden til root. Brugeren skal indstille denne adgangskode. Besvar alle efterfølgende meddelelser som "Ja", da dette er en bedste praksis ud fra et sikkerhedsperspektiv.

Opsætning af SSL til MySQL-serverinstallationen

Der er tidspunkter efter installation af MySQL, hvor databaseserveren er konfigureret på en separat fysisk maskine enten på det samme eller et andet netværk. For at kommunikere med en sådan database skal kommunikationen være sikret og krypteret. Derfor skal SSL-certifikater installeres og aktiveres på databaseserveren. SSL-protokollen bruger et par nøgler til at godkende, sikre og administrere sikre forbindelser. Brug følgende kommando til at generere SSL-nøgler:

sudo mysql_ssl_rsa_setup --uid=mysql

Deres standardbibliotek indeholder disse nøgler, og du kan finde dem ved at påkalde følgende kommando:

sudo sudo find /var/lib/mysql -name '*.pem' -ls

mysql> \s

Ved at påkalde ovenstående kommando fra SQL-prompten kan du bekræfte, at SSL er aktiv ved at kigge efter rækken, der siger SSL: Cipher in use is […] , som det ses på billedet nedenfor.

Sikring af din database

Databasesikkerhed er et af de mest kritiske elementer at overveje, når man planlægger at installere MySQL. Angribere er altid på udkig efter måder at få bagdørs adgang til databasesystemer og få intern information om målet. Ændring af standardporten er en nem måde at øge din databases sikkerhed på. Dette kan ændres i konfigurationsfilen på /etc/mysql/mysql.conf.d/mysqld.cnf .

Opret en MySQL-bruger og -database

Ved at bruge denne enkle kommando kan du oprette en MySQL-databasebrugerkonto sammen med dens adgangskode:

CREATE USER 'Username' @ 'localhost'  IDENTIFIED BY 'StrongPassword';

Feltet localhost i CREATE USER kommandoen angiver, at brugeren vil oprette forbindelse fra den samme server. Den kan erstattes af en IP-adresse, hvis du vil oprette forbindelse fra en maskine med en specifik IP-adresse, eller den kan erstattes af et procenttegn % hvis brugeren ønsker at få adgang til DB fra hvor som helst.

Hvis du kun ønsker at oprette en database, kan den oprettes ved at bruge følgende kommando:

CREATE DATABASE databasename;

Når du har oprettet brugeren og databasen, vil brugeren få de nødvendige tilladelser til databasen.

Tilladelser kan være af enhver type; for eksempel CREATE , ALTER , INSERT , UPDATE , DELETE , SELECT , RELOAD , osv. Normalt har ejeren af ​​databasen brug for al tilladelse, og disse tilladelser kan tildeles uafhængigt til en bruger. Alle disse tilladelser kan gives på én gang ved at bruge kommandoen.

GRANT ALL PRIVILEGES ON databasename.tablename TO 'username' @ 'localhost';

Igen kan localhost-søgeordet erstattes med en IP-adresse eller med % tegn, hvis brugeren har til hensigt at oprette forbindelse fra en specifik IP-adresse eller en anden kilde.

Privilegier for en bruger kan ses via kommandoen SHOW GRANTS

SHOW GRANTS for 'databaseuser'@'localhost';

Alle privilegier kan tilbagekaldes for en bruger ved at bruge kommandoen:

REVOKE ALL PRIVILEGES ON database.name.* FROM 'database.user'@'localhost';

Her kan du se det efter at have kørt REVOKE kommando, er der ingen privilegier for brugeren jason .

Oprettelse og sletning af tabeller

Det er nemt at tilføje eller slette tabeller fra din database. Alt du skal gøre er at bruge en af ​​følgende kommandoer:

DROP TABLE databasename.tablename

CREATE TABLE databasename.tablename ( column1 datatype,column2 datatype ,column3 datatype);

Kolonneparameteren angiver navnet, mens datatypeparameteren angiver, hvilken type data kolonnen indeholder.

Der er tidspunkter, hvor en primær nøgle skal tilføjes til en kolonne. En primær nøgle giver dig mulighed for entydigt at identificere hver post i din tabel. Dette kan gøres ved at nævne det i CREATE TABLE kommando. Eksemplet nedenfor opretter en kolonne user_id med en primær nøgle, som automatisk øges. Husk, at den primære nøgle skal indeholde unikke værdier og ikke kan indeholde null-værdier

Tilføj eller fjern kolonner i en tabel

Kolonner kan også tilføjes eller slettes fra en specifik tabel i en database efter dens oprettelse.

For at gøre det skal du ændre den database du vil ændre ved at bruge use database_name kommando.

Efterfølgende vil følgende kommandoer tilføje og slette en kolonne:

ALTER TABLE tablename ADD columnname datatype;
ALTER TABLE tablename DROP columnname;

Indsæt data i en tabel

Indsæt data i en tabel ved at bruge følgende kommando:

INSERT INTO tablename (column1,column2,column3) VALUES ('value1','value2','value3' );

Du skal angive kolonnenavnene og den værdi, der skal indsættes i hver kolonne i rækkefølge. Hvis du vil indsætte værdier i hver kolonne i en tabel, kan du blot udelade kolonnerne og begynde at angive værdierne direkte efter tabelnavnet:

INSERT INTO tablename VALUES ('value1','value2','value3' );

Update Data in a Table

Brug følgende kommando til at opdatere dataene i en tabel:

UPDATE tablename SET columnname= 'newvalue'  WHERE columnname='value'

WHERE betingelse fortæller, i hvilken række dataene skal opdateres. Hvis betingelsen ikke er angivet, opdateres dataene i alle rækkerne i den angivne kolonne.

Vælg data fra en tabel

For at vælge og se data fra bestemte kolonner i en tabel skal du bruge følgende kommando:

SELECT column1,column2 FROM tablename;

Men for at vælge alle kolonnerne fra en tabel er kommandoen, der bruges:

SELECT * FROM tablename;

Aktiver binær logning

Aktivering af binær logning i MySQL-databaseserveren giver dig mulighed for at logge de forespørgsler, der har foretaget ændringer i databasen. Binær logning er en nyttig funktion at have aktiveret, hvis du for eksempel skal fejlfinde et problem forårsaget af en forespørgsel i databasen.

For at aktivere binær logning skal du tilføje følgende linje i konfigurationsfilen på /etc/mysql/mysql.conf.d/mysqld.cnf .

log-bin=mysql-bin.log

For at bekræfte, om den binære logning er aktiv, skal du kalde følgende kommando fra MySQL-skallen:

show variables like  '% log_bin%'

Som standard gemmes binære logfiler inde i /var/lib/mysql bibliotek i de fleste af Linux-distributionerne inklusive Ubuntu.

Opsætning af simpel asynkron replikering

MySQL har understøttelse af replikering, hvilket er praktisk, når du planlægger katastrofegendannelse og sikrer, at du minimerer potentialet for enhver nedetid. MySQL understøtter to typer replikationer:

  • Semi-synkron replikering
  • Asynkron replikering

Med semi-synkron replikering, når en kilde begår en transaktion, vil alle replikaer også have begået transaktionen, før kilden vender tilbage til den session, der udførte transaktionen. Ulempen er, at det forårsager en stor forsinkelse i transaktionens gennemførelse på grund af det førnævnte transaktionssystem.

Mens kilden med asynkron replikering skriver hændelser til sin binære log, og replikaer anmoder om dem, når de er klar. Der er dog ingen garanti for, at nogen begivenhed nogensinde når frem til nogen replika.

Som standard har MySQL asynkron replikering aktiveret på grund af dens hurtige behandlingstid. Alligevel er den største ulempe, hvis kildedatabasen fejler, er der ingen måde at hente data, der ikke har fuldført transaktionerne til replika-DB'er. På den anden side fokuserer semi-synkron replikeringstilstand mere på datatilgængelighed og holdbarhed, men er meget langsom. Valget af en replikeringstilstand afhænger udelukkende af brugerspecifikke behov omkring deres databaseopsætning.

Inde i my.cnf-filen for kildeserveren og replikaserveren kan du skrive server-id'erne henholdsvis som:

server_id=1
server_id=2

En dedikeret MySQL-bruger kan oprettes på kildeserveren, som vil blive brugt af replikaen til at oprette forbindelse til kildeserveren.

GRANT REPLICATION SLAVE ON *.* TO ‘masterusername’ @ 'ipaddress of slave server'
→ IDENTIFIED BY ‘masterpassword’;

Replikeringsprocessen på replikaserveren kan startes af:

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;

Disse instruktioner vil begynde at oprette replikaserveren som en kopi af kildeserveren.

Sikkerhedskopier/gendan en MySQL-database

At holde en sikkerhedskopi af din database er altid en god idé, du ved aldrig, hvornår du kan få brug for det for at sikre dig, at vigtige data ikke går tabt. For at sikkerhedskopiere en database til MySQL på Ubuntu OS skal du blot udføre følgende mysqldump kommando:

sudo mysqldump -u root -p <database.name> > <filename.sql>

For at gendanne en slettet database, oprettes databasen først med samme navn i MySQL. Databasen gendannes derefter med kommandoen:

sudo mysql -u root -p <database.name> < <filename.sql>

Følgende skærmbillede sletter først vores test_database, genskaber den derefter og forsøger at gendanne alle dens data fra den tidligere oprettede backup. Dataimportering kan også udføres ved at følge den samme proces.

Afslutning på installation af MySQL på Ubuntu

Du har nu gennemført de grundlæggende trin for at installere MySQL på Ubuntu 20.04. Efter at have afsluttet installationen vil du have en operationel relationsdatabase, som du kan bruge til at bygge din næste applikation eller hjemmeside.

Hvis du hellere vil have hele denne proces automatiseret og administreret af eksperter, så tjek den næste del af denne vejledning.

Brug af ScaleGrid til at konfigurere din DigitalOcean MySQL-implementering

I denne del af guiden bruger vi vores fuldt administrerede MySQL-hostingløsning, da den tilbyder den højeste gennemstrømning og laveste latenstid på DigitalOcean. Få mere at vide i artiklen Best MySQL DigitalOcean Performance for at sammenligne ScaleGrid vs. DigitalOcean Managed Databases prissætning, latency og gennemløbsydelse.

Hele processen bør tage mindre end 20 minutter, med kun et par minutter i begyndelsen til at tilpasse din MySQL-implementeringskonfiguration og et par minutter til sidst for at oprette forbindelse til din applikation .

Når du har tilmeldt dig en gratis prøvekonto, er den første ting du skal gøre at vælge MySQL som din database, DigitalOcean som din sky og Dedikeret Hosting som din plan for at starte klyngen oprettelsesproces:

Trin 1. Indtast MySQL-implementeringsoplysninger

Klyngenoprettelsesguiden åbner til det første trin, hvor du kan tilpasse de grundlæggende detaljer om din implementering. Indtast et navn til din klynge ved hjælp af alfanumeriske tegn, og brug et unikt, beskrivende navn, så du nemt kan genkende din klynge senere.

Vælg derefter det DigitalOcean-datacenter, du gerne vil bruge til din masterserver, fra rullemenuen for skyregionen – vi anbefaler, at du bruger samme region som dine applikationer DigitalOcean Droplets for det bedste ydeevne. Derefter kan du vælge din VM-størrelse for DigitalOcean Droplet-forekomster og den version af MySQL, du ønsker at bruge (alle større versioner understøttes). InnoDB Storage Engine er standarden for alle MySQL-implementeringer. Klik på næste.

Trin 2. Aktiver Master-Slave-replikering

I trin 2 kan du aktivere DigitalOcean MySQL master-slave replikering for at tilføje høj tilgængelighed til din implementering. Replikering er vigtig for at holde din applikation tilgængelig og online for dine brugere, hvis dit DigitalOcean-datacenterområde går ned. Mens DigitalOcean er en yderst pålidelig cloud-udbyder med 99,99 % oppetid, går datacentre uundgåeligt ned, så replikering af dine data til yderligere datacenterplaceringer giver dig mulighed for at minimere risikoen for datatab og nedetid for dine brugere.

Hvis du vil fortsætte med en selvstændig implementering, skal du klikke på Næste for at gå videre til trin 3 uden at aktivere master-slave-konfiguration.

Bemærk – master-slave-konfiguration er kun tilgængelig for betalte konti, du kan ikke konfigurere et replikasæt, mens du er i prøvetilstand.

Konfigurer MySQL Master-Slave-opsætningen

Der er et par muligheder her for at tilpasse din MySQL master-slave-opsætning. For det første kan du vælge mellem 2 + 1 Quorum eller 3 noder til din implementering. Begge tilbyder høj tilgængelighed, men i 2 + 1 Quorum-opsætningen har du kun 2 databærende noder, da Quorum-noden fungerer som beslutningstager i en failover-hændelse. Du kan også kontakte support for at tilpasse din master-slave-konfiguration for at tilføje flere noder til din implementering.

Dernæst kan du vælge mellem semisynkron og asynkron replikering. Semisynkron replikering garanterer, at mindst én slave har modtaget alle de data, som masteren har begået, hvilket sikrer, at failoveren til den rigtige slave er tabsfri. I asynkron replikering synkroniserer hver slave asynkront med masteren, så failover fra master til slave kan resultere i failover til en server, der ikke er fuldt synkroniseret op til den aktuelle master.

Tilpas endelig de DigitalOcean-datacenterplaceringer, du ønsker at bruge til dine slaveknuder. Når du er færdig, skal du klikke på næste.

Sådan opsætter du MySQL på DigitalOceanKlik for at tweete

Trin 3. Aktiver SSL

I trin 3 kan du aktivere SSL til din implementering. Som standard installerer og aktiverer MySQL-serveren altid SSL-konfiguration, men det er ikke påtvunget, at klienter forbinder ved hjælp af SSL. Klienter kan vælge at oprette forbindelse med eller uden SSL, da serveren tillader begge typer forbindelser. Lær mere om konfiguration og administration af SSL i denne MySQL-øvelse.

Trin 4. Konfigurer firewalls

I det sidste trin af klyngenoprettelsesprocessen skal du indtaste mindst én IP-CIDR, der vil få adgang til din MySQL-implementering for at konfigurere din firewallregel. Du kan finde din nuværende IP CIDR øverst på siden. Disse kan tilpasses senere på både klyngeniveau og kontoniveau. Når du har indtastet det, skal du klikke på Tilføj. Indtast alle de IP-CIDR'er, du ønsker, og klik derefter på Næste.

Trin 5. Gennemgå og opret

Den sidste side giver en kort oversigt over din nye MySQL DigitalOcean-klynge. Gennemgå alle detaljerne, og klik på knappen Forrige for at gå tilbage til et tidligere trin og ændre dine konfigurationer. Når du er klar, skal du klikke på Opret for at skrue op for din klynge.

Og det er det! Din implementering klargøres nu! Dette tager cirka 15 minutter, så mens du venter, kan du sætte dig ind i administrationsværktøjerne til MySQL i konsollen – sikkerhedskopier, gendannelser, skalering, advarsler, forespørgselsanalyse osv.

Opret forbindelse og migrer

Når klyngestatus ændres fra "Opretter" til "Kører", kan du tilslutte din implementering. Der er et par forskellige måder at gøre dette på - gennem din forbindelsesstreng til din app, gennem kommandolinjen, gennem WordPress, gennem MySQL Workbench eller andre populære GUI-værktøjer. Alle dine forbindelsesdetaljer er tilgængelige i den nederste halvdel af fanen Oversigt på siden med klyngedetaljer.

Besøg de øverste faner for at oprette en MySQL-database og oprette en MySQL-databasebruger. Disse kan tilgås og administreres når som helst fra ScaleGrid-konsollen.

Migrer din eksisterende MySQL-installation på få minutter

Migrering er også en automatiseret proces, der kun kræver nogle få detaljer fra din eksisterende implementering. Klik på knappen Importer data på fanen Oversigt, og indtast dit servernavn, port, databasenavn(e), brugernavn og adgangskode. Se vores MySQL-migreringsdokument for flere detaljer og yderligere migreringsmuligheder.

Vil du selv prøve MySQL på DigitalOcean?

Prøv ScaleGrid og opsæt MySQL på DigitalOcean med et par enkle trin ved hjælp af vores helt gratis 30-dages prøveperiode. Automatiser din MySQL-hosting og administration i skyen med de mest kraftfulde databasestyringsfunktioner for at optimere din implementering.

Kørsel af din MySQL-server på DigitalOcean

Når du er i gang, kan din MySQL-implementering virtuelt fungere på autopilot. Da ScaleGrid er en fuldt administreret service, håndterer vi al din daglige administration og vedligeholdelse af dine MySQL-databaser, så du kan fokusere på at bygge din app. Hvis der skulle opstå noget, der kræver din opmærksomhed, såsom at løbe tør for diskplads, sender vi dig en meddelelse, så du kan logge ind og se, om du er klar til at skalere din klynge op.

Du kan også komme i kontakt med vores MySQL-eksperter når som helst gennem vores 24/7 support for at hjælpe dig med at konfigurere og fejlfinde din implementering.


  1. Fejl ved oprettelse af tabel:Du har en fejl i din SQL-syntaks nær 'order( order_id INT UNSIGNED NOT NULL AUTO_INCREMENT, user_id ' på linje 1

  2. Hvad er den bedste måde at afkorte en dato i SQL Server?

  3. Får fejl under udførelse af pakke

  4. Vis alle triggere i Oracle-databasen