phpMyAdmin
 sql >> Datenbank >  >> Database Tools >> phpMyAdmin

Wie verschlüsselt man eine bestimmte Spalte in einer MySQL-Tabelle?

Hier finden Sie eine Liste möglicher Verschlüsselungsfunktionen:

http://dev.mysql.com/doc/refman /5.1/en/encryption-functions.html

Sie können einen Auslöser für die Aktualisierung erstellen und dort das Feld accessable aktivieren . Etwas in der Art:

CREATE TRIGGER crypt_trg BEFORE UPDATE ON table FOR EACH ROW
BEGIN
  IF new.accessable = 0 THEN
    SET new.msg := ENCRYPT(new.msg, 'key');
  ELSE
    SET new.msg := DECRYPT(new.msg, 'key');
  END IF;
END;

Sie können auch alle vorhandenen Datensätze in Ihrer Tabelle mit dieser Abfrage aktualisieren:

UPDATE table SET msg = IF(accessable = 0, ENCRYPT(msg, 'key'), DECRYPT(msg, 'key'));

So können Sie Datensätze für Ihren PHP-Code auswählen:

SELECT msg_id, user_id, time, IF(accessable = 0, DECRYPT(msg, 'key'), msg) msg
FROM table

UPD. Auch hier war eine ähnliche Frage:

MySQL-verschlüsselte Spalten