GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Konfigurieren Sie den MySQL-Server auf dem Ubuntu-Betriebssystem

Der Artikel behandelte ein grundlegendes MySQL®-Server-Setup auf dem Ubuntu®-Betriebssystem. Es wurde beschrieben, wie man das Root-Passwort festlegt, eine Datenbank erstellt und einen Benutzer für die Datenbank hinzufügt. Dieser Artikel untersucht die MySQL-Konfiguration ein wenig detaillierter, damit Sie ihre Konfiguration anpassen und vorbereitet sein können, falls etwas schief geht.

Finde die Konfigurationsdateien

Standardmäßig finden Sie die MySQL®-Konfigurationsdateien in:

/etc/mysql

Wenn sie jedoch nicht vorhanden sind, können Sie mysqld verwenden um die Konfiguration zu finden. Führen Sie den folgenden Befehl aus:

$ /usr/sbin/mysqld --help --verbose

Der erste Teil der langen Antwort beschreibt die Optionen, die Sie an den Server senden können, wenn Sie ihn starten. Der zweite Teil zeigt die während der Serverkompilierung eingestellte Konfiguration.

Suchen Sie am Anfang der Ausgabe ein paar Zeilen, die dem folgenden Beispiel ähneln:

Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf

Der Server untersucht diese Liste, bis er eine Konfigurationsdatei findet.

my.cnf-Konfigurationsdatei

Öffnen und prüfen Sie die Datei /etc/mysql/my.cnf Datei.

Kommentarzeilen beginnend mit # , dokumentieren Sie die Verwendung der verschiedenen Einstellungen. Sie zeigen Details zum Speicherort von Protokolldateien, Datenbankdateien und anderen Details an.

Konfigurationsgruppen

Die Konfigurationsdatei enthält Zeilen mit einem einzelnen Wort in eckigen Klammern, wie [client] oder [mysqld] .Diese Abschnitte sind Konfigurationsgruppen. Sie machen wichtige Konfigurationselemente für die Programme, die die Konfigurationsdatei lesen, besser sichtbar.

Der Abschnitt zur Serverkonfiguration ist technisch gesehen eine Sammlung von Tools. Dazu gehört der Server (mysqld ), der Client (mysql ) und andere Tools. Diese Programme finden Sie in my.cnf um zu sehen, wie sie sich verhalten sollten.

Der Client-Konfigurationsabschnitt steuert mysql Client und mysqld Abschnitt steuert die Serverkonfiguration.

Protokolldateien

Protokolldateien sind der beste Ort, um mit der Fehlerbehebung eines Programms zu beginnen. Standardmäßig speichert MySQL seine Protokolldateien im folgenden Verzeichnis:

/var/log/mysql

Möglicherweise müssen Sie sudo verwenden um eine Liste der Dateien in diesem Verzeichnis zu erhalten.

Wenn Sie die MySQL®-Protokolle nicht im Standardverzeichnis finden, überprüfen Sie die MySQL-Konfiguration. Sehen Sie sich die my.cnf an Datei und suchen Sie nach einem log_error Zeile, wie in:

log_error = /var/log/mysql/error.log

Wenn Sie keine solche Zeile sehen, erstellen Sie eine in mysqld Abschnitt, damit MySQL® sein eigenes Fehlerprotokoll verwenden kann. Verwenden Sie den Speicherort im Beispiel und erstellen Sie /var/log/mysql Verzeichnis, falls es noch nicht existiert. Starten Sie dann MySQL neu, um die Änderung vorzunehmen.

Stellen Sie sicher, dass der Benutzer in das ausgewählte Protokollverzeichnis schreiben kann, indem Sie mysql steuern Prozess. Der Benutzer, der den Prozess ausführt, wird in der Benutzerkonfiguration definiert Wert für mysqld in my.cnf .

Netzwerkeinstellungen

Möglicherweise gibt es eine „Port“-Einstellung sowohl unter dem Client und Server Konfigurationsabschnitte. Der Port unter dem Server steuert, auf welchem ​​Port der Server lauscht. Der Standardport ist 3306 aber Sie können es ändern.

