【发布时间】:2017-01-28 00:58:51
【问题描述】:
我的服务器上有几个用户可以访问每个 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) 如何识别所有这样的权限?我必须查看每个用户吗?
【问题讨论】:
标签: mysql privileges