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

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

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

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

  • MediaWiki编辑页面缓慢保存
  • 我如何彻底删除Debian上的MySQL服务器?
  • 尝试启动时MySQL错误
  • MySQL PID文件丢失
  • 不能在centos 6.5上安装mysql-devel
  • 将多个主设备复制到单个从服务器
  • 3 Solutions collect form web for “什么是一个好的方法来encryption一个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一切是矫枉过正。 (并且在主键的世界中可能会产生反效果)

    服务器问题集锦,包括 Linux(Ubuntu, Centos,Debian等)和Windows Server服务器.