Я только что исследовал ту же проблему, что и MySQL, после того, как использовал шифрование на уровне столбцов и БД в SQL Server.
Таким образом, это ответило на мои опасения, что mySQL не имеет стандартного шифрования на уровне базы данных, но, возможно, стоит упомянуть в ответе, приведенном выше, это приведет к сканированию таблицы при каждом вызове.Это потому, что каждая строка должна быть прочитана, чтобы данные могли быть расшифрованы перед сравнением.Это делает недействительным любой индекс, который может быть помещен в столбец (если в нем тоже есть какое-либо значение!) Однако следующее утверждение будет делать то же самое, но только один раз вызывает ENCRYPT и, возможно, обходит любые операции сканирования таблицы.Примечание: синтаксис mySQL, вероятно, местами некорректен.
DECLARE $EncryptedValue ...
SELECT $EncryptedValue = AES_ENCRYPT(`$input`, 'key')
SELECT
*,
$input as `decrypted`
FROM enc
WHERE
`field`=$EncryptedValue