MySql 只授予读取某些内容而不是整个表的权限

标签 mysql

我想更好地保护我的数据库,因为如果有人反编译了我的程序,他将获得我的sql uid 和密码,并可以利用它们窃取我的数据。如何仅当 sql 语句中有 WHERE 或 LIKE 时,才能向我用于我的程序的 sql 用户授予 SELECT 和 UPDATE 权限?因为如果有人发现了这个用户,他就可以偷走我的​​整张 table 。谢谢。

这是允许的: SELECT * FROM table WHERE username = 'username'

这是不允许的: 从表中选择 *

最佳答案

使用 Database View 的优势之一数据库 View 有助于限制特定用户的数据访问。您可能不希望所有用户都可以查询敏感数据的子集。您可以使用数据库 View 仅向特定用户组公开非敏感数据。

因此,理论上,您可以尝试类似的方法

CREATE VIEW user_username AS SELECT * FROM table WHERE username = 'username'

以便为您的应用程序的每个用户创建单独的 View 。

话虽如此,这样做是一个非常糟糕的主意。此外,如果通过反编译,用户可以访问包含所有用户的数据库,我很确定应用程序的设计一定有问题

但是,由于有关应用程序的详细信息很少,因此很难就应该如何完成提出建议。

关于MySql 只授予读取某些内容而不是整个表的权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46628954/

相关文章:

MySQL 计数行值 WHERE column = value

mysql - 如何在 Socket IO 事件循环中处理 Knex 更新查询

如果不存在句点,MySQL 将句点添加到名字首字母中

php - 写入 PDO DELETE 查询值

php - 多对多 Doctrine

如果不存在或者值等于0则mysql左连接

mysql - 如何使用最高值连接表?

mysql - Postgres : crosstab and remove duplicates on query

MySQL Match Against 与多个值 AGAINST

mysql - 如何使一个属性成为mysql中2个属性的总和