什么是一个好的方法来encryption一个MySQL数据库,这是值得吗?

我知道我可以encryption数据库的特定领域,但我有兴趣encryption数据库的每个领域。 我想确保没有人能够访问一个mysql shell但是没有解密密钥的访问者根本不能从数据库中读取任何东西。

我也想确定,如果有人能够访问本机,但没有解密密钥,他们将无法读取数据。

我应该怎么做? 这样做有意义吗? 我担心,如果有人访问MySQL数据库,他们不可避免地将有权访问密钥,所以这是没有意义的。 我错过了什么吗?

最小的现场级AES和DESencryption可用: https : //dev.mysql.com/doc/refman/5.5/en/encryption-functions.html#function_encrypt

没有人可以在没有为每个查询指定键的情况下读取数据(或者没有将其添加到触发器/程序)。

例:

插:

INSERT INTO users (username, password) VALUES ('root', AES_ENCRYPT('somepassword', 'key12346123')); 

和SELECT:

 SELECT AES_DECRYPT(password, 'key12346123') FROM users WHERE username = 'root'; 

另外,这需要 SSL连接到数据库。

在较低的水平上 – 你也可以encryption文件系统。

首先:您将密钥存储在应用程序中,并在应用程序层处理所有encryption。

下一步:确保MySQL实例和应用程序[server]位于不同的计算机上,这样MySQL服务器上的根目录就不允许攻击者从应用程序源中读取密钥。

这种方法似乎过度。 正确处理敏感数据(密码,信用卡等),但encryption一切是矫枉过正。 (并且在主键的世界中可能会产生反效果)