MySQL 允许用户使用 WHERE 但拒绝 SELECT

标签 mysql

我创建了一个用户,该用户有权选择列用户名和列 ip。他还拥有 INSERT 和 UPDATE 列 ip 的权利。

我的问题是他应该能够执行以下操作:

[1] UPDATE table SET ip='localhost' WHERE <code>key</code> = "XXXXXXXX"

但应该拒绝这样做:

[2] SELECT key from table

如果我授予他列键的 SELECT 权限,他可以做 [2],如果我撤销该权限,我将获得:

SELECT command denied to user 'username'@'localhost' for column 'key' in table 'table'

我能做些什么来解决这个问题吗?

最佳答案

@MichaelBerowski 你对存储过程的建议很棒。
我创建了以下过程并且效果很好。
我只需授予他执行此过程的权限,但他不再需要选择、更新、插入权限。

CREATE PROCEDURE update_ip(  
IN p_ip varchar(15),  
IN p_key varchar(50)) 
BEGIN 
UPDATE table SET ip = p_ip WHERE key = p_key;  
END

关于MySQL 允许用户使用 WHERE 但拒绝 SELECT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27627577/

相关文章:

javascript - 如何通过下拉列表更新数据库而不重新加载页面

c# - 如何在 ASP.NET Identity 中创建默认密码

mysql - 在 MySQL 中存储 100k x 100k 数组

php - json_decode 后得到空数据

php - 在 symfony2 中调用 transactionDate 时查询没有返回结果如何解决?

mysql - 在 Drupal 中,当创建另一种内容类型的节点时,如何以编程方式创建另一种内容类型的某些节点?

php - 在PHP中加载数据infile不起作用

php - 如何使用php动态创建mysql表?

MySQL:在 "WHERE <column_name> IN <values>"查询中使用字符串

mysql - Wordpress 分散多站点