我需要为我的数据库创建不同的用户,每个用户都可以访问特定表中的子列。我意识到要做到这一点,我需要分别访问列,因为如果我授予对整个表的访问权限,我不能撤消单个列权限。所以,我现在正在做的是给予的权限如下:在MySQL中单独授予所有列的权限
GRANT SELECT (`col_1`, `col_2`, ... , `col_100`), SHOW VIEW ON my_db.my_table TO 'my_user'@'%';
这是繁琐和杂乱,因为我有大量列的,也是不太实际,因为有可能会更改列列表在将来。有没有办法在没有列出名字的情况下授予每列的权限?然后,我可以撤销每个用户的个人用户。像这样的:
GRANT SELECT (SELECT `COLUMN_NAME` FROM `INFORMATION_SCHEMA`.`COLUMNS` WHERE `TABLE_SCHEMA`='my_db' AND `TABLE_NAME`='my_table'), SHOW VIEW ON my_db.my_table TO 'my_user'@'%';
(但这给了我一个语法错误,所以它显然不是我所需要的)。有没有办法做到这一点?
难道你不能使用像HeidiSQL这样的工具吗? –
我需要提供SQL,以便其他用户可以重复使用,因此不幸的是GUI方法无法正常工作。 – Lisa
HeidiSQL打印它在控制台中执行的每个命令。您可以将其复制并粘贴到文本编辑器中 - 然后找到并替换用户名。 –