Der Port im Client teilt dem Client mit, zu welchem ​​Port er sich standardmäßig verbinden soll. Im Allgemeinen möchten Sie, dass beide Porteinstellungen übereinstimmen.

Wenn Sie die Standardeinstellungen verwenden, werden die Porteinträge in der Konfigurationsdatei nicht angezeigt. Wenn Sie den Port ändern möchten, fügen Sie die folgenden Zeilen in den entsprechenden Kategorien hinzu:

[client]
port = 3306

[mysqld]
port = 3306

Die andere zu suchende Netzwerkeinstellung ist die bind-address Wert. Das wird normalerweise auf die Adresse für localhost gesetzt, 127.0.0.1 . Durch die Bindung an localhost stellt der Server sicher, dass sich niemand von außerhalb des lokalen Computers mit ihm verbinden kann.

Wenn Sie Ihren MySQL-Server auf einem anderen Computer als Ihre Anwendung ausführen, sollten Sie eine Bindung an eine remote zugängliche Adresse statt an den lokalen Host binden. Ändern Sie die Einstellung für die Bindungsadresse so, dass sie mit Ihrer öffentlichen IP-Adresse übereinstimmt. Aus Sicherheitsgründen sollten Sie in einem Netzwerk eine Back-End-IP-Adresse verwenden.

Wenn Sie keine Bind-Adresse sehen -Eintrag, sollten Sie einen in mysqld einfügen Kategorie, um den Zugriff auf den Server zu kontrollieren:

[mysqld]
$ bind-address = 127.0.0.1

Denken Sie daran, den Hostnamen des Clients zu berücksichtigen, wenn Sie Ihre Datenbankbenutzer einrichten, und Firewall-Zugriff bereitzustellen, wenn Sie iptables erneut ausführen .

mysqld und mysqld_safe

Hinter den Kulissen gibt es zwei Versionen des MySQL-Servers, mysqld und mysqld_safe . Beide lesen die gleichen Konfigurationsabschnitte. Allerdings mysqld_safe startet mit mehr aktivierten Sicherheitsfunktionen, um die Wiederherstellung nach der Fehlerbehebung zu erleichtern.

Sowohl mysqld und mysqld_safe Konfigurationseinträge in mysqld lesen Sektion. Wenn Sie eine mysqld_safe Abschnitt, dann nur noch mysqld_safe verwendet diese Werte.

Standardmäßig startet der MySQL-Dienst mysqld_safe , was angemessen ist.

mysqladmin

Der mysqladmin Mit dem Tool können Sie einige Verwaltungsfunktionen über die Befehlszeile ausführen, die in diesem Artikel nicht behandelt werden. Sie können das Tool später genauer untersuchen, um zu sehen, was es kann, insbesondere, wenn Sie Skripts erstellen müssen, die Funktionen wie das Überprüfen des Serverstatus oder das Erstellen und Löschen von Datenbanken ausführen müssen.

Sicherungen

Neben der üblichen Sicherung des gesamten Computers haben Sie folgende Möglichkeiten, Ihre Datenbanken zu sichern Ansatz. Die beiden wichtigsten Optionen sind das Kopieren der Datenbankdateien oder die Verwendung von mysqldump .

Dateikopie

Standardmäßig erstellt MySQL ein Verzeichnis für jede Datenbank in seinem Datenverzeichnis /var/lib/mysql .

Nachdem Sie das Datenverzeichnis gefunden haben, warten Sie einen Moment, bevor Sie eine Kopie davon erstellen. Wenn der Datenbankserver aktiv ist, schreibt er neue Werte in Tabellen. Unterbrechen Sie diesen Vorgang nicht, um eine potenzielle Beschädigung Ihres Backups zu vermeiden.

Um sicherzustellen, dass Sie die Datenbankdateien sauber kopiert haben, sollten Sie den MySQL-Server vor dem Kopieren vollständig herunterfahren.

Sie können die Datenbank als schreibgeschützt sperren für die Dauer der Kopie. Wenn Sie fertig sind, lösen Sie die Sperre. Auf diese Weise können Ihre Anwendungen weiterhin Daten lesen, während Sie Dateien sichern.

