sql >> Databasteknik >  >> RDS >> Mysql

Hur man distribuerar MySQL på Ubuntu och helt hanterat

I det här blogginlägget kommer vi att visa dig en steg-för-steg-guide om hur du installerar och konfigurerar en MySQL-server både manuellt på operativsystemet Ubuntu 20.04, såväl som genom att använda ScaleGrids hanterade databastjänst. I följande avsnitt av den här handledningen hjälper vi dig genom varje steg för att framgångsrikt konfigurera din egen MySQL-server och konfigurera den korrekt.

Lite om MySQL och Ubuntu

MySQL är ett relationsdatabashanteringssystem med öppen källkod (DBMS). Det körs på Windows och Linux-servrar, och det installeras vanligtvis som en del av LAMP-stacken (Linux, Apache, MySQL, PHP/Python/Perl) eller LEMP-stacken (Linux, Nginx, MySQL, PHP). Det är ett lämpligt val om du vet att du helt enkelt behöver en databas, eftersom det är ett snabbt, enkelt och skalbart SQL-baserat system och anses vara det mest populära hanteringssystemet för relationsdatabas.

Medan Ubuntu är ett av världens mest populära desktop-operativsystem med öppen källkod, kommer Ubuntu 20.04 med stabilitet, motståndskraft och ännu bättre säkerhet i företagsklass i en kostnadseffektiv modell.

Hur man installerar MySQL på Ubuntu 20.04

Innan vi dyker ner i processen för att installera en MySQL-server på Ubuntu, tänk på dessa förutsättningar:

  • En Ubuntu 20.04-server med en icke-root-administratör eller sudo-användare för att utföra de auktoritativa stegen och en UFW-konfigurerad brandvägg
  • Systemet bör uppdateras med:
    • sudo apt update
    • sudo apt upgrade -y
  • En stadig nätverksanslutning

Färsk installation av MySQL på Ubuntu 20.04

Installera MySQL

För att installera MySQL på Ubuntu 20.04 kan ett enkelt kommando (apt install mysql-server) köras eftersom installationspaketet är en del av det officiella Ubuntu 20.04-förrådet.

apt install mysql-server -y

Säkra MySQL-serverinstallationen

MySQL-servern har ett förbyggt skript för sin säkra installation. Som en vanlig praxis för att göra detta till en säker installation, kör det här skriptet efter installationskommandot. Vad det gör är att det låter användaren ställa in root-lösenordet för MySQL, inaktivera tillgängligheten för root-kontot utanför den lokala värden, ta bort anonyma användarkonton och även ta bort testdatabas som kan nås av anonyma användare. Detta skript kan anropas med denna sudo kommando:

sudo mysql_secure_installation

En serie meddelanden visas efter att ha kört det säkra installationsskriptet. Den första uppmaningen är att ställa in VALIDATE PASSWORD COMPONENT . Denna prompt (om den är vald) kommer att utföra validering när användarens lösenord skapas. Det låter dig bara skapa lösenordet om det matchar lösenordsstandarderna på MySQL.

Ställa in root-lösenordet

Följande uppmaning är för att ställa in lösenordet för root. Användaren bör ställa in detta lösenord. Svara på alla efterföljande uppmaningar som "Ja", eftersom detta är en bästa praxis ur ett säkerhetsperspektiv.

Konfigurera SSL för MySQL-serverinstallationen

Det finns tillfällen efter installation av MySQL när databasservern är konfigurerad på en separat fysisk maskin antingen på samma eller ett annat nätverk. För att kommunicera med en sådan databas behöver kommunikationen vara säker och krypterad. Därför måste SSL-certifikat installeras och aktiveras på databasservern. SSL-protokollet använder ett par nycklar för att autentisera, säkra och hantera säkra anslutningar. Använd följande kommando för att generera SSL-nycklar:

sudo mysql_ssl_rsa_setup --uid=mysql

Deras standardkatalog innehåller dessa nycklar, och du kan hitta dem genom att anropa följande kommando:

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

mysql> \s

Genom att anropa kommandot ovan från SQL-prompten kan du bekräfta att SSL är aktivt genom att leta efter raden som säger SSL: Cipher in use is […] , som visas i bilden nedan.

Säkra din databas

Databassäkerhet är en av de mest kritiska delarna att tänka på när man planerar att installera MySQL. Angripare är alltid på jakt efter sätt att få tillgång till bakdörren i databassystem och få insiderinformation om målet. Att ändra dess standardport är ett enkelt sätt att öka säkerheten för din databas. Detta kan ändras i konfigurationsfilen på /etc/mysql/mysql.conf.d/mysqld.cnf .

Skapa en MySQL-användare och databas

