我服务器上有一些用户可以访问所有MySQL数据库。我想要撤销这些用户的权限,但是不确定如何进行操作。
例如:我有一个名为bob
的用户,他可以访问服务器上的所有数据库。我运行以下命令来查看bob
拥有哪些权限:
mysql -e "select * from information_schema.user_privileges;" | grep bob
'bob'@'%' def SELECT NO
'bob'@'%' def INSERT NO
'bob'@'%' def UPDATE NO
'bob'@'%' def DELETE NO
'bob'@'%' def CREATE NO
'bob'@'%' def FILE NO
'bob'@'%' def CREATE USER NO
没有什么比GRANT
,ALL
或SUPER
更引人注目了。我创建了一个名为sometest
的新数据库,切换到bob
的帐户并发现bob
可以访问sometest
。不确定我错过了什么。
编辑:我运行了SHOW GRANTS FOR 'bob'@'%';
并看到:
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN,
PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES,
LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW,
CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE
ON *.* TO 'bob'@'%'
1)如何取消这个权限?我认为如果我运行:
REVOKE SELECT, INSERT,... on *.* to 'bob'@'%';
它将删除像以下这样的权限
GRANT ALL ON bobsdb.* TO 'bob'@'%';
我不希望发生这种情况。但也许最好的方法是删除所有权限并从头开始构建。
2) 如何识别所有此类权限?我是否需要查看每个用户?