我当前正在使用root
帐户
我有一个表-user1_db.table1
和user1
具有以下权限-
SHOW GRANTS FOR user1@localhost;
GRANT SELECT, INSERT, UPDATE, DELETE, INDEX, ALTER ON `user1_db`.`table1` TO `user1`@`localhost`
现在,我将table1
重命名为table2
,但我忘记在table1
的第一个上撤销user1
的权限
我现在将table2
上的相同权限授予user1
现在我有权限作为-
SHOW GRANTS FOR user1@localhost;
GRANT SELECT, INSERT, UPDATE, DELETE, INDEX, ALTER ON `user1_db`.`table1` TO `user1`@`localhost`
GRANT SELECT, INSERT, UPDATE, DELETE, INDEX, ALTER ON `user1_db`.`table2` TO `user1`@`localhost`
因此,现在对一个不存在的表名table1
授予了权限
我试图撤销许可。
REVOKE ALL PRIVILEGES ON `user1_db`.`table1` FROM `user1`;
但是,我得到了错误-
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
我尝试了以下方法来降低密码复杂性要求-
SET GLOBAL VALIDATE_PASSWORD.POLICY = LOW;
SET GLOBAL VALIDATE_PASSWORD.LENGTH = 2;
SET GLOBAL VALIDATE_PASSWORD.MIXED_CASE_COUNT = 0;
SET GLOBAL VALIDATE_PASSWORD.NUMBER_COUNT = 0;
SET GLOBAL VALIDATE_PASSWORD.SPECIAL_CHAR_COUNT = 0;
但问题依然存在。那么,我如何从user1
撤销对不存在的表的权限?table1
我遇到了这个变通方法。
我从根帐户创建了一个表user1_db.table1
CREATE TABLE table1 (col1 INT);
然后我注销,重新启动mysql服务器,然后再次登录
现在查询-
REVOKE ALL PRIVILEGES ON `user1_db`.`table1` FROM `user1`;
运行时没有任何错误。
现在,user1
权限是-
SHOW GRANTS FOR user1@localhost;
GRANT SELECT, INSERT, UPDATE, DELETE, INDEX, ALTER ON `user1_db`.`table2` TO `user1`@`localhost`
然后我删除了table1
表
DROP TABLE user1_db.table1;