Genom att använda detta enkla kommando kan du skapa ett MySQL-databasanvändarkonto tillsammans med dess lösenord:

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

Fältet localhost i CREATE USER kommandot indikerar att användaren kommer att ansluta från samma server. Den kan ersättas av en IP-adress om du vill ansluta från en maskin med en specifik IP-adress, eller så kan den ersättas med ett procenttecken % om användaren vill komma åt DB var som helst.

Om du bara vill skapa en databas kan den skapas med följande kommando:

CREATE DATABASE databasename;

När du har skapat användaren och databasen kommer användaren att ges de nödvändiga behörigheterna för databasen.

Behörigheter kan vara av vilken typ som helst; till exempel CREATE , ALTER , INSERT , UPDATE , DELETE , SELECT , RELOAD , etc. Vanligtvis behöver ägaren av databasen all behörighet och dessa behörigheter kan tilldelas oberoende till en användare. Alla dessa behörigheter kan beviljas på en gång genom att använda kommandot.

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

Återigen kan nyckelordet localhost ersättas med en IP-adress eller med % tecken, om användaren avser att ansluta från en specifik IP-adress eller någon annan källa.

Behörigheter för en användare kan ses via kommandot SHOW GRANTS

SHOW GRANTS for 'databaseuser'@'localhost';

Alla privilegier kan återkallas för en användare med kommandot:

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

Här kan du se det efter att ha kört REVOKE kommando, det finns inga privilegier för användaren jason .

Skapa och ta bort tabeller

Det är enkelt att lägga till eller ta bort tabeller från din databas. Allt du behöver göra är att använda ett av följande kommandon:

DROP TABLE databasename.tablename

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

Kolumnparametern anger namnet, medan datatypeparametern anger vilken typ av data kolumnen innehåller.

Det finns tillfällen då en primärnyckel måste läggas till i en kolumn. En primärnyckel låter dig identifiera varje post i din tabell unikt. Detta kan göras genom att nämna det i CREATE TABLE kommando. Exemplet nedan skapar en kolumn user_id med en primärnyckel som automatiskt inkrementeras. Tänk på att primärnyckeln måste innehålla unika värden och får inte innehålla nullvärden

Lägg till eller ta bort kolumner i en tabell

Kolumner kan också läggas till eller tas bort från en specifik tabell i en databas efter att den har skapats.

För att göra det, ändra databasen du vill ändra genom att använda use database_name kommando.

Därefter kommer följande kommandon att lägga till och släppa en kolumn:

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

Infoga data i en tabell

Infoga data i en tabell genom att använda följande kommando:

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

Du måste ange kolumnnamnen och värdet som ska infogas i varje kolumn i ordning. Om du vill infoga värden i varje kolumn i en tabell kan du helt enkelt utelämna kolumnerna och börja ange värdena direkt efter tabellnamnet:

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

Update Data in a Table

Använd följande kommando för att uppdatera data i en tabell:

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

WHERE condition talar om i vilken rad data måste uppdateras. Om villkoret inte anges uppdateras data i alla rader i den angivna kolumnen.

Välj Data från en tabell

För att välja och visa data från särskilda kolumner i en tabell, använd följande kommando:

SELECT column1,column2 FROM tablename;

Men för att välja alla kolumner från en tabell är kommandot som används:

SELECT * FROM tablename;

Aktivera binär loggning

Genom att aktivera binär loggning i MySQL-databasservern kan du logga de frågor som har gjort ändringar i databasen. Binär loggning är en användbar funktion att aktivera om du till exempel behöver felsöka ett problem som orsakas av en fråga i databasen.

För att aktivera binär loggning, lägg till följande rad i konfigurationsfilen på /etc/mysql/mysql.conf.d/mysqld.cnf .

log-bin=mysql-bin.log

För att bekräfta om den binära loggningen är aktiv, anropa följande kommando från MySQL-skalet:

show variables like  '% log_bin%'

Som standard lagras binära loggfiler i /var/lib/mysql katalogen i de flesta Linux-distributioner inklusive Ubuntu.

Ställ in enkel asynkron replikering

MySQL har stöd för replikering, vilket är praktiskt när du planerar för katastrofåterställning och ser till att du minimerar risken för eventuella driftstopp. MySQL stöder två typer av replikeringar:

  • Halvsynkron replikering
  • Asynkron replikering

Med semi-synkron replikering, när en källa begår en transaktion, kommer alla repliker också att ha begått transaktionen innan källan återgår till sessionen som utförde transaktionen. Nackdelen är att det orsakar en stor försening av transaktionens slutförande på grund av det ovan nämnda transaktionssystemet.

