MySQL ist ein beliebtes Datenbankverwaltungssystem, das für Web- und Serveranwendungen verwendet wird. MySQL befindet sich jedoch nicht mehr in den Repositories von CentOS und MariaDB ist zum standardmäßig angebotenen Datenbanksystem geworden. MariaDB gilt als Drop-In-Ersatz für MySQL und würde ausreichen, wenn Sie nur allgemein ein Datenbanksystem benötigen. Eine Installationsanleitung finden Sie in unserem MariaDB in CentOS 7-Handbuch.
Wenn Sie dennoch MySQL bevorzugen, wird Ihnen diese Anleitung zeigen, wie man es auf einem Linode mit CentOS 7 installiert, konfiguriert und verwaltet.
Große MySQL-Datenbanken können eine beträchtliche Menge an Arbeitsspeicher benötigen. Aus diesem Grund empfehlen wir für solche Setups die Verwendung eines High Memory Linode.
Hinweis Dieses Handbuch wurde für Nicht-Root-Benutzer geschrieben. Befehlen, die erhöhte Berechtigungen erfordern, wird das Präfixsudo
vorangestellt . Wenn Sie mitsudo
nicht vertraut sind Befehl finden Sie in unserem Handbuch für Benutzer und Gruppen.
Bevor Sie beginnen
-
Stellen Sie sicher, dass Sie die Anleitungen „Erste Schritte“ und „Sichern Ihres Servers“ befolgt haben und der Hostname von Linode festgelegt ist.
Um Ihren Hostnamen zu überprüfen, führen Sie Folgendes aus:
hostname hostname -f
Der erste Befehl sollte Ihren kurzen Hostnamen anzeigen und der zweite Ihren vollständig qualifizierten Domänennamen (FQDN).
-
Aktualisieren Sie Ihr System:
sudo yum update
-
Sie benötigen
wget
um diese Anleitung zu vervollständigen. Es kann wie folgt installiert werden:yum install wget
Installieren Sie MySQL
MySQL muss aus dem Community-Repository installiert werden.
-
Laden Sie das Repository herunter, fügen Sie es hinzu und aktualisieren Sie es dann.
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm yum update
-
Installieren Sie MySQL wie gewohnt und starten Sie den Dienst. Während der Installation werden Sie gefragt, ob Sie die Ergebnisse der GPG-Verifizierung der .rpm-Datei akzeptieren möchten. Wenn kein Fehler oder keine Übereinstimmung auftritt, geben Sie
y
ein .sudo yum install mysql-server sudo systemctl start mysqld
MySQL bindet standardmäßig an localhost (127.0.0.1). Weitere Informationen zum Herstellen einer Verbindung zu Ihren Datenbanken über SSH finden Sie in unserem Leitfaden für den MySQL-Fernzugriff.
Hinweis Uneingeschränkten Zugriff auf MySQL auf einer öffentlichen IP-Adresse zuzulassen, wird nicht empfohlen, aber Sie können die Adresse ändern, auf der MySQL lauscht, indem Sie diebind-address
ändern Parameter in/etc/my.cnf
. Wenn Sie sich entscheiden, MySQL an Ihre öffentliche IP zu binden, sollten Sie Firewall-Regeln implementieren, die nur Verbindungen von bestimmten IP-Adressen zulassen.
Mysql-Server härten
-
Führen Sie die
mysql_secure_installation
aus Skript, um mehrere Sicherheitsbedenken in einer standardmäßigen MySQL-Installation zu beheben.sudo mysql_secure_installation
Sie haben die Wahl, das MySQL-Root-Passwort zu ändern, anonyme Benutzerkonten zu entfernen, Root-Anmeldungen außerhalb von localhost zu deaktivieren und Testdatenbanken zu entfernen. Es wird empfohlen, dass Sie mit yes
antworten zu diesen Optionen. Sie können mehr über das Skript im MySQL-Referenzhandbuch nachlesen.
HinweisWenn MySQL 5.7 installiert wurde, benötigen Sie das temporäre Passwort, das während der Installation erstellt wurde. Dieses Passwort ist in
/var/log/mysql.log
notiert Datei und kann mit dem folgenden Befehl schnell gefunden werden.sudo grep 'temporary password' /var/log/mysqld.log
Verwendung von MySQL
Das Standardwerkzeug für die Interaktion mit MySQL ist mysql
Client, der mit dem mysql-server
installiert wird Paket. Der MySQL-Client wird über ein Terminal verwendet.
Root-Anmeldung
-
So melden Sie sich als Root-Benutzer bei MySQL an:
mysql -u root -p
-
Wenn Sie dazu aufgefordert werden, geben Sie das Root-Passwort ein, das Sie bei der Ausführung des mysql_secure_installation-Skripts zugewiesen haben.
Daraufhin wird Ihnen ein Willkommens-Header und die unten gezeigte MySQL-Eingabeaufforderung angezeigt:
mysql>
-
Um eine Liste mit Befehlen für die MySQL-Eingabeaufforderung zu generieren, geben Sie
\h
ein . Sie sehen dann: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>
Erstellen Sie einen neuen MySQL-Benutzer und eine neue Datenbank
-
Im folgenden Beispiel
testdb
ist der Name der Datenbank,testuser
ist der Benutzer undpassword
ist das Passwort des Benutzers.create database testdb; create user 'testuser'@'localhost' identified by 'password'; grant all on testdb.* to 'testuser' identified by 'password';
Sie können diesen Vorgang abkürzen, indem Sie den Benutzer while erstellen Datenbankberechtigungen zuweisen:
create database testdb; grant all on testdb.* to 'testuser' identified by 'password';
-
Beenden Sie dann MySQL.
exit
Erstellen Sie eine Beispieltabelle
-
Melden Sie sich erneut als
testuser
an .mysql -u testuser -p
-
Erstellen Sie eine Beispieltabelle mit dem Namen Kunden . Dadurch wird eine Tabelle mit einem Kunden-ID-Feld des Typs INT für Ganzzahl (automatisch inkrementiert für neue Datensätze, verwendet als Primärschlüssel) sowie zwei Feldern zum Speichern des Kundennamens erstellt.
use testdb; create table customers (customer_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, first_name TEXT, last_name TEXT);
-
Beenden Sie dann MySQL.
exit
Setzen Sie das MySQL-Root-Passwort zurück
Wenn Sie Ihr MySQL-Root-Passwort vergessen, kann es zurückgesetzt werden.
-
Stoppen Sie die aktuelle MySQL-Serverinstanz und starten Sie sie dann mit einer Option neu, um nicht nach einem Passwort zu fragen.
sudo systemctl stop mysqld sudo mysqld_safe --skip-grant-tables &
-
Verbinden Sie sich erneut mit dem MySQL-Server mit dem MySQL-Root-Konto.
mysql -u root
-
Verwenden Sie die folgenden Befehle, um das Passwort von root zurückzusetzen. Ersetzen Sie
password
mit einem starken Passwort.use mysql; update user SET PASSWORD=PASSWORD("password") WHERE USER='root'; flush privileges; exit
-
Starten Sie dann MySQL neu.
sudo systemctl start mysqld
MySQL optimieren
MySQL Tuner ist ein Perl-Skript, das eine Verbindung zu einer laufenden Instanz von MySQL herstellt und Konfigurationsempfehlungen basierend auf der Arbeitslast bereitstellt. Idealerweise sollte die MySQL-Instanz mindestens 24 Stunden in Betrieb gewesen sein, bevor der Tuner ausgeführt wird. Je länger die Instanz läuft, desto besser wird MySQL Tuner beraten.
-
Laden Sie MySQL Tuner in Ihr Home-Verzeichnis herunter.
wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl
-
Um es auszuführen:
perl ./mysqltuner.pl
Sie werden nach dem Namen und dem Passwort des MySQL-Root-Benutzers gefragt. Die Ausgabe zeigt zwei interessante Bereiche:Allgemeine Empfehlungen und Anzupassende Variablen.
MySQL Tuner ist ein ausgezeichneter Ausgangspunkt, um einen MySQL-Server zu optimieren, aber es wäre ratsam, zusätzliche Nachforschungen für Konfigurationen anzustellen, die auf die Anwendung(en) zugeschnitten sind, die MySQL auf Ihrem Linode verwenden.
Noch ein paar Fragen?Treten Sie unserer Community bei und posten Sie Ihre Fragen, damit andere Linode- und Linux-Enthusiasten Ihnen helfen können.
Verwandte Fragen:
- So installieren Sie phpMyAdmin auf Centos7
- Wie kann ich einen LAMP/LEMP-Stack auf meinem Linode einrichten?
- Wie führe ich sowohl MySQL als auch MongoDB aus?
Weitere Informationen
Weitere Informationen zu diesem Thema finden Sie in den folgenden Ressourcen. Obwohl diese in der Hoffnung bereitgestellt werden, dass sie nützlich sind, beachten Sie bitte, dass wir nicht für die Genauigkeit oder Aktualität extern gehosteter Materialien garantieren können.
- MySQL 5.6 Referenzhandbuch
- PHP-MySQL-Handbuch
- Perl-DBI-Beispiele für DBD::mysql
- MySQLdb-Benutzerhandbuch
- MySQL-Tuner-Anleitung