我有一位独立的承包商/自由职业者帮助对特定数据库进行一些优化。
我创建了一个新用户并为他们授予了该数据库的所有权限。
但是,他们要求运行以下命令,我只需要确保我没有通过这样做创建任何安全漏洞:
grant super,reload on *.* to 'odeskuser_priv'@'%' identified by 'abc123';
grant all on mysql.* to 'odeskuser_priv'@'%' identified by 'abc123';
如果用户“odeskuser”只能访问一个数据库,那么这些命令是否安全且不会对其他dbs打开任何潜在威胁?
由于
答案 0 :(得分:3)
看这里:
http://dev.mysql.com/doc/refman/5.0/en/privileges-provided.html
超级授予服务器管理权限,所以我会说:
grant super,reload on *.* to 'odeskuser_priv'@'%' identified by 'abc123';
允许该用户打开服务器上任何数据库的线程,因为*.*
表示服务器上的任何数据库和任何表。
编辑:
事实上,超级在全球范围内是非常危险的:
SUPER权限允许帐户使用CHANGE MASTER TO,KILL 或者mysqladmin kill来杀死属于其他帐户的线程(你 可以随时杀死自己的线程),PURGE BINARY LOGS,配置 使用SET GLOBAL进行更改以修改全局系统变量 mysqladmin debug命令,启用或禁用日志记录,执行 即使启用read_only系统变量,启动和更新也会更新 停止从服务器上的复制,指定任何帐户 存储的程序和视图的DEFINER属性,并使您能够 连接(一次)即使连接限制由 达到max_connections系统变量。
答案 1 :(得分:1)
鉴于您正在授予对mysql内部数据库的写入权限,我相信他们可以向grants表添加行并为自己提供他们想要的任何其他权限。 Sammaye指出,Super也很危险。