Hallo Dieter,
du hast Recht, das ist keine triviale Angelegenheit.
Zu unterscheiden ist Verschlüsselung ruhender Daten (also der Dateien, in denen die DB-Engine die Datenbank ablegt) und Verschlüsselung beim Transport (SSL, TLS).
TLS ist ein Thema, das zwischen PHP und MYSQL ausgehandelt werden muss, und wird dem Anschein nach mit Zertifikaten realisiert. Wenn MYSQL und Webserver auf dem gleichen Gerät laufen (localhost connection), ist sie uninteressant. Generell findet man bei PHP und MYSQL Informationen dazu unter "encrypted connection". Ich habe allerdings den Eindruck, dass das bei PHP erbärmlich dokumentiert ist. Und gegen einen User mit root Rechten (oder auch nur Lesezugriff auf die Zertifikate) schützt das alles nicht, weil die Zertifikate in lesbaren Dateien vorliegen müssen. Unter Windows gäbe es ja den geschützten Zertifikatspeicher, aber offenbar unterstützt PHP den nicht.
Verschlüsselung ruhender Daten (data at rest) ist etwas, das die DB Engine unterstützen muss. Es ist nicht sinnvoll, die Daten in der Application zu verschlüsseln - aus den bereits von anderen Postern genannten Gründen.
MYSQL ab Version 5.7 unterstützt Tablespace Encryption in der InnoDB Engine. Hier steht, wie man es macht. Gegen einen root-User, der auf dem Server Amok läuft, wird das aber auch kein sicherer Schutz sein. Es schützt gegen geklaute Backups und gegen Leute, die irgendwie Lesezugang zu den Tablespace-Dateien bekommen haben. Und es schützt ein bisschen gegen übermäßige Server-Performance...
Rolf
sumpsi - posui - clusi