mysql grants小记
安装mycheckpoint的时候,给这个监控用户分权限的时候,发现了这个秘密:
代码如下:
mysql>
mysql> GRANT ALL PRIVILEGES ON mycheckpoint.* TO 'mycheckpoint_user'@'localhost' IDENTIFIED BY '123456';
ERROR 1470 (HY000): String 'mycheckpoint_user' is too long for user name (should be no longer than 16)
mysql>
grant命令是对mysql数据库进行用户创建,权限或其他参数控制的强大的命令,官网上介绍它就有几大页,要用精它恐怕不是一日半早的事情,权宜根据心得慢慢领会吧!
grant命令的简单介绍是这样的:
The GRANT statement enables system administrators to grant privileges to MySQL user accounts. GRANT also serves to specify other account characteristics such as use of secure connections and limits on access to server resources. To use GRANT, you must have the GRANT OPTION privilege, and you must have the privileges that you are granting.
这段话的意思是说:grant命令允许系统管理员对mysql 用户账号(user account)授予各类权限(grant privileges),grant当然也可以用于设置帐号的其他特征如安全连接和服务资料访问限制等,为使用grant命令,必须有GRANT OPTION 权限,同是你必须有你要授予权限的权限!
使用show grant命令 SHOW GRANTS [FOR user]
该命令的解释是:This statement lists the GRANT statement or statements that must be issued to duplicate the privileges that are granted to a MySQL user account.
如果要需要当前用户的权限,可以使用这下三条命令之一:
SHOW GRANTS;SHOW GRANTS FOR CURRENT_USER;SHOW GRANTS FOR CURRENT_USER();在本机上运行命令的效果(当用使用的root用户连接到mysql)使用grant命令前,需要搞清楚以下信息:grant 的类型,即你要授予什么权限(privilege type),是允许查询?插入行?创建?还是其他等等。grant 的对象类型(priv_type),有三种:TABLE、 FUNCTION、PROCEDURE,还有一种是默认的,就是DATABASE数据库。grant 的对象(priv_level):是作用于所有数据库呢?还是作用于某一数据库,是作用于数据库的所有表,还是某一个单一的表,甚至是表中的某些列!可以这样做个想象,用户就是一个城管执法者:他有那些权限(privilege type),驱赶走鬼?没收走鬼的东西?他管理那类(priv_type)走鬼呢?卖水果的?烘烤的还是卖钸口的?他管理的范围是什么:整个区?某条街道?最后,不同的权限会能或不能作用于不同的对象类型和范围,以下是部分截图,具体可能参考:
dev.mysql.com/doc/refman/5.1/en/privileges-provided.html
以下是某些权限的解数截图,详细在dev.mysql.com/doc/refman/5.1/en/grant.html