我创建了一个用户,该用户有权选择列用户名和列 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/