Vorwort Ab MySQL 5.7.11 unterstützt MySQL die Datenverschlüsselung für InnoDB-Tabellen, die in separaten Tablespaces gespeichert sind. Diese Funktion ermöglicht die Verschlüsselung ruhender Datendateien physischer Tablespaces. Diese Verschlüsselung wird auf Datenseitenebene innerhalb der Engine durchgeführt. Die Datenseite wird verschlüsselt, wenn sie in das Dateisystem geschrieben wird. Die Verschlüsselung verwendet den AES-Algorithmus und die Entschlüsselung wird durchgeführt, wenn sie aus der Datei in den Speicher gelesen wird. 1 Konfigurieren Sie das Verschlüsselungs-Plugin 1.1 Ändern der Konfigurationsdatei Fügen Sie den folgenden Inhalt zur MySQL-Konfigurationsdatei hinzu [mysqld] x item plugin_dir=/usr/local/mysql5.7/lib/mysql/plugin # Plugin-Pfad, entsprechend der tatsächlichen Situation anpassen early-plugin-load="keyring_file.so" # Verschlüsselungs-Plugin keyring_file_data=/data/mysql3306/keyring/keyring # Der Pfad existiert nicht und muss erstellt werden innodb_file_per_table=1 # Funktioniert nur auf unabhängigen Tablespaces 1.2 Erstellen Sie die für die Verschlüsselung erforderlichen Pfade und konfigurieren Sie die Berechtigungen Beachten Sie, dass der in keyring_file_data konfigurierte Schlüsselbund beim Start automatisch erstellt wird. Erstellen Sie ihn in diesem Schritt einfach im entsprechenden Verzeichnis. mkdir -p /data/mysql3306/keyring/ chown -R mysql:mysql /data/mysql3306/keyring/ chmod 750 /data/mysql3306/keyring 1.3 MySQL neu starten Starten Sie MySQL einfach neu. Nach dem Neustart werden Sie feststellen, dass die Schlüsselringdatei im Verzeichnis /data/mysql3306/keyring generiert wird. Beachten Sie, dass Sie nach dem Neustart auch prüfen sollten, ob im MySQL-Fehlerprotokoll relevante Fehlerinformationen vorhanden sind. Wenn kein Fehler vorliegt, fahren Sie fort. 1.4 Plugin-Status prüfen Nach dem Start können Sie überprüfen, ob das Plug-In wirksam ist mysql> Wählen Sie PLUGIN_NAME, PLUGIN_STATUS, PLUGIN_Type, PLUGIN_Library aus INFORMATION_SCHEMA.PLUGINS, wobei PLUGIN_NAME wie „Schlüsselringdatei“ ist. +--------------+------------------+-------------+-----------------+ | PLUGIN-NAME | PLUGIN-STATUS | PLUGIN-Typ | PLUGIN-Bibliothek | +--------------+------------------+-------------+-----------------+ | Schlüsselringdatei | AKTIV | SCHLÜSSELRING | Schlüsselringdatei.so | +--------------+------------------+-------------+-----------------+ 1 Zeile im Satz (0,01 Sek.) Oder verwenden Sie den Befehl show plugins, um 2 Testen des verschlüsselten Tablespace 2.1 Erstellen Sie eine neue verschlüsselte Tabelle Erstellen Sie eine neue Tabelle und fügen Sie ENCRYPTION='Y' hinzu, um den Tablespace zu verschlüsseln mysql> Tabelle erstellen test1( ID int Primärschlüssel auto_increment, Name varchar(20), Schlüsselname (Name)) VERSCHLÜSSELUNG='J'; Abfrage OK, 0 Zeilen betroffen (0,02 Sek.) Zu diesem Zeitpunkt ändert sich auch die Schlüsselringdatei 2.2 Neue Daten Fügen Sie der neu hinzugefügten Testtabelle Testdaten hinzu und zeigen Sie sie an mysql> einfügen in test1(id,name) Werte(1,'anm'),(2,'keyring'); Abfrage OK, 2 Zeilen betroffen (0,01 Sek.) Datensätze: 2 Duplikate: 0 Warnungen: 0 mysql> wähle * aus test1; +----+---------+ | Ich würde | Name | +----+---------+ | 1 | anm | | 2 | Schlüsselanhänger | +----+---------+ 2 Zeilen im Satz (0,00 Sek.) 2.3 Ändern Sie, ob verschlüsselt werden soll Test zum Abbrechen der Tablespace-Verschlüsselung mysql> anzeigen, Tabelle erstellen, Test1; +-------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Tabelle | Tabelle erstellen | +-------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | test1 | TABELLE ERSTELLEN `test1` ( `id` int(11) NICHT NULL AUTO_INCREMENT, `name` varchar(20) DEFAULT NULL, Primärschlüssel (`id`), SCHLÜSSEL `Name` (`Name`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 ENCRYPTION='Y' | +-------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 1 Zeile im Satz (0,00 Sek.) mysql> Tabelle ändern test1 ENCRYPTION='N'; Abfrage OK, 2 Zeilen betroffen (0,04 Sek.) Datensätze: 2 Duplikate: 0 Warnungen: 0 mysql> anzeigen, Tabelle erstellen, Test1; +-------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Tabelle | Tabelle erstellen | +-------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | test1 | TABELLE ERSTELLEN `test1` ( `id` int(11) NICHT NULL AUTO_INCREMENT, `name` varchar(20) DEFAULT NULL, Primärschlüssel (`id`), SCHLÜSSEL `Name` (`Name`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 ENCRYPTION='N' | +-------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 1 Zeile im Satz (0,00 Sek.) mysql> wähle * aus test1; +----+---------+ | Ich würde | Name | +----+---------+ | 1 | anm | | 2 | Schlüsselanhänger | +----+---------+ 2 Zeilen im Satz (0,00 Sek.) Neukonfiguration für Verschlüsselung mysql> Tabelle ändern test1 VERSCHLÜSSELUNG='Y'; Abfrage OK, 2 Zeilen betroffen (0,03 Sek.) Datensätze: 2 Duplikate: 0 Warnungen: 0 mysql> wähle * aus test1; +----+---------+ | Ich würde | Name | +----+---------+ | 1 | anm | | 2 | Schlüsselanhänger | +----+---------+ 2 Zeilen im Satz (0,00 Sek.) Daher kann die Verschlüsselungsmethode des Tablespace online angepasst werden, ohne dass dies Auswirkungen auf die Datenabfrage hat. Darüber hinaus können keyring_file_data auch dynamisch angepasst werden, was relativ einfach ist und hier nicht demonstriert wird. 2.4 Statistik-Tablespace-Verschlüsselungstabelle Wenn Sie wissen möchten, welche Tabellenbereiche verschlüsselt sind, können Sie dies in der Datenwörterbuchtabelle überprüfen. mysql> SELECT TABLE_SCHEMA, TABLE_NAME, CREATE_OPTIONS FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='testdb2' und CREATE_OPTIONS='ENCRYPTION="Y"'; +--------------+------------+----------------+ | TABELLE_SCHEMA | TABELLENNAME | CREATE_OPTIONS | +--------------+------------+----------------+ | testdb2 | test1 | VERSCHLÜSSELUNG="Y" | +--------------+------------+----------------+ 1 Zeile im Satz (0,00 Sek.) 3. Ausnahmebehandlung Was passiert, wenn die Schlüsselringdatei beschädigt oder versehentlich gelöscht wird? 3.1 Sichern Sie die Schlüsselbunddatei Um auf Nummer sicher zu gehen, sichern Sie vorher die Schlüsselringdatei [root@mha1 Schlüsselbund]# cp -p Schlüsselbund Schlüsselbund.bak [root@mha1 Schlüsselbund]# ll -h insgesamt 8.0K -rw-r----- 1 mysql mysql 155 16. August 09:10 Schlüsselring -rw-r----- 1 mysql mysql 155 16. August 09:10 keyring.bak 3.2 Schlüsselbund löschen Löschen Sie die Schlüsselbunddatei direkt [root@mha1 Schlüsselbund]# rm -f Schlüsselbund [root@mha1 Schlüsselbund]# ll -h insgesamt 4.0K -rw-r----- 1 mysql mysql 155 16. August 09:10 keyring.bak 3.3 Überprüfen Sie, ob die Daten normal sind Überprüfen Sie die Daten und ob die neue verschlüsselte Tabelle erfolgreich ist mysql> wähle * aus test1; +----+---------+ | Ich würde | Name | +----+---------+ | 1 | anm | | 2 | Schlüsselanhänger | +----+---------+ 2 Zeilen im Satz (0,00 Sek.) mysql> Tabelle erstellen test2(id int Primärschlüssel auto_increment, Name varchar(20), Schlüsselname(Name)) ENCRYPTION='Y'; Abfrage OK, 0 Zeilen betroffen (0,01 Sek.) Das heißt, dass zu diesem Zeitpunkt auch bei Verlust der Keyrig-Datei ein normaler Betrieb möglich ist. 3.4 Neustart der Datenbank Nach dem Neustart der Datenbank werden Sie feststellen, dass die Schlüsselringdatei automatisch erneut generiert wird Überprüfen Sie nun erneut die Verschlüsselungstabelle mysql> wähle * aus test1; FEHLER 3185 (HY000): Hauptschlüssel kann im Schlüsselbund nicht gefunden werden. Prüfen Sie im Serverprotokoll, ob ein Schlüsselbund-Plugin erfolgreich geladen und initialisiert wurde. Erstellen einer verschlüsselten Tabelle mysql> Tabelle erstellen test3(id int Primärschlüssel auto_increment, Name varchar(20), Schlüsselname(Name)) ENCRYPTION='Y'; Abfrage OK, 0 Zeilen betroffen (0,02 Sek.) Es ist möglich, eine neue Tabelle zu erstellen, da dies einer Initialisierung entspricht. Stellen Sie anschließend den ursprünglichen Schlüsselbund wieder her und starten Sie die Datenbank neu. Sie werden feststellen, dass es wieder funktioniert. mysql> wähle * aus test1; +----+---------+ | Ich würde | Name | +----+---------+ | 1 | anm | | 2 | Schlüsselanhänger | +----+---------+ 2 Zeilen im Satz (0,00 Sek.) 4 Schlüsselbundverwaltung 4.1 Regelmäßige Datensicherung Sie können täglich Sicherungen durchführen, der Sicherungspfad ist jedoch vom täglichen Backup getrennt und Sie können es in die Zieldatei kopieren, wenn Sie es wiederherstellen müssen. 4.2 Regelmäßige Updates Aus Sicherheitsgründen muss der Schlüssel aktualisiert werden, wenn der Verdacht auf ein Schlüsselleck besteht. Nach dem Update kann die Originaltabelle weiterhin normal verwendet werden, da die Update-Option den Hauptverschlüsselungsschlüssel ändert und die Tablespace-Schlüssel neu verschlüsselt, den Tablespace jedoch nicht neu verschlüsselt oder entschlüsselt. Aktualisierte Methode: -- Aktualisieren Sie den Hauptschlüssel mysql> ALTER INSTANCE ROTATE INNODB MASTER KEY; Abfrage OK, 0 Zeilen betroffen (0,00 Sek.) -- Nach dem Update ist der Zugriff auf MySQL weiterhin normal möglich > select * from test1; +----+---------+ | Ich würde | Name | +----+---------+ | 1 | anm | | 2 | Schlüsselanhänger | +----+---------+ 2 Zeilen im Satz (0,00 Sek.) An diesem Punkt wurde die einfache Verwendung des InnoDB-Tablespace demonstriert. Es gibt noch viele weitere Einzelheiten, Sie können sie in der offiziellen Dokumentation unter https://dev.mysql.com/doc/refman/5.7/en/innodb-data-encryption.html erfahren. Zusammenfassen Dies ist das Ende dieses Artikels über die MySQL InnoDB-Tablespace-Verschlüsselung. Weitere Informationen zur MySQL InnoDB-Tablespace-Verschlüsselung finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: Kennen Sie alle 24 Methoden zur JavaScript-Schleifendurchquerung?
>>: Verwendung des Linux-Lesebefehls
Beim UI-Schnittprozess besteht die Seite häufig a...
Vorwort Ich bin einmal auf ein schwieriges Proble...
brauchen: Implementieren Sie die dynamische Anzei...
Einführung Die meisten Leute, die schon einmal Da...
Inhaltsverzeichnis 1. Routing-Animation 2. Gruppe...
Vor kurzem hatte ich zufällig Kontakt mit dem Pro...
Inhaltsverzeichnis 1. Kommentare zu MySQL-Primärs...
XML/HTML-CodeInhalt in die Zwischenablage kopiere...
Heute stelle ich zwei HTML-Tags vor, die ich nich...
Inhaltsverzeichnis Überblick Beispiel Warum wird ...
Das Befehlsformat für die MySQL-Anmeldung ist: my...
Inhaltsverzeichnis 1. Umfang des Blocks 1.1. let ...
Eine beträchtliche Anzahl von Websites verwendet d...
Dieser Artikel stellt hauptsächlich die binären O...
Inhaltsverzeichnis Vorwort Verwenden Sie keine Ze...