4

我有一个独立承包商/自由职业者帮助对特定数据库进行一些优化。

我创建了一个新用户并授予他们对该数据库的所有权限。

但是,他们要求运行以下命令,我只需要确保这样做不会造成任何安全漏洞:

grant super,reload on *.* to 'odeskuser_priv'@'%' identified by 'abc123'; 
grant all on mysql.* to 'odeskuser_priv'@'%' identified by 'abc123';

如果用户“odeskuser”只能访问一个数据库,那么这些命令是否安全且不会对其他数据库造成任何潜在威胁?

谢谢

4

2 回答 2

3

通过看这里:

http://dev.mysql.com/doc/refman/5.0/en/privileges-provided.html

Super 授予服务器管理权限,所以我想说:

grant super,reload on *.* to 'odeskuser_priv'@'%' identified by 'abc123'; 

将允许该用户打开服务器上任何数据库的线程,因为*.*它表示服务器上的任何数据库和任何表。

编辑:

事实上,在全球范围内给予 super 是非常危险的:

SUPER 权限使帐户能够使用 CHANGE MASTER TO、KILL 或 mysqladmin kill 来杀死属于其他帐户的线程(您始终可以杀死自己的线程)、PURGE BINARY LOGS、使用 SET GLOBAL 修改全局系统变量的配置更改、mysqladmin调试命令,启用或禁用日志记录,即使启用了 read_only 系统变量,也执行更新,启动和停止从服务器上的复制,在存储程序和视图的 DEFINER 属性中指定任何帐户,并使您能够连接(一次)甚至如果达到由 max_connections 系统变量控制的连接限制。

于 2012-06-25T11:05:21.207 回答
1

鉴于您授予对 mysql 内部数据库的写访问权限,我相信他们可以将行添加到 grants 表并为自己提供他们想要的任何其他权限。正如 Sammaye 所说,超级也很危险。

于 2012-06-25T11:11:06.680 回答