MySQL är ett populärt databashanteringssystem som används för webb- och serverapplikationer. MySQL finns dock inte längre i CentOS:s arkiv och MariaDB har blivit standarddatabassystemet som erbjuds. MariaDB anses vara adrop-in-ersättning för MySQL och skulle vara tillräckligt om du bara behöver ett databassystem i allmänhet. Se vår guide för MariaDB i CentOS 7 för installationsinstruktioner.
Om du ändå föredrar MySQL kommer den här guiden att introducera hur du installerar, konfigurerar och hanterar det på en Linode som kör CentOS 7.
Stora MySQL-databaser kan kräva en avsevärd mängd minne. Av denna anledning rekommenderar vi att du använder en Linode med högt minne för sådana inställningar.
Obs Den här guiden är skriven för en icke-rootanvändare. Kommandon som kräver förhöjda privilegier har prefixetsudo
. Om du inte är bekant medsudo
kommandot kan du läsa vår guide för användare och grupper.
Innan du börjar
-
Se till att du har följt guiderna Komma igång och Säkra din server och att Linodes värdnamn är inställt.
Så här kontrollerar du ditt värdnamn:
hostname hostname -f
Det första kommandot ska visa ditt korta värdnamn och det andra ska visa ditt fullständiga domännamn (FQDN).
-
Uppdatera ditt system:
sudo yum update
-
Du behöver
wget
för att slutföra den här guiden. Den kan installeras enligt följande:yum install wget
Installera MySQL
MySQL måste installeras från community-förvaret.
-
Ladda ner och lägg till arkivet och uppdatera sedan.
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm yum update
-
Installera MySQL som vanligt och starta tjänsten. Under installationen kommer du att bli tillfrågad om du vill acceptera resultaten från .rpm-filens GPG-verifiering. Om inget fel eller oöverensstämmelse uppstår anger du
y
.sudo yum install mysql-server sudo systemctl start mysqld
MySQL binder till localhost (127.0.0.1) som standard. Se vår MySQL fjärråtkomstguide för information om hur du ansluter till dina databaser med SSH.
Obs Att tillåta obegränsad åtkomst till MySQL på en offentlig IP rekommenderas inte, men du kan ändra adressen den lyssnar på genom att ändrabind-address
parameter i/etc/my.cnf
. Om du bestämmer dig för att binda MySQL till din publika IP bör du implementera brandväggsregler som endast tillåter anslutningar från specifika IP-adresser.
Harden MySQL Server
-
Kör
mysql_secure_installation
skript för att lösa flera säkerhetsproblem i en MySQL-standardinstallation.sudo mysql_secure_installation
Du kommer att få välja att ändra MySQL root-lösenordet, ta bort anonyma användarkonton, inaktivera root-inloggningar utanför localhost och ta bort testdatabaser. Det rekommenderas att du svarar yes
till dessa alternativ. Du kan läsa mer om skriptet i MySQL Reference Manual.
ObsOm MySQL 5.7 installerades behöver du det tillfälliga lösenordet som skapades under installationen. Detta lösenord är noterat i
/var/log/mysql.log
fil och kan snabbt hittas med följande kommando.sudo grep 'temporary password' /var/log/mysqld.log
Använda MySQL
Standardverktyget för att interagera med MySQL är mysql
klient som installeras med mysql-server
paket. MySQL-klienten används via en terminal.
Root-inloggning
-
För att logga in på MySQL som root-användare:
mysql -u root -p
-
När du uppmanas, ange root-lösenordet du tilldelade när mysql_secure_installation-skriptet kördes.
Du kommer sedan att presenteras med en välkomstrubrik och MySQL-prompten som visas nedan:
mysql>
-
För att generera en lista med kommandon för MySQL-prompten anger du
\h
. Du kommer då att se:List of all MySQL commands: Note that all text commands must be first on line and end with ';' ? (\?) Synonym for `help'. clear (\c) Clear command. connect (\r) Reconnect to the server. Optional arguments are db and host. delimiter (\d) Set statement delimiter. NOTE: Takes the rest of the line as new delimiter. edit (\e) Edit command with $EDITOR. ego (\G) Send command to mysql server, display result vertically. exit (\q) Exit mysql. Same as quit. go (\g) Send command to mysql server. help (\h) Display this help. nopager (\n) Disable pager, print to stdout. notee (\t) Don't write into outfile. pager (\P) Set PAGER [to_pager]. Print the query results via PAGER. print (\p) Print current command. prompt (\R) Change your mysql prompt. quit (\q) Quit mysql. rehash (\#) Rebuild completion hash. source (\.) Execute an SQL script file. Takes a file name as an argument. status (\s) Get status information from the server. system (\!) Execute a system shell command. tee (\T) Set outfile [to_outfile]. Append everything into given outfile. use (\u) Use another database. Takes database name as argument. charset (\C) Switch to another charset. Might be needed for processing binlog with multi-byte charsets. warnings (\W) Show warnings after every statement. nowarning (\w) Don't show warnings after every statement. For server side help, type 'help contents' mysql>
Skapa en ny MySQL-användare och databas
-
I exemplet nedan,
testdb
är namnet på databasen,testuser
är användaren ochpassword
är användarens lösenord.create database testdb; create user 'testuser'@'localhost' identified by 'password'; grant all on testdb.* to 'testuser' identified by 'password';
Du kan förkorta denna process genom att skapa användaren medan tilldela databasbehörigheter:
create database testdb; grant all on testdb.* to 'testuser' identified by 'password';
-
Avsluta sedan MySQL.
exit
Skapa en exempeltabell
-
Logga in igen som
testuser
.mysql -u testuser -p
-
Skapa en exempeltabell som heter kunder . Detta skapar en tabell med ett kund-ID-fält av typen INT för heltal (automatiskt inkrementerat för nya poster, används som primärnyckel), samt två fält för att lagra kundens namn.
use testdb; create table customers (customer_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, first_name TEXT, last_name TEXT);
-
Avsluta sedan MySQL.
exit
Återställ MySQL-rootlösenordet
Om du glömmer ditt root MySQL-lösenord kan det återställas.
-
Stoppa den aktuella MySQL-serverinstansen och starta om den sedan med ett alternativ att inte be om ett lösenord.
sudo systemctl stop mysqld sudo mysqld_safe --skip-grant-tables &
-
Återanslut till MySQL-servern med MySQL-rotkontot.
mysql -u root
-
Använd följande kommandon för att återställa roots lösenord. Ersätt
password
med ett starkt lösenord.use mysql; update user SET PASSWORD=PASSWORD("password") WHERE USER='root'; flush privileges; exit
-
Starta sedan om MySQL.
sudo systemctl start mysqld
Justera MySQL
MySQL Tuner är ett Perl-skript som ansluter till en körande instans av MySQL och ger konfigurationsrekommendationer baserat på arbetsbelastning. Helst skulle MySQL-instansen ha varit i drift i minst 24 timmar innan tunern kördes. Ju längre instansen har körts, desto bättre råd kommer MySQL Tuner att ge.
-
Ladda ner MySQL Tuner till din hemkatalog.
wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl
-
Så här kör du det:
perl ./mysqltuner.pl
Du kommer att bli ombedd att ange MySQL root-användarens namn och lösenord. Resultatet kommer att visa två intresseområden:Allmänna rekommendationer och Variabler att justera.
MySQL Tuner är en utmärkt utgångspunkt för att optimera en MySQL-server, men det skulle vara klokt att utföra ytterligare forskning för konfigurationer som är skräddarsydda för applikationen/applikationerna som använder MySQL på din Linode.
Har du fortfarande några frågor?Gå med i vår community och ställ dina frågor så att andra Linode- och Linux-entusiaster kan hjälpa dig.
Relaterade frågor:
- Hur man installerar phpMyAdmin på Centos7
- Hur kan jag ställa in en LAMP/LEMP-stack på min Linode?
- Hur kör jag både MySQL och MongoDB?
Mer information
Du kanske vill konsultera följande resurser för ytterligare information om detta ämne. Även om dessa tillhandahålls i hopp om att de kommer att vara användbara, vänligen observera att vi inte kan garantera noggrannheten eller aktualiteten hos externt värdmaterial.
- MySQL 5.6 Referensmanual
- Handbok för PHP MySQL
- Perl DBI-exempel för DBD::mysql
- MySQLdb användarhandbok
- MySQL Tuner Handledning