首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据库中所有表的Mysql缺省AES加密

问数据库中所有表的Mysql缺省AES加密
EN

Stack Overflow用户
提问于 2016-01-04 19:29:33
回答 2查看 1.8K关注 0票数 6

我需要在mysql中隐藏用户访问的数据。即使用户知道密码,他也可能需要密钥来解密数据。有可能吗?

在mysql中,有在插入时加密数据的AES_ENCRYPT选项,有没有为数据库中的所有表列提供默认加密的选项?

EN

回答 2

Stack Overflow用户

发布于 2016-11-15 10:14:33

您可能需要在应用程序中执行此操作,而不是直接在mysql中执行。将数据加密存储,但在应用程序级别代码中解密/加密

票数 0
EN

Stack Overflow用户

发布于 2016-11-15 10:35:18

如果用户没有要解密的密钥,并且所有的表都是加密的,那么允许用户连接有什么意义呢?您需要编辑您的问题以更详细地描述您的用例。

控制每个用户的访问更加灵活。假设您使用加密,并且有一天您想要禁用某个特定用户的访问权限。您必须更改密钥,这意味着您必须使用新密钥重新加密所有数据,然后将更新后的密钥通知所有其他用户。这非常不方便。

然而,如果您只是使用他们的登录或他们的GRANT权限来控制访问,您可以禁用任何单个用户的帐户和/或使用REVOKE来更改他们的权限。所有其他用户将继续拥有以前的访问权限。这就容易多了。

此外,MySQL没有全局“加密所有表”选项。它甚至不能对插入到给定表中的所有数据进行加密。

MySQL有一些像AES_ENCRYPT()这样的encryption functions,但它是在单个SQL表达式级别上处理的:

代码语言:javascript
复制
INSERT INTO MyTable 
SET someColumn = AES_ENCRYPT('Something sensitive', 'thePassword');

您必须在每次插入或更新行时执行此操作。

然后,每次选择以下选项时,都进行类似的解密:

代码语言:javascript
复制
SELECT AES_DECRYPT(someColumn, 'thePassword') FROM MyTable...

上面有人提到了MariaDB加密。这不是你想要的。这意味着磁盘上的表空间文件是加密的,但对于连接到服务器的任何人,MariaDB服务器仍然会自动解密它。所以它并不比SQL访问权限更好。它也无法加密查询日志、错误日志或二进制日志。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34590137

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档