我对 MySQL 还很陌生,我一直在创建测试表等。
无论如何,我创建了一个新用户,使用
CREATE USER 'myUser'@'localhost' IDENTIFIED BY 'myPassword';
现在,当我登录到这个用户时,我可以SELECT
从我之前用 root 创建的表中。这肯定不可能吗?用户没有SELECT
权限,或者实际上没有任何权限。如果(以 root 身份登录)我执行以下任一操作:
SHOW GRANTS FOR 'myUser'@'localhost';
或者
SELECT * FROM information_schema.user_privileges WHERE grantee LIKE "'myUser'@%";
我可以看到他们只有 USAGE 权限。我的理解是设置此权限以指示用户没有权限。
那么这个用户如何能够从我的表中进行 SELECT 呢?
如果我做:
SELECT * FROM information_schema.table_privileges;
不返回任何结果。
我在这里想念什么?某些东西,比如SELECT
隐式授予新用户吗?我必须明确撤销吗?
如果是这样,还有哪些其他权限被隐式授予?
理想情况下,我的目标是一个除了运行我指定的一个(或多个)存储过程之外什么都不做的用户GRANT EXECUTE ON
。