授予承包商MySQL特权以处理数据库

时间:2012-06-25 10:50:41

标签: mysql

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

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

但是,他们要求运行以下命令,我只需要确保我没有通过这样做创建任何安全漏洞:

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

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

由于

2 个答案:

答案 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也很危险。