MySql创建用户并赋权

MySql创建用户并赋权

创建数据库

# 登录
mysql -u root -p 
# 新建一个数据库 testdb
create database testdb;
use testdb; 
# 创建t_user_info表
create table t_user_info(
id int(11),
name varchar(64),
age int(11)
)
# 查看系统用户信息
# 系统信息存储在mysql数据库中
use mysql; 
select * from user; 

在这里插入图片描述
从上图可以看到,会列出数据库所有的用户及权限

创建用户

CREATE USER  'user_name'@'host' IDENTIFIED BY  'password';
  • user_name:要创建用户的名字。

  • host:表示要这个新创建的用户允许从哪台机登陆,如果只允许从本机登陆,则 填 'localhost',如果允许从远程登陆,则填'%'

  • password:新创建用户的登陆数据库密码,如果没密码可以不写。

例:

#表示创建的新用户,名为aaalxf这个新用户密码为lxf_password,只允许本机登陆
CREATE USER  'lxf'@'localhost' IDENTIFIED BY  'lxf_password';     

#表示新创建的用户,名为lxf_2,这个用户密码为lxf_password,可以从其他电脑远程登陆mysql所在服务器
CREATE USER  'lxf_2'@'%' IDENTIFIED BY  'lxf_password';

#表示新创建的用户lxf_3,没有密码,可以从其他电脑远程登陆mysql服务器
CREATE USER  'lxf_3'@'%';

再用 select * from user查看用户列表:
在这里插入图片描述
可以看出 有 lxf用户了。但是可以看到 lxf的权限很多都是N,表示没有权限,因为还要为用户授予权限。

授权用户

命令:GRANT privileges ON databasename.tablename TO 'username'@'host'

  • privileges:表示要授予什么权力,例如可以有 select , insert ,delete,update等,如果要授予全部权力,则填 ALL

  • databasename.tablename:表示用户的权限能用在哪个库的哪个表中,如果想要用户的权限很作用于所有的数据库所有的表,则填*.*,*是一个通配符,表示全部。

  • 'username'@'host':表示授权给哪个用户

例:

# mysql -u test -h 115.28.203.224 -p
#表示给用户lxf授权,让lxf能给testdb库中的t_user_info表 实行 insert 和 select
GRANT select,insert ON testdb.t_user_info TO 'lxf'@'%';       
#表示给用户lxf授权,让lxf能给所有库所有表实行所有的权力。
GRANT  ALL  ON  *.*  TO  'lxf' @ '%';
#再看用户列表,可以发现权限都变成 Y了。
GRANT  ALL  ON  *.*  TO  'lxf'@'%' 

在这里插入图片描述
注意:
用以上命令授权的用户不能给其他用户授权,如果想这个用户能够给其他用户授权,就要在后面加上 WITH GRANT OPTION
如: GRANT ALL ON *.* TO 'lxf'@'%' WITH GRANT OPTION;

刷新权限

使用这个命令使权限生效,尤其是你对那些权限表user、db、host等做了update或者delete更新的时候。以前遇到过使用grant后权限没有更新的情况,大家可以养成习惯,只要对权限做了更改就使用FLUSH PRIVILEGES命令来刷新权限。

FLUSH PRIVILEGES;

查看权限

使用如下命令可以方便的查看到某个用户的权限:
SHOW GRANTS FOR 'lxf_1'@'localhost';
在这里插入图片描述

删除用户

注意删除用户不要使用DELETE直接删除,因为使用DELETE删除后用户的权限并未删除,新建同名用户后又会继承以前的权限。正确的做法是使用DROP USER命令删除用户
命令:DROP USER 'user_name'@'host'
例:

# 表示删除用户lxf
DROP USER 'lxf'@'%';
#删除'lxf'@'192.168.100.*'
DROP USER 'lxf'@'192.168.100.*';

设置与更改用户密码

SET  PASSWORD  FOR  'username'@'host' = PASSWORD('newpassword');

#设置当前用户的密码 SET  PASSWORD = PASSWORD('123456')
SET  PASSWORD = PASSWORD('newpassword');

撤销用户权限:

命令:REVOKE privileges ON database.tablename FROM 'username'@'host';

例如: REVOKE SELECT ON *.* FROM 'lxf'@'%';

但注意:

  • 若授予权利是这样写:GRANT SELECT ON *.* TO 'lxf'@'%';
    则用 REVOKE SELECT ON testdb.t_user_info TO 'lxf'@'%';是不能撤销用户lxftestdb.t_user_info中的SELECT 权利的。

  • 反过来GRANT SELECT ON testdb.t_user_info TO 'lxf'@'%';授予权力
    REVOKE SELECT ON *.* FROM 'lxf'@'%';也是不能用来撤销用户lxftestdb库的t_user_info表的SELECT 权利的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值