mysql创建用户命令-grant
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
mysql创建⽤户命令-grant
我们在使⽤mysql的过程中,经常需要对⽤户授权(添加,修改,删除),在mysql当中有三种⽅式实现分别是 INSERT USER表的⽅法、CREATE USER的⽅法、GRANT的⽅法。
今天主要看⼀下grant⽅法是如何实现的
分两种情况,第⼀种先使⽤create user命令创建⽤户,然后grant授权;第⼆种直接使⽤grant创建并授权;我们先看第⼀种如何实现
查看⽤户权限
show grants for 你的⽤户
⽐如:
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:⽤户的操作权限,如SELECT,INSERT,UPDATE等,如果要授予所的权限则使⽤ALL
databasename:数据库名
tablename:表名,如果要授予该⽤户对所有数据库和表的相应操作权限则可⽤*表⽰,如*.*
例⼦:
GRANT SELECT, INSERT ON er 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 er TO 'pig'@'%',则在使⽤REVOKE SELECT ON *.* FROM 'pig'@'%';命令并不能撤销该⽤户对test数据库中user表的SELECT 操作。
相反,如果授权使⽤的是GRANT SELECT ON *.* TO 'pig'@'%';则REVOKE SELECT ON er 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。
四、直接向er表插⼊记录(该⽅法个⼈很少⽤)
因为数据库的⽤户信息都是保存在er这张表的,所以直接对该表进⾏插⼊语句,即可完成⽤户的创建;
mysql>insert into user (host,user,password) values ('%','john',password('123'));
五、完成⽤户的创建后,请记得刷新系统权限表;
mysql>flush privileges;
总结:虽然创建⽤户的⽅法有三种,个⼈还是倾向于第⼆种⽅法,⼀步到位,简单明了;
其他的两种⽅法只是有助于理解数据库的原理⽽已;。