我是相当新的MySQL和我一直在创建测试表等用户没有权限,仍然可以选择
无论如何,我创建了一个新的用户,使用
CREATE USER 'myUser'@'localhost' IDENTIFIED BY 'myPassword';
现在,当我登录到这个用户时,我可以从我之前用root创建的表中输入SELECT
。当然,这不应该是可能的?用户没有SELECT
权限,或者甚至没有任何权限。如果(以root身份登录)...我不是:
SHOW GRANTS FOR 'myUser'@'localhost';
或者
SELECT * FROM information_schema.user_privileges WHERE grantee LIKE "'myUser'@%";
我可以看到他们只拥有使用许可。我的理解是,此权限设置为表示用户没有权限。
那么这个用户如何能够从我的表中选择?
如果我做的:
SELECT * FROM information_schema.table_privileges;
没有返回结果。
我在这里错过了什么?是否隐含地向新用户授予SELECT
等特定内容?我是否必须明确撤销这个?
如果是这样,还隐式授予了哪些其他权限?
理想情况下,我的目标是一个用户,除了运行我指定的一个(或多个)存储过程以外,什么都不能做,只能用GRANT EXECUTE ON
指定。
有可能你不知道你连接的是哪个用户/主机;用'SELECT CURRENT_USER();'检查。 – fenway
我得到'myUser @ localhost',这是我所期望的。但是,如果事情按照我的想法行事,我不应该被拒绝这么做吗?阻止所有的'SELECT'查询,包括那个和表? – Interminable
这不是“真正的”SELECT(即不访问表) - (伪)granate USAGE允许您登录到数据库服务器,但没有其他许多。 – fenway