Ubuntu-Benutzer haben die Wahl zwischen zwei zuverlässigen relationalen Datenbankverwaltungssystemen (RDBMS),MySQL und MariaDB . MySQL erfreut sich seit langem großer Beliebtheit, aber das Interesse an MariaDB ist aufgrund seiner Leistungsvorteile und zusätzlichen Funktionen gestiegen. Dieser Leitfaden vergleicht die beiden Datenbanksysteme und enthält Anweisungen zur Installation und Verwendung von MySQL unter Ubuntu 20.04.
Was ist MySQL?
Das MySQL RDBMS ist eine der beliebtesten Open-Source-Anwendungen. Es ist Teil des LAMP-Stacks , das der Eckpfeiler vieler Ubuntu-Systeme ist. Dieser Stack besteht aus Linux, dem Apache-Webserver, dem MySQL-RDBMS und der Programmiersprache PHP. Diese Anwendungen arbeiten zusammen, um Webanwendungen, Softwareentwicklung und spezialisierte Aktivitäten wie Data Science zu unterstützen. Die Hauptanwendung von MySQL liegt in kleinen bis mittelgroßen Einzelserverkonfigurationen.
MySQL-Abfragen werden in der Structured Query Language geschrieben (SQL). Als relationale Datenbank speichert und organisiert sie Daten in Tabellen. Tabellen strukturieren die tatsächlichen Daten in Tabellen als eine Reihe von Zeilen, wobei jede Zeile aus einer oder mehreren Spalten besteht. Jede Zeile stellt einen anderen Eintrag in der Tabelle dar, während jede Spalte ein Datenfeld innerhalb des Eintrags enthält. Die Datenfelder in diesen Tabellen können miteinander in Beziehung gesetzt werden, und diese Beziehungen helfen bei der Strukturierung und Organisation der Datenbank. Spezielle SQL-Anweisungen ermöglichen es Clients, Daten hinzuzufügen, zu löschen, zu ändern und abzurufen.
MySQL ist für seine Stabilität und Zuverlässigkeit bekannt und gilt als einfach und leicht zu bedienen. Es ist als kostenlose Open-Source-Software unter der GNU General Public License verfügbar. MySQL ist für alle Linux-Distributionen sowie andere Betriebssysteme verfügbar. Es ist jetzt im Besitz der Oracle Corporation. Oracle bietet auch die kommerzielle MySQL Enterprise Edition als höherwertiges Produkt an.
MySQL vs. MariaDB
Die beiden wichtigsten Open-Source-Datenbankalternativen, MySQL und MariaDB, sind sich sehr ähnlich. Sie sind beide RDBMS-Produkte und verwenden beide SQL. Beide Datenbanksysteme haben kostenlose Versionen und sehen und verhalten sich ähnlich. Da MariaDB ursprünglich von MySQL abgezweigt wurde, ist dies nicht überraschend. MariaDB wurde seitdem weiterentwickelt und bietet viele neue Verbesserungen in Bezug auf Sicherheit und Leistung. Bei MySQL hingegen sind viele erweiterte Funktionen nur in der Enterprise Edition zu finden. Hier ist eine Zusammenfassung der Ähnlichkeiten und Unterschiede zwischen den beiden Produkten:
- MariaDB unterstützt mehr Verbindungen als MySQL.
- Beide Datenbanken können mit mehreren Speichersystemen arbeiten, obwohl MariaDB mehr Optionen bietet.
- MariaDB kann Daten schneller replizieren als MySQL und hat eine bessere Gesamtleistung. MySQL handhabt große Transaktionen effektiver, aber MariaDB schneidet in skalierten Situationen besser ab.
- MySQL unterstützt einige Funktionen, die MariaDB nicht hat, wie z. B. dynamische Spalten. Jede Datenbank hat einige erweiterte Funktionen und Verbesserungen, die die andere nicht hat.
- MySQL ist älter, etablierter, beliebter und hat mehr Community-Unterstützung. MySQL bietet umfassendere kostenpflichtige Supportpläne.
- MariaDB und MySQL sind vollständig kompatibel.
- Beide Produkte sind Open Source, aber das MySQL-Lizenzmodell ist restriktiver.
Zusammenfassend sind beide Systeme für die meisten Benutzer mehr als ausreichend. MariaDB bietet eine bessere Leistung, während MySQL besser etabliert ist und besser unterstützt wird.
Bevor Sie beginnen
-
Wenn Sie dies noch nicht getan haben, erstellen Sie ein Linode-Konto und eine Compute-Instanz. Sehen Sie sich unsere Leitfäden Erste Schritte mit Linode und Erstellen einer Compute-Instanz an.
-
Folgen Sie unserem Leitfaden zum Einrichten und Sichern einer Compute-Instanz, um Ihr System zu aktualisieren. Möglicherweise möchten Sie auch die Zeitzone festlegen, Ihren Hostnamen konfigurieren, ein eingeschränktes Benutzerkonto erstellen und den SSH-Zugriff sichern.
Hinweis Die Schritte in diesem Handbuch sind für Nicht-Root-Benutzer geschrieben. Befehlen, die erhöhte Berechtigungen erfordern, wird das Präfixsudovorangestellt . Wenn Sie mitsudonicht vertraut sind finden Sie im Handbuch für Linux-Benutzer und -Gruppen.
So installieren Sie MySQL Server
MySQL ist als Teil der standardmäßigen Ubuntu-Pakete verfügbar, daher ist es nicht erforderlich, die Quellliste zu bearbeiten. Es kann einfach mit apt installiert werden , aber es ist wichtig, die Anwendung zu sichern und die Firewall anschließend zu bearbeiten. Diese Anweisungen richten sich an Ubuntu-Benutzer, gelten jedoch allgemein für diejenigen, die MySQL auf einer anderen Linux-Distribution installieren möchten.
MySQL herunterladen
Führen Sie die folgenden Schritte aus, um den MySQL-Server unter Ubuntu zu installieren:
-
Installieren Sie die MySQL-Serveranwendung.
sudo apt install mysql-server -
Bestätigen Sie mit
systemctl, dass der MySQL-Server läuft Befehl. Es sollte den Statusactiveanzeigen .sudo systemctl status mysqlmysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset:> Active: active (running) since Thu 2021-09-09 12:24:29 UTC; 1h 44min ago
Konfigurieren Sie den MySQL-Server unter Linux
Die mysql_secure_installation Dienstprogramm ist die einfachste Möglichkeit, die Anwendung zu konfigurieren. Gehen Sie folgendermaßen vor, um das Setup-Skript zu verwenden:
-
Starten Sie die
mysql_secure_installationDienstprogramm, um das Root-Passwort festzulegen und andere Standardoptionen zu konfigurieren.sudo mysql_secure_installation -
Die Anwendung fragt, ob die
VALIDATE PASSWORD COMPONENTaktiviert werden soll Komponente. Wenn Sie mityantworten , fragt es dann, ob die Passwortstärke aufLOWgesetzt werden soll ,MEDIUM, oderHIGH.VALIDATE PASSWORD COMPONENT can be used to test passwords and improve security. It checks the strength of password and allows the users to set only those passwords which are secure enough. Would you like to setup VALIDATE PASSWORD component? -
Bei der nächsten Eingabeaufforderung fragt das Dienstprogramm nach einem Passwort für das Root-Konto. Legen Sie das Passwort fest und geben Sie es erneut ein.
Please set the password for root here. New password: Re-enter new password: -
Die folgenden Fragen fragen, ob anonyme Benutzer entfernt werden sollen, um den
rootzuzulassen Konto, um eine Remoteverbindung herzustellen, und um dentestzu entfernen Datenbank. Geben Sieyein odernan jeder Eingabeaufforderung nach Ihren Vorlieben. DertestDie Datenbank ist während der anfänglichen Validierung nützlich, aber aus Sicherheitsgründen ist es am besten,rootzu verbieten Konto daran hindern, sich aus der Ferne anzumelden.By default, a MySQL installation has an anonymous user, allowing anyone to log into MySQL without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? (Press y|Y for Yes, any other key for No) : Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? (Press y|Y for Yes, any other key for No) : By default, MySQL comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? (Press y|Y for Yes, any other key for No -
Wenn Sie dazu aufgefordert werden, laden Sie das
privilegeneu Tabellen, um die Datenbank zu aktualisieren.Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? (Press y|Y for Yes, any other key for No)ySuccess. All done! -
(Optional ) Stellen Sie für den Fernzugriff auf MySQL sicher, dass der MySQL-Verkehr über
ufwzugelassen ist Firewall. Fügen Sie die folgende Regel hinzu, um Port3306zu öffnen auf der Firewall. Diese Regel sollte nicht hinzugefügt werden, wenn kein Fernzugriff erforderlich ist.ufw allow mysqlStatus: active To Action From -- ------ ---- Apache Full ALLOW Anywhere OpenSSH ALLOW Anywhere 3306/tcp ALLOW Anywhere Apache Full (v6) ALLOW Anywhere (v6) OpenSSH (v6) ALLOW Anywhere (v6) 3306/tcp (v6) ALLOW Anywhere (v6)
Melden Sie sich als Root-Benutzer bei MySQL an
Obwohl die root Benutzer vollen Zugriff auf die MySQL-Datenbank hat, sollte ihre Verwendung administrativen Zwecken vorbehalten sein. Dadurch wird die Wahrscheinlichkeit verringert, dass kritische Abschnitte der Datenbank versehentlich überschrieben werden. Selbst in einer Einzelbenutzerkonfiguration sollte für die meisten MySQL-Aktivitäten ein separates Benutzerkonto erstellt werden.
Zugriff auf den MySQL-Server als root Benutzer und erstellen Sie ein neues Benutzerkonto, gehen Sie folgendermaßen vor:
-
Verwenden Sie das
sudo mysqlBefehl zum Zugriff auf die Datenbank. MySQL authentifiziert den Root-Benutzer basierend auf seinen Root-Anmeldeinformationen, wenn er sich lokal anmeldet, sodass kein Passwort erforderlich ist. Greifen Sie alternativ mitsudo mysql -u root -pauf das Root-Konto zu , zusammen mit demrootPasswort.sudo mysql -
MySQL zeigt die Versionsnummer und einige Informationen über die Installation an und präsentiert dann die MySQL-Eingabeaufforderung.
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 15 Server version: 8.0.26-0ubuntu0.20.04.2 (Ubuntu) ... mysql> -
Verwenden Sie
SHOW DATABASES, um zu bestätigen, dass MySQL korrekt funktioniert Befehl, um alle Datenbanken anzuzeigen.SHOW DATABASES;+--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | +--------------------+ 4 rows in set (0.01 sec) -
Erstellen Sie einen neuen Benutzer mit dem
CREATE USERBefehl. Geben Sie den Benutzernamen im Format'username'@'IP_Address'ein , wobeiIP_Addressist die IP-Adresse des Benutzers. Wenn der Benutzer vom lokalen Linode aus auf MySQL zugreift, ersetzen Sielocalhostanstelle der IP-Adresse. Ersetzen Sie im folgenden Befehlmysqluserundpasswordmit dem tatsächlichen Benutzernamen und Passwort.Hinweis MySQL bietet mehrere verschiedene Authentifizierungsmechanismen. Das
caching_sha2_password-Methode wird für Benutzer empfohlen, die sich mit einem Passwort anmelden möchten, und wird hier verwendet. Bestimmte ältere Anwendungen können sich auf diese Weise jedoch möglicherweise nicht ordnungsgemäß authentifizieren. In diesem Fallmysql_native_passwordsollte stattdessen verwendet werden. Die MySQL-Quellreplikatreplikation erfordert möglicherweise dassha256_passwordMethode.CREATE USER 'mysqluser'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'password'; -
Gewähren Sie dem neuen Benutzer mit
GRANT PRIVILEGEZugriff Befehl im FormatGRANT list of privileges ON table TO 'username'@'IP_Address';. Zu den häufigeren Privilegien gehörtCREATE,ALTER,DROP,INSERT,UPDATE,DELETE, undSELECT. Um diese Berechtigungen auf alle Datenbanken anzuwenden, verwenden Sie die Platzhaltervariable*.*. Der folgende Befehl gewährtmysqluserallgemeine nicht-administrative Berechtigungen für alle Datenbanken .GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES, RELOAD ON *.* TO 'mysqluser'@'localhost' WITH GRANT OPTION; -
Um die MySQL-Eingabeaufforderung zu verlassen, geben Sie
exitein .exit
Wie man MySQL verwendet
MySQL verwendet für alle seine Befehle die Standard-SQL-Syntax. Die Schritte in diesem Abschnitt zeigen, wie grundlegende Aufgaben in MySQL ausgeführt werden, z. B. das Erstellen von Datenbanken, Tabellen und das Hinzufügen von Daten. Vollständige Informationen zur Verwendung von MySQL finden Sie im MySQL-Referenzhandbuch. Probieren Sie für eine kurze, aber gründliche Einführung das MySQL-Tutorial aus.
Datenbank erstellen
-
Um eine Datenbank zu erstellen, melden Sie sich bei MySQL mit einem Konto an, das
CREATEbesitzt Privilegien. Ersetzen Siemysqlusernamemit dem von Ihnen erstellten Benutzernamen.mysql -u mysqlusername -p -
Erstellen Sie eine neue Datenbank mit
CREATE DATABASEBefehl. Ersetzen Sienewdatabasenamemit dem gewünschten Namen für Ihre Datenbank.CREATE DATABASE newdatabasename;Query OK, 1 row affected (0.00 sec) -
Um zu bestätigen, dass die neue Datenbank korrekt erstellt wurde, verwenden Sie
SHOW DATABASES.SHOW DATABASES;+--------------------+ | Database | +--------------------+ ... | newdatabasename | ... +--------------------+ 5 rows in set (0.00 sec) -
Geben Sie die Datenbank an, mit der Sie arbeiten möchten, indem Sie
USEverwenden Befehl. Ersetzen Sienewdatabasenamemit dem Namen der Datenbank, die Sie gerade erstellt haben.USE newdatabasename;Database changedHinweis Sie können auch den
USEverwenden Befehl, wenn Sie mehr als eine Datenbank haben und zwischen ihnen wechseln möchten. -
Um den Namen der aktuellen Datenbank herauszufinden, verwenden Sie
SELECT DATABASEBefehl. Die Ausgabe zeigt den Datenbanknamen an.SELECT DATABASE();+------------------+ | DATABASE() | +------------------+ | newdatabasename | +------------------+
Eine Tabelle erstellen
An diesem Punkt ist die Datenbank newdatabasename hat keine Tabellen, daher können noch keine Daten darin gespeichert werden. Um eine Tabelle zu definieren, verwenden Sie CREATE TABLE Befehl. Neben dem Namen der Tabelle erfordert dieser Befehl den Namen und den Datentyp jedes Felds. Der Datentyp charakterisiert die im Feld gespeicherten Daten. Beispielsweise könnte der Datentyp eine Zeichenfolge variabler Länge sein, bekannt als VARCHAR . Eine vollständige Liste der Datentypen finden Sie in der MySQL-Dokumentation. Einige der gebräuchlicheren Datentypen sind wie folgt.
- INT: Dieser kann einen Wert zwischen
-2147483648enthalten und2147483647. Wenn angegeben alsUNSIGNED, es kann Werte zwischen0speichern und4294967295. - SMALLINT: Enthält einen noch kleineren ganzzahligen Wert zwischen
-32768und32767. - FLOAT: Dieser Typ kann eine Fließkommazahl speichern.
- DATUM: Speichert ein Datum im Format
YYYY-MM-DDformatieren. - DATETIME: Speichert eine Kombination aus Datum und Uhrzeit im Format
YYYY-MM-DD HH:MM:SSFormat. Die gleiche Zeit kann ohne Bindestriche und Doppelpunkte imTIMESTAMPgespeichert werden formatieren. - VARCHAR(N): Dies ist eine Zeichenfolge variabler Länge zwischen
1undNZeichen lang, mit einer maximalen Länge von255Zeichen. - TEXT: Dieser Datentyp hält bis zu
65535Figuren. Es kann Text, Bilder oder binäre Daten enthalten. - CHAR(N): Dieser Typ repräsentiert ein Textfeld fester Länge der Länge
N. Um beispielsweise zweistellige Zustandscodes zu speichern, verwenden Sie den DatentypCHAR(2).
Bevor Sie irgendwelche Tabellen erstellen, ist es wichtig, sich für ein Schema zu entscheiden für die Datenbank. Das Schema beschreibt, was jede Tabelle darstellt, welche Daten in jeder Tabelle gespeichert sind und in welcher Beziehung die Tabellen stehen. Gehen Sie folgendermaßen vor, um eine Tabelle zu erstellen:
-
Wechseln Sie, während Sie bei MySQL angemeldet sind, zu der Datenbank, in der Sie die Tabelle hinzufügen möchten.
use newdatabasename; -
Verwenden Sie die
CREATE TABLEBefehl zum Generieren einer neuen Tabelle. Verwenden Sie das FormatCREATE TABLE table_name (field_1 datatype, field_n datatype);.CREATE TABLE newtablename (column1 VARCHAR(20), column2 CHAR(1), column3 DATE, column4 SMALLINT UNSIGNED);Query OK, 0 rows affected (0.02 sec) -
Um zu bestätigen, dass die Tabelle jetzt existiert, verwenden Sie
SHOW TABLESBefehl.SHOW TABLES;+----------------------------+ | Tables_in_newdatabasename | +----------------------------+ | newtablename | +----------------------------+ 1 row in set (0.00 sec) -
Um die Tabellenstruktur und die Liste der Felder zu überprüfen, verwenden Sie
DESCRIBEBefehl.DESCRIBE newtablename;+---------+-------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+-------------------+------+-----+---------+-------+ | column1 | varchar(20) | YES | | NULL | | | column2 | char(1) | YES | | NULL | | | column3 | date | YES | | NULL | | | column4 | smallint unsigned | YES | | NULL | | +---------+-------------------+------+-----+---------+-------+ 4 rows in set (0.00 sec) -
Wenn eine Tabelle nicht mehr benötigt wird, löschen Sie sie mit
DROP TABLEBefehl.Achtung Wenn eine Tabelle gelöscht wird, gehen alle Daten in der Tabelle verloren und können nicht wiederhergestellt werden.
DROP TABLE newtablename;
Daten hinzufügen und abrufen
Der Hauptweg, um eine neue Datenzeile in eine Tabelle einzufügen, ist mit INSERT Befehl.
-
Um eine Zeile hinzuzufügen, verwenden Sie
INSERTBefehl. Geben Sie den Tabellennamen, das SchlüsselwortVALUESan , und eine eingeklammerte, durch Kommas getrennte Liste von Werten im FormatINSERT INTO tablename VALUES ('value_1', ... 'value_n');. Die Spaltenwerte müssen dieselbe Reihenfolge wie die Tabellendefinition haben, wobei die Zeichenfolgen- und Datumswerte in Anführungszeichen stehen. Zum Beispiel, um Daten zunewtablenamehinzuzufügen , geben Sie Werte fürcolumn1an ,column2,column3, undcolumn4, in dieser Reihenfolge.INSERT INTO newtablename VALUES ('value1','a','2021-09-10',123);Query OK, 1 row affected (0.01 sec) -
Um Daten abzurufen, verwenden Sie
SELECTBefehl, zusammen mit einigen Einschränkungen, die MySQL mitteilen, welche Zeilen zurückgegeben werden sollen. Der gesamte Inhalt der Tabelle kann zurückgegeben werden oder nur eine Teilmenge. Um alle Zeilen in einer Tabelle auszuwählen, verwenden SieSELECT *Befehl, aber fügen Sie keine Qualifizierer hinzu.SELECT * FROM newtablename;+---------+---------+------------+---------+ | column1 | column2 | column3 | column4 | +---------+---------+------------+---------+ | value1 | a | 2021-09-10 | 123 | | value2 | b | 2021-09-08 | 123 | +---------+---------+------------+---------+ 2 rows in set (0.00 sec) -
Es ist auch möglich, nur Zeilen auszuwählen, die bestimmten Kriterien entsprechen, beispielsweise wenn eine Spalte auf einen bestimmten Wert gesetzt ist. Verwenden Sie das
WHERESchlüsselwort als Qualifizierer, gefolgt von den Übereinstimmungskriterien als Einschränkung. In diesem Beispiel nur Zeilen, in denencolumn2aufbgesetzt ist angezeigt.SELECT * FROM newtablename WHERE column2 = 'b';+---------+---------+------------+---------+ | column1 | column2 | column3 | column4 | +---------+---------+------------+---------+ | value2 | b | 2021-09-08 | 123 | +---------+---------+------------+---------+ 1 row in set (0.00 sec) -
Bei Tabellen mit vielen Spalten ist es oft einfacher, die angezeigten Informationen einzuschränken. Um nur bestimmte Spalten für jede Zeile auszuwählen, geben Sie die Spaltennamen anstelle von
*an Symbol.SELECT column1, column4 FROM newtablename;+---------+---------+ | column1 | column4 | +---------+---------+ | value1 | 123 | | value2 | 123 | +---------+---------+ 2 rows in set (0.00 sec) -
Um eine Zeile in einer Tabelle zu ändern, verwenden Sie
UPDATEBefehl. DasSETDas Schlüsselwort gibt die zu aktualisierende Spalte und den neuen Wert an. Ggf. dasWHEREDas Schlüsselwort bietet eine Methode, um die Operation so einzuschränken, dass sie nur auf bestimmte Zeilen angewendet wird. Im folgenden Beispiel der Wert voncolumn4wird nur auf155geändert wenncolumn2ist gleichb.UPDATE newtablename SET column4 = 155 WHERE column2 = 'b';Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 -
Der
SELECT *-Anweisung kann verwendet werden, um die Aktualisierung zu bestätigen.SELECT * FROM newtablename;+---------+---------+------------+---------+ | column1 | column2 | column3 | column4 | +---------+---------+------------+---------+ | value1 | a | 2021-09-10 | 123 | | value2 | b | 2021-09-08 | 155 | +---------+---------+------------+---------+ 2 rows in set (0.00 sec)
Fazit:MySQL auf Ubuntu 20.04
MySQL ist eine gute Wahl für kleine bis mittelgroße Webanwendungen. Es verwendet die branchenübliche SQL-Programmiersprache, die ziemlich einfach zu verwenden ist. MySQL ist sehr stabil und robust und verfügt neben einer guten Unterstützung über zahlreiche Ressourcen. Die wichtigste Alternative zu MySQL ist MariaDB. Es bietet eine bessere Leistung und neuere Funktionen, ist aber nicht so gut etabliert.
Sie können den MySQL-Server unter Ubuntu einfach mit apt herunterladen und installieren Pakete und die mysql_secure_installation Nützlichkeit. Selbst wenn Sie die einzige Person sind, die MySQL verwendet, ist es am besten, einen neuen MySQL-Benutzer mit eingeschränkteren Rechten zu erstellen.
Um MySQL zu verwenden, bestimmen Sie zunächst das Datenbankschema und definieren Sie die Tabelleninhalte. Als nächstes erstellen Sie eine Datenbank und die Datentabellen. Daten können mit INSERT hinzugefügt werden Befehl, modifiziert mit UPDATE Befehl und mit SELECT abgerufen werden Befehl. Selbstverständlich kann MySQL auch hochkomplexe Operationen ausführen. Arbeiten Sie das MySQL-Tutorial durch, um loszulegen, und konsultieren Sie die MySQL-Dokumentation für einen vollständigen Überblick.
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.
- MariaDB-Website
- MySQL-Website