Sperren Sie die Datenbanken auf schreibgeschützt indem Sie den folgenden Befehl über die Befehlszeile ausführen:

$ mysql -u root -p -e "FLUSH TABLES WITH READ LOCK;"

Führen Sie den folgenden Befehl aus, um die Datenbank zu entsperren, wenn Sie fertig sind:

$  mysql -u root -p -e "UNLOCK TABLES;"

Die MySQL-Client-Option -e , weist den Client an, die Abfrage in Anführungszeichen auszuführen, als ob wir sie in die MySQL®-Shell eingegeben hätten.

Wenn Sie diese Befehle in einem Skript schreiben, können Sie das Passwort direkt nach -p in Anführungszeichen setzen ohne Leerzeichen zwischen den beiden, ähnlich den folgenden Beispielen:

$ mysql -u root -p"password" -e "FLUSH TABLES WITH READ LOCK;"
$ mysql -u root -p"password" -e "UNLOCK TABLES;"

Stellen Sie sicher, dass Sie die Berechtigungen für diese Datei so einstellen, dass der Lesezugriff aus Gründen der Passwortsicherheit eingeschränkt wird.

mysqldump

Ein weiterer Ansatz zum Sichern Ihrer Datenbank ist die Verwendung von mysqldump Werkzeug. Anstatt die Datenbankdateien direkt zu kopieren, mysqldump generiert eine Textdatei, die die Datenbank darstellt. Standardmäßig enthält die Textdatei eine Liste von SQL-Anweisungen zum Neuerstellen der Datenbank, aber Sie können die Datenbank auch in einem anderen Format wie .CSV exportieren oder .XML . Sie können die Manpage für mysqldump lesen um alle Optionen anzuzeigen.

Die von mysqldump generierten Anweisungen gehe direkt zur Standardausgabe. Sie können einen angeben, um die Ausgabe umzuleiten, indem Sie den folgenden Befehl in der Befehlszeile ausführen:

$ mysqldump -u root -p demodb > dbbackup.sql

Dieser Befehl teilt mysqldump mit um die demodb neu zu erstellen Datenbank in SQL-Anweisungen zu speichern und in die Datei dbbackup.sql zu schreiben . Beachten Sie, dass die Optionen für Benutzername und Passwort genauso funktionieren wie beim MySQL-Client, sodass Sie das Passwort direkt nach -p einfügen können in einem Skript.

Aus mysqldump wiederherstellen

Wiederherstellen eines mysqldump Die Datenbank ähnelt der Erstellung des Dumps, aber Sie verwenden mysql statt mysqldump ,wie im folgenden Wiederherstellungsbefehl gezeigt:

$ mysql -u root -p demodb < dbbackup.sql

Beachten Sie außerdem, dass < Die spitze Klammer ändert die Richtung. Dadurch wird der Befehl von der Umleitung seiner Ausgabe auf das Extrahieren der Eingabe aus der vorhandenen Datei umgeschaltet. Diese Eingabe wird an mysql gesendet Befehl, wodurch die Anweisungen die Datenbank neu erstellen.

Standardmäßig werden die generierten SQL-Anweisungen zu bestehenden Datenbanktabellen hinzugefügt und nicht überschrieben. Wenn Sie eine Sicherung über eine vorhandene Datenbank wiederherstellen, sollten Sie zuerst die Datenbanktabellen löschen oder die Datenbank selbst löschen und neu erstellen. Sie können dieses Verhalten ändern, indem Sie $ --add-drop-table verwenden Option mit dem Befehl, der mysqldump erstellt . Das verursacht mysqldump um einen Befehl zu den Sicherungsdateien hinzuzufügen, die er schreibt, der Tabellen löscht, bevor sie neu erstellt werden.

Datenbank-Engine

Die Datenbank-Engine ist der Prozess, der hinter den Kulissen abläuft, das Schreiben und Lesen von Daten aus Dateien. Sie müssen dies nur wissen, wenn Sie eine Anwendung ausführen möchten, die für eine bestimmte Datenbank-Engine optimiert wurde.

