MySQL创建新用户并分配权限
程序员文章站
2022-07-14 15:33:51
...
在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、如何更精准的控制用户的权限呢?
- 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′;
-
数据库添加用户语句:
grant all privileges on testdb.* to ‘test_user’@’localhost’ identified by “jack” with grant option;
all privileges
等于all
。WITH GRANT OPTION
这个选项表示创建的该用户是否拥有将自己拥有的权限授权给其他用户的权限。注意:经常有人在创建操作用户的时候不指定WITH GRANT OPTION选项导致后来该用户不能使用GRANT命令创建用户或者给其它用户授权。
如果不想这个用户有这个grant的权限,可以不加这句
3、如何收回权限,一般指有root用户才具有该权限
-
语法:
1.revoke 权限 on 数据库.数据表 from ‘用户’@‘主机名’;
# 例:收回 ywliyq的所有权限
revoke all on *.* from 'ywliyq'@'%';