mysql 创建用户命令-grant

我们在使用mysql的过程中,经常需要对用户授权(添加,修改,删除),在mysql当中有三种方式实现 分别是 INSERT USER表的方法、CREATE USER的方法、GRANT的方法。今天主要看一下grant方法是如何实现的
分两种情况,第一种先使用create user命令创建用户,然后grant授权;第二种直接使用grant创建并授权;我们先看第一种如何实现
查看用户权限
show grants for 你的用户

连接进入mysql: mysql -u root -p
mysql> flush privileges ; 
mysql> quit
比如:
show grants for root@'localhost';
一. 创建用户
命令:
CREATE USER 'username' @ 'host' IDENTIFIED BY 'password' ;
说明:
  • username:你将创建的用户名
  • host:指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,如果想让该用户可以从任意远程主机登陆,可以使用通配符%
  • password:该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器
   
例子:
CREATE USER 'dog' @ 'localhost' IDENTIFIED BY '123456' ; CREATE USER 'pig' @ '192.168.1.101_' IDENDIFIED BY '123456' ; CREATE USER 'pig' @ '%' IDENTIFIED BY '123456' ; CREATE USER 'pig' @ '%' IDENTIFIED BY '' ; CREATE USER 'pig' @ '%' ;
二. 授权:
     
命令:
GRANT privileges ON databasename.tablename TO 'username' @ 'host'
说明:
  • privileges:用户的操作权限,如SELECTINSERTUPDATE等,如果要授予所的权限则使用ALL
  • databasename:数据库名
  • tablename:表名,如果要授予该用户对所有数据库和表的相应操作权限则可用*表示,如*.*
 
例子:
GRANT SELECT , INSERT ON test. user TO 'pig' @ '%' ; GRANT ALL ON * . * TO 'pig' @ '%' ;
上面的第一行代码表示在test库中的user 授权pid用户,授权插入和选择操作;第二行表示授权pid用户可以操作所有的权限;
注意:
用以上命令授权的用户不能给其它用户授权,如果想让该用户可以授权,用以下命令:
GRANT privileges ON databasename.tablename TO 'username' @ 'host' WITH GRANT OPTION ;
三.设置与更改用户密码
SET PASSWORD FOR 'username' @ 'host' = PASSWORD( 'newpassword' );
如果是当前登陆用户用:
SET PASSWORD = PASSWORD("newpassword");
例子:
SET PASSWORD FOR 'pig' @ '%' = PASSWORD(" 123456 ");
 
四. 撤销用户权限
命令:
REVOKE privilege ON databasename.tablename FROM 'username' @ 'host' ;
说明:
privilege, databasename, tablename:同授权部分
例子:
REVOKE SELECT ON * . * FROM 'pig' @ '%' ;
注意:
假如你在给用户 'pig'@'%' 授权的时候是这样的(或类似的): GRANT SELECT ON test.user TO 'pig'@'%' ,则在使用 REVOKE SELECT ON *.* FROM 'pig'@'%'; 命令并不能撤销该用户对test数据库中user表的 SELECT  操作。相反,如果授权使用的是 GRANT SELECT ON *.* TO 'pig'@'%'; REVOKE SELECT ON test.user FROM 'pig'@'%'; 命令也不能撤销该用户对test数据库中user表的 Select 权限。
具体信息可以用命令 SHOW GRANTS FOR 'pig'@'%';  查看。
删除用户
命令:
DROP USER 'username' @ 'host' ;
 
第一种介绍完了,我们现在看第二种直接使用grant创建并授权用户操作
授权格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by "密码";
通过GRANT命令创建用户
个人习惯一般用这种方法进行创建用户,当数据库存在用户的时候GRANT会对用户进行授权,但当数据库不存在该用户的时候,就会创建相应的用户并进行授权。
复制代码
GRANT <ALL| priv1,priv2,.....privn > ON [object] [IDENTIFIED BY 'password'] [WITH GRANT OPTION] ;MAX_QUERIES_PER_HOUR count MAX_UPDATES_PER_HOUR count MAX_CONNECTIONS_PER_HOUR count MAX_USER_CONNECTIONS count
复制代码
说明:priv代表权限select,insert,update,delete,create,drop,index,alter,grant,references,reload,shutdown,process,file等14个权限
例子:
mysql > grant select , insert , update , delete , create , drop on test.hr to john @192 . 168.10 . 1 identified by '123' ;
 
说明:给主机为192.168.10.1的用户john分配可对数据库test的hr表进行select,insert,update,delete,create,drop等操作的权限,并设定口令为123。
mysql > grant all privileges on test. * to joe @192 . 168.10 . 1 identified by '123' ;
 
说明:给主机为192.168.10.1的用户john分配可对数据库test所有表进行所有操作的权限,并设定口令为123。
mysql > grant all privileges on * . * to john @192 . 168.10 . 1 identified by '123' ;
 
说明:给主机为192.168.10.1的用户john分配可对所有数据库的所有表进行所有操作的权限,并设定口令为123。
mysql > grant all privileges on * . * to john @localhost identified by '123' ;
 
说明:用户john分配可对所有数据库的所有表进行所有操作的权限,并设定口令为123。
四、直接向mysql.user表插入记录(该方法个人很少用)
因为数据库的用户信息都是保存在mysql.user这张表的,所以直接对该表进行插入语句,即可完成用户的创建;
mysql > insert into user (host, user ,password) values ( '%' , 'john' ,password( '123' ));
 
五、完成用户的创建后,请记得刷新系统权限表;
mysql > flush privileges ;
 
总结:虽然创建用户的方法有三种,个人还是倾向于第二种方法,一步到位,简单明了;
其他的两种方法只是有助于理解数据库的原理而已;




  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值