MySQL-用户与权限管理

1.用户管理

MYSQL用户可以分为普通用户和root用户,root用户时超级管理员,拥有所有权限,包创建用户,删除用户和修改用户的密码等管理权限;普通用户只拥有被授予的各种权限。

MYSQL提供了许多语句来管理用户账号,这些语句可以用来管理包括登录和退出MYSQL服务器,创建用户,删除用户,密码管理和权限管理等内容。

MySQL数据库的安全性需要通过账户管理来保证。

1.1 登录MySQL服务器

登录MySQL服务器命令:

mysql -h hostname|hostIP -P port -u username -p DatabaseName -e "sql语句"

参数:

  • -h 后接主机名或者主机IP
  • -P 后接端口号,默认3306端口
  • -u 用户名
  • -p 密码
  • DatabaseName 指明登录到那个数据库中,若没有,则直接登录到mysql数据库中,后可使用use命令来选择数据库
  • -e 参数后面可以直接加sql语句,登录之后直接执行,然后退出

1.2 创建用户

在MySQL数据库中,官方推荐使用 CREATR USER 语句创建新用户,

MySQL中的用户存在于mysql数据库下的user表中,该表中是由host和user联合组成主键

#创建语句
create user 'zhangsan'@'localhost' identified by '123456';

1.3 修改用户

修改用户名

update user set user = 'lisi' where user = 'zhangsan' and host='%';
#修改用户名之后需要刷新下权限
FLUSH PRIVILEGES;

1.4 删除用户

  • 方式一:使用DROP方式删除(推荐)

    使用 drop user 语句删除用户时,必须拥有 drop user权限

    drop user user[,user]...;
    
  • 方式二:使用DELETE方式删除(不推荐,可能会有残留)

1.5 设置当前用户密码

适用于root用户修改自己的密码,以及普通用户登录后修改自己的密码

  • 使用 ALTER USER 命令来修改当前用户的密码

    用户可以使用 ALTER 命令来修改自身密码,如下语句代表修改当前登录用的密码,基本语法如下:

    ALTER USER USER() IDENTIFIED BY "NEW PWD";
    
  • 使用SET语句来修改当前用户密码

    SET PASSWORD="NEW PWD";
    

1.6 设置其他用户密码

尚硅谷宋红康,MYSQL教程 P106

2.权限管理

2.1 权限列表

查看权限列表

show privileges;

2.2 授予权限的原则

权限控制主要是出于安全因素,因此要遵循以下几个经验原则

  1. 只授予能满足需要的最小权限,防止用户干坏事,比如用户只是需要查询,俺就只给select权限就可以了,不要给与用户赋予update,insert或者delete权限。
  2. 创建用户的时候限制用户的登录主机,一般是限制成指定IP或者内网IP段。
  3. 为每个用户设置满足密码复杂度的密码
  4. 定期清理不需要的用户,回收权限或者删除用户。

2.3 授予权限

给用户授权方式有两种,分别是通过把角色赋予用户给用户授权直接给用户授权

授权命令:

GRANT 权限1,权限2,...权限n ON 数据库名称,表名称 TO 用户名@用户地址 [IDENTIFIED BY '密码口令']
  • 该权限如果发现没有该用户,则会直接新建一个用户。

比如:

  • 给zs用户用本地命令行方式,授予heima这个库下所有表的增删改查的权限。

    GRANT SELECT,INSERT,UPDATE,DELETE ON heima.* TO 'zs'@'%';
    
  • 赋予lisi全部权限

    grant all privileges on *.* to 'lisi'@'%';
    

注:此时的用户,默认是没有给别人赋予权限的权限的

  • 如果需要赋予包括grant的权限,添加参数 "WITH GRANT OPTION"这个选项即可,表示该用户可以将自己拥有的权限赋予给别人。
2.4 查看权限
  • 查看当前用户权限

    SHOW GRANTS;
    # 或
    SHOW GRANTS FOR CURRENT_USER;
    # 或
    SHOW GRANTS FOR CURRENT_USER();
    
  • 查看某用户的全局权限

    SHOW GRANTS FOR 'user'@'主机地址'
    

2.5 收回权限

收回权限就是取消已经赋予用户的某些权限。收回用户不必要的权限可以在一定成功上保证系统的安全性。mysql中使用REVOKE语句取消用户的某些权限,使用REVOKE收回权限之后,用户账户的记录将从db,host,tables_priv和colums_priv表中删除,但是用户账户记录仍然在user表中保存(删除user表中的账户记录使用DROP USER语句)

注意:在将用户账户从user表删除之前,应该收回相应用户的所有权限。

  • 收回权限命令

    REVOKE 权限1,权限2,...权限n ON 库名.表名 FROM 用户名@用户地址
    

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值