在mysql中用户权限是一个很重要的参数,因为台mysql服务器中会有大量的用户,每个用户的权限需要不一样的,下面我来介绍如何给mysql用户分配权限吧,有需要了解的朋友可参考。


1、Mysql下创建新的用户并分配权限

语法:mysql> create user 用户名 identified by '密码';

给用户分配权限

语法:mysql> grant 权限 on 数据库.数据表 to '用户' @ '主机名';

 

例:

mysql> create user ywliyq identified by '123456';

新创建的用户,默认情况下是没有任何权限的。

给ywliyq分配所有的权限

mysql> grant all on *.* to 'ywliyq'@'%';

 

增加新用户

格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by "密码"

如,增加一个用户ywliyq密码为123456,让其可以在本机上登录, 并对所有数据库有查询、插入、修改、删除的权限

mysql> grant select,insert,update,delete on *.* to ywliyq@localhost Identified by "123456";

如果希望该用户能够在任何机器上登陆mysql,则将localhost改为"%"。

mysql> grant select,insert,update,delete on *.* to ywliyq@'%' Identified by "123456";

 

2、如何更精准的控制用户的权限呢?

1.grant 权限 on 数据库.数据表 to '用户' @ '主机名';

例:让ywliyq有查询 tmp 数据库 tmp1 表的权限;

grant select on temp.temp1 to 'ywliyq'@'%';   //这个时候ywliyq就具有查询temp下的temp1的权限了。

例如:

1)给来自10.163.225.87的用户joe分配可对数据库vtdc的employee表进行select,insert,update,delete,create,drop等操作的权限,并设定口令为123。

mysql>grant select,insert,update,delete,create,drop on vtdc.employee to joe@10.163.225.87 identified by ‘123′;

 

2)给来自10.163.225.87的用户joe分配可对数据库vtdc所有表进行所有操作的权限,并设定口令为123。

mysql>grant all privileges on vtdc.* to joe@10.163.225.87 identified by ‘123′;

 

3)给来自10.163.225.87的用户joe分配可对所有数据库的所有表进行所有操作的权限,并设定口令为123。

mysql>grant all privileges on *.* to joe@10.163.225.87 identified by ‘123′;

 

4)给本机用户joe分配可对所有数据库的所有表进行所有操作的权限,并设定口令为123。

mysql>grant all privileges on *.* to joe@localhost identified by ‘123′;

 

3、如何收回权限,一般指有root用户才具有该权限

语法:

1.revoke 权限 on  数据库.数据表 from '用户'@'主机名';

例:收回 ywliyq的所有权限

revoke all on *.* from 'ywliyq'@'%';