Anwendungen, die Tabellen benötigen, erstellen diese nach Bedarf und erstellen den Engine-Typ automatisch. Um zu sehen, welche Engine die Tabellen Ihrer Datenbank verwenden, können Sie den folgenden Befehl in der MySQL-Shell ausführen und demodb ändern zum Namen Ihrer Datenbank.:

$ SHOW TABLE STATUS FROM demodb;

Wählen Sie eine Engine aus

Im Idealfall müssen Sie sich nicht für eine Engine entscheiden. Wenn Sie mit MySQL nicht sehr vertraut sind, lassen Sie die Anwendung standardmäßig einen auswählen. Wenn Sie die Anwendung schreiben, verwenden Sie die Standard-Engine, bis Sie mit Ihren Optionen besser vertraut sind.

Befolgen Sie die Anweisungen Ihres Datenbankadministrators (DBA), falls vorhanden.

Die beiden Datenbank-Engines, die am häufigsten mit MySQL verwendet werden, sind MyISAM und InnoDB . Die Standard-Datenbank-Engine für MySQL-Version 5.1 und früher ist MyISAM , während InnoDB ist die Standard-Datenbank-Engine ab MySQL-Version 5.5.

MyISAM

Denn MyISAM seit einiger Zeit der Standard in MySQL, ist es die kompatibelste Wahl der beiden Haupt-Engines. Bestimmte Suchtypen funktionieren besser auf MyISAM als InnoDB . Obwohl es das ältere der beiden ist, ist es möglicherweise die beste Wahl für einen bestimmten Anwendungstyp.

InnoDB

HINWEIS: Ein DBA kann Ihnen helfen, die beste InnoDB zu erreichen Leistung, weil InnoDB erfordert viele Anpassungen an Ihre Umgebung und Zugriffsmuster. Die Standardkonfiguration ist optimal für den täglichen Einsatz in der Softwareentwicklung.

InnoDB ist fehlertoleranter als MyISAM und bewältigt Abstürze und Wiederherstellungen mit einem viel geringeren Risiko einer Datenbankbeschädigung.

Wenn Ihre Anwendung InnoDB erfordert und Sie MySQL 5.1 oder früher verwenden, sind möglicherweise noch keine Einstellungen in my.cnf vorhanden Konfigurationsdatei. Das kann ein Problem sein, wenn Sie auf einem Server laufen, der nicht viel Arbeitsspeicher hat.

Mit den folgenden Einstellungen können Sie mit InnoDB auf einem gemeinsam genutzten Server mit 256 MB RAM beginnen:

innodb_buffer_pool_size = 32M
innodb_log_file_size = 8M
innodb_thread_concurrency = 8
innodb_file_per_table

Fügen Sie diese zu [mysqld] hinzu Abschnitt der Konfigurationsdatei. Auch dies sind nur grobe Richtwerte. Sie können Ihnen den Einstieg erleichtern, sind aber nicht optimiert. Wenden Sie sich an Ihren DBA oder experimentieren Sie im Laufe der Zeit mit inkrementellen Änderungen, um die Leistung zu verbessern.

  • Installieren Sie den MySQL®-Server auf dem Ubuntu-Betriebssystem
  • Ein MySQL®-Root-Passwort zurücksetzen

Linux
  1. So konfigurieren Sie einen Apache-Webserver

  2. Ändern Sie den SSH-Port im Betriebssystem Linux Ubuntu

  3. Konfigurieren Sie Apache auf dem Ubuntu-Betriebssystem

  4. Gewähren Sie sudo Zugriff in Debian und dem Ubuntu-Betriebssystem

  5. Planen Sie Neustarts im Ubuntu-Betriebssystem

Die vollständige Anleitung zur Installation von MySQL auf Ubuntu

So ändern Sie den Server-Hostnamen in Ubuntu

Wie ändere ich die Zeitzone auf Ubuntu 18.04 Server?

So installieren und konfigurieren Sie einen LAMP-Webserver unter Ubuntu 18.04

Konfigurieren Sie die Netzwerkbindung in Ubuntu Server

Ubuntu 19.04:NTP-Server konfigurieren