zoukankan      html  css  js  c++  java
  • MySQL创建用户和分配权限

    回顾今天的数据库实验⊂(ο・㉨・ο)⊃

    先新建一个测试数据库

    image-20201214172412783

    再创建个表填些数据

    image-20201214172458012

    一、查看用户

    查看用户并没有直接的SQL语句,而是进入 mysql 数据库的 user 表(这个mysql库和user表都是一开始就有的),直接用 select * from user;来查看有什么用户

    use mysql;
    select * from user;
    

    二、创建用户

    create user 'user_name'@'host' identified by 'password';
    
    • user_name:要创建用户的名字。
    • host:表示要这个新创建的用户允许从哪台机登陆,如果只允许从本机登陆,则 填 ‘localhost’ ,如果允许从远程登陆,则填 ‘%’
    • password:新创建用户的登陆数据库密码,如果没密码可以不写。

    创建不同限制的账户

    -- 创建账户,"%"是无登录限制的,“123”是密码
    create user 'liwker'@'%' identified by '123';
    
    -- "localhost"是限制为本地登录
    create user 'liwker'@'localhost' identified by '123';
    
    -- 这个是限制 ip 为 10.11.20.30 的主机访问
    create user 'liwker'@'10.11.20.30' identified by '123';
    

    二、分配权限

    grant privileges on databasename.tablename to 'username'@'host';
    
    • privileges:表示要授予什么权力,例如可以有 select , insert ,delete,update等,如果要授予全部权力,则填 ALL
    • databasename.tablename:表示用户的权限能用在哪个库的哪个表中,如果想要用户的权限很作用于所有的数据库所有的表,则填 " *.* ",* 是一个通配符,表示全部。
    • ’username‘@‘host’:表示授权给哪个用户,username 的引号可以不加哦,但 host 必须加。

    为账户分配不同的权限

    -- Liwker库的student表的 只读权限 分配给 liwker 账户
    grant select on Liwker.student to liwker@'%';
    
    -- Liwker库(所有表)的 多个权限 分配给 liwker 账户
    grant select,insert,delete,update on Liwker.* to liwker@'%';
    
    -- Liwker库的 所有权限 分配给 liwker 账户
    grant all on Liwker.* to liwker@'%';
    
    -- 所有库的 所有权限 分配给 liwker 账户
    grant all on *.* to liwker@'%';
    
    -- 刷新权限
    flush privileges;
    

    权限列表:

    • ALTER: 修改表和索引。
    • CREATE: 创建数据库和表。
    • DELETE: 删除表中已有的记录。
    • DROP: 抛弃(删除)数据库和表。
    • INDEX: 创建或抛弃索引。
    • INSERT: 向表中插入新行。
    • REFERENCE: 未用。
    • SELECT: 检索表中的记录。
    • UPDATE: 修改现存表记录。
    • FILE: 读或写服务器上的文件。
    • PROCESS: 查看服务器中执行的线程信息或杀死线程。
    • RELOAD: 重载授权表或清空日志、主机缓存或表缓存。
    • SHUTDOWN: 关闭服务器。
    • ALL: 所有权限,ALL PRIVILEGES同义词。
    • USAGE: 特殊的 "无权限" 权限.

    可根据上面的权限字段 为用户分配相应的权限

    注意:

    用以上命令授权的用户不能给其他用户授权,如果想这个用户能够给其他用户授权,就要在后面加上 WITH GRANT OPTION 如:

    grant all on *.* to 'liwker'@'%' with grant option;
    

    补充 为用户创建数据库:

    create database basename DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
    

    三、删除用户

    drop user 'username'@'host';
    

    四、设置与更改用户密码

    set password for 'username'@'host' = password('newpassword');
    
    -- 如果是设置当前用户的密码
    set password = password('newpassword');
    

    五、撤销账户权限

    -- 回收权限,格式和分配差不多,grant -> revoke , to -> from
    revoke select on Liwker.student from liwker@'%';
    

    但注意:

    若授予权利是这样写:grant select on *.* to liwker@'%';
    则用 revoke select on Liwker.student to liwker@'%'; 是不能撤销用户 liwker 对 Liwker.student 中的 SELECT 权利的。

    反过来 grant select on Liwker.student to liwker@'%'; 授予权力
    revoke select on *.* to liwker@'%'; 也是不能用来撤销用户 liwker 对 Liwker 库的 student 表的SELECT 权利的

    六、测试

    先创建一个新账户

    image-20201214173710214

    再给他分配一些操作权限

    image-20201214173932905

    接下来,就打开cmd用新账户测试一下
    先登录这个账户

    image-20201214174051967

    可以看到除了默认数据库,只能看到分配给的数据库和表

    image-20201214174223713

    用分配给的不同SQL语句测试一下

    image-20201214174549406

    再试一试没权限的

    image-20201214174720481

    这时,我们可以在管理台给他新增这个权限

    image-20201214174834028

    在测试台重新试一试刚刚的 delete

    image-20201214174959311

    再试一试回收权限,管理台回收 delete 权限

    image-20201214175431291

    测试台,这下就不行了

    image-20201214175454114

    最后就试一试删除这个账户

    image-20201214183646494

    image-20201214183713167

    成功。

  • 相关阅读:
    cesium【02-小部件】
    cesium【01-初始化】
    【01】webpack4 快速上手
    【11】openlayers 地图交互
    【10】openlayers 视图view
    【09】openlayers 图片图层
    【08】openlayers 热力图层
    【07】openlayers 矢量图层
    测试从业人员常用的数据库技能整理
    基于web网站项目的性能测试结果分析
  • 原文地址:https://www.cnblogs.com/Liwker/p/14134822.html
Copyright © 2011-2022 走看看