在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'@'%';