Medan, med asynkron replikering, källan skriver händelser till sin binära logg och repliker begär dem när de är klara. Det finns dock ingen garanti för att någon händelse någonsin kommer att nå någon replik.

Som standard har MySQL asynkron replikering aktiverad på grund av dess snabba behandlingstid. Ändå är den stora nackdelen om källdatabasen misslyckas, det finns inget sätt att hämta data som inte har slutfört transaktionerna till replika-DB:er. Å andra sidan fokuserar halvsynkront replikeringsläge mer på datatillgänglighet och hållbarhet men är mycket långsamt. Att välja ett replikeringsläge beror enbart på användarspecifika behov kring deras databasinstallation.

Inuti my.cnf-filen för källservern och replikservern kan du skriva server-ID:n som:

server_id=1
server_id=2

En dedikerad MySQL-användare kan skapas på källservern, som kommer att användas av repliken för att ansluta till källservern.

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

Replikeringsprocessen på replikservern kan startas av:

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;

Dessa instruktioner kommer att börja skapa replikservern som en kopia av källservern.

Säkerhetskopiera/återställ en MySQL-databas

Att ha en säkerhetskopia av din databas är alltid en bra idé, du vet aldrig när du kan behöva den för att se till att viktig data inte går förlorad. För att säkerhetskopiera en databas för MySQL på Ubuntu OS, kör bara följande mysqldump kommando:

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

För att återställa en raderad databas skapas först databasen med samma namn i MySQL. Databasen återställs sedan med kommandot:

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

Följande skärmdump tar först bort vår test_database, återskapar den sedan och försöker återställa alla dess data från säkerhetskopian som skapades tidigare. Dataimportering kan också göras genom att följa samma process.

Avslutar installationen av MySQL på Ubuntu

Du har nu slutfört de grundläggande stegen för att installera MySQL på Ubuntu 20.04. Efter att ha slutfört installationen kommer du att ha en operativ relationsdatabas som du kan använda för att bygga din nästa applikation eller webbplats.

Om du hellre vill ha hela processen automatiserad och hanterad av experter, kolla in nästa del av den här guiden.

Använda ScaleGrid för att ställa in din DigitalOcean MySQL-distribution

I den här delen av guiden använder vi vår fullt hanterade MySQL-värdlösning, eftersom den erbjuder den högsta genomströmningen och lägsta latensen på DigitalOcean. Läs mer i artikeln Best MySQL DigitalOcean Performance för att jämföra ScaleGrid vs. DigitalOcean Managed Databases prissättning, latens och genomströmningsprestanda.

Hela processen bör ta mindre än 20 minuter, med bara ett par minuter i början för att anpassa din MySQL-distributionskonfiguration och ett par minuter i slutet för att ansluta till din applikation .

När du har registrerat dig för ett gratis testkonto är det första du gör att välja MySQL som din databas, DigitalOcean som ditt moln och Dedicated Hosting som din plan för att initiera process för att skapa kluster:

Steg 1. Ange MySQL-distributionsdetaljer

Guiden för att skapa kluster öppnas för det första steget där du kan anpassa de grundläggande detaljerna för din distribution. Ange ett namn för ditt kluster med alfanumeriska tecken och använd ett unikt, beskrivande namn så att du enkelt kan känna igen ditt kluster senare.

Välj sedan det DigitalOcean-datacenter som du vill använda för din huvudserver från rullgardinsmenyn för molnregion – vi rekommenderar att du använder samma region som dina applikationer DigitalOcean Droplets för det bästa prestanda. Sedan kan du välja din VM-storlek för DigitalOcean Droplet-instanser och vilken version av MySQL du vill använda (alla större versioner stöds). InnoDB Storage Engine är standard för alla MySQL-distributioner. Klicka på nästa.

Steg 2. Aktivera Master-Slave Replication

I steg 2 kan du aktivera DigitalOcean MySQL master-slave replikering för att lägga till hög tillgänglighet till din distribution. Replikering är viktigt för att hålla din applikation tillgänglig och online för dina användare i händelse av att din DigitalOcean-datacenterregion går ner. Även om DigitalOcean är en mycket pålitlig molnleverantör med 99,99 % drifttid, går datacenter oundvikligen ner, så att replikera din data till ytterligare datacenterplatser gör att du kan minimera risken för dataförlust och driftstopp för dina användare.

Om du vill fortsätta med en fristående distribution klickar du på nästa för att gå vidare till steg 3 utan att aktivera master-slave-konfiguration.

Obs – master-slave-konfiguration är endast tillgänglig för betalkonton, du kan inte ställa in en replikuppsättningsinstallation medan du är i testläge.

Konfigurera MySQL Master-Slave-installationen

