我正在调查MySQL数据库中的用户权限。
CREATE USER 'reader' IDENTIFIED BY 'reader';
根据MySQL文档,用户被创建为具有最小特权-SELECT。他们如何能够使用CREATE DATABASE/SCHEMA语句?我在官方Docker镜像中使用了一个MySQL示例,我没有发现任何关于操作系统差异的提及。如果只是文档过时,我如何创建一个只能对数据库对象(主要是information_schema或sys模式)具有读访问权限的用户?
information_schema
sys
uplii1fm1#
最低权限是USAGE,而不是SELECT。使用MYSQL_{USER,PASSWORD,DATABASE}将创建一个拥有数据库上所有权限的用户。任何人都可以读取信息模式,但是可见的数据库对象也只有用户可以访问的对象。访问sys架构需要GRANT SELECT ON sys.* TO user。由于sys模式是performance_schema上的视图,因此还需要GRANT SELECT ON performance_schema.* TO user。
USAGE
SELECT
MYSQL_{USER,PASSWORD,DATABASE}
GRANT SELECT ON sys.* TO user
performance_schema
GRANT SELECT ON performance_schema.* TO user
1条答案
按热度按时间uplii1fm1#
最低权限是
USAGE
,而不是SELECT
。使用MYSQL_{USER,PASSWORD,DATABASE}
将创建一个拥有数据库上所有权限的用户。任何人都可以读取信息模式,但是可见的数据库对象也只有用户可以访问的对象。
访问
sys
架构需要GRANT SELECT ON sys.* TO user
。由于sys
模式是performance_schema
上的视图,因此还需要GRANT SELECT ON performance_schema.* TO user
。