Det finns ett par alternativ här för att anpassa din MySQL master-slave-inställning. Först kan du välja mellan 2 + 1 kvorum eller 3 noder för din implementering. Båda erbjuder hög tillgänglighet, men i 2 + 1 Quorum-inställningen har du bara 2 databärande noder eftersom Quorum-noden fungerar som beslutsfattare i en failover-händelse. Du kan också kontakta supporten för att anpassa din master-slave-konfiguration för att lägga till fler noder till din distribution.

Närnäst kan du välja mellan semisynkron och asynkron replikering. Semisynkron replikering garanterar att minst en slav har tagit emot all data som mastern har begått, vilket säkerställer att failover till rätt slav är förlustfri. I asynkron replikering synkroniseras varje slav asynkront med mastern så failover från master till slav kan resultera i failover till en server som inte är helt synkroniserad med den aktuella mastern.

Slutligen, anpassa DigitalOceans datacenterplatser du vill använda för dina slavnoder. Klicka på nästa när du är klar.

Hur man ställer in MySQL på DigitalOceanClick To Tweet

Steg 3. Aktivera SSL

I steg 3 kan du aktivera SSL för din distribution. Som standard installerar och aktiverar MySQL-servern alltid SSL-konfiguration, men det tvingas inte att klienter ansluter med SSL. Klienter kan välja att ansluta med eller utan SSL eftersom servern tillåter båda typerna av anslutningar. Läs mer om att konfigurera och hantera SSL i denna MySQL-handledning.

Steg 4. Konfigurera brandväggar

I det sista steget i processen för att skapa kluster anger du minst en IP CIDR som kommer att tillåtas åtkomst till din MySQL-distribution för att ställa in din brandväggsregel. Du hittar din nuvarande IP CIDR högst upp på sidan. Dessa kan anpassas senare på både klusternivå och kontonivå. När du har angett den klickar du på Lägg till. Ange alla IP-CIDR:er du vill ha och klicka sedan på nästa.

Steg 5. Granska och skapa

Den sista sidan ger en kort sammanfattning av ditt nya MySQL DigitalOcean-kluster. Granska alla detaljer och klicka på knappen Föregående för att gå tillbaka till ett tidigare steg och ändra dina konfigurationer. När du är redo klickar du på Skapa för att snurra upp ditt kluster.

Och det är allt! Din distribution tillhandahålls nu! Detta tar cirka 15 minuter, så medan du väntar kan du bekanta dig med hanteringsverktygen för MySQL i konsolen – säkerhetskopiering, återställning, skalning, varningar, frågeanalys, etc.

Anslut och migrera

När klusterstatusen ändras från "Skapar" till "Körs" kan du ansluta din distribution. Det finns ett par olika sätt att göra detta – genom din anslutningssträng till din app, genom kommandoraden, genom WordPress, genom MySQL Workbench eller andra populära GUI-verktyg. All din anslutningsinformation är tillgänglig i den nedre halvan av fliken Översikt på sidan med klusterdetaljer.

Besök de översta flikarna för att skapa en MySQL-databas och skapa en MySQL-databasanvändare. Dessa kan nås och hanteras när som helst från ScaleGrid-konsolen.

Migrera din befintliga MySQL-installation på några minuter

Migrering är också en automatiserad process som bara kräver några få detaljer från din befintliga distribution. Klicka på knappen Importera data på fliken Översikt och ange ditt servernamn, port, databasnamn, användarnamn och lösenord. Kolla in vårt MySQL-migreringsdokument för mer information och ytterligare migreringsalternativ.

Vill du prova MySQL på DigitalOcean själv?

Prova ScaleGrid och ställ in MySQL på DigitalOcean med några enkla steg med vår helt kostnadsfria 30-dagars provperiod. Automatisera din MySQL-värd och hantering i molnet med de mest kraftfulla databashanteringsfunktionerna för att optimera din distribution.

Köra din MySQL-server på DigitalOcean

När du väl är igång kan din MySQL-distribution praktiskt taget fungera på autopilot. Eftersom ScaleGrid är en helt hanterad tjänst, hanterar vi all din dagliga administration och underhåll av dina MySQL-databaser, så att du kan fokusera på att bygga din app. Om något skulle uppstå som kräver din uppmärksamhet, till exempel att det blir ont om diskutrymme, skickar vi ett meddelande så att du kan logga in och se om du är redo att skala upp ditt kluster.

Du kan också få kontakt med våra MySQL-experter när som helst genom vår 24/7 support för att hjälpa dig att konfigurera och felsöka din implementering.


  1. Dynamisk pivot i oracle sql

  2. oracle varchar till nummer

  3. Ett prestationsfuskblad för PostgreSQL

  4. PostgreSQL kolumn foo finns inte där foo är värdet