zoukankan      html  css  js  c++  java
  • 数据库——MySQL——权限管理

    关于MySQL的权限管理,可以理解为是MySQL运行你做的事情。比如MySQL允许你执行select操作那么你就不能用update操作。如果你让你在某台机器上连接MySQL,那么你就不能在这个机器以外的其他机器上连接MySQL。

    关于MySQL的权限验证分为两个阶段:

    第一阶段:服务器首先会检查你是否允许连接。因为创建用户的时候会加上主机限制,可以限制成本地、某个IP、某个IP段、以及任何地方等,只允许你从配置的指定地方登陆。

    第二阶段:如果你能连接,Mysql会检查你发出的每个请求,看你是否有足够的权限实施它。比如你要更新某个表、或者查询某个表,Mysql会查看你对哪个表或者某个列是否有权限。再比如,你要运行某个存储过程,Mysql会检查你对存储过程是否有执行权限等。

    下面是官网给出的MySQL的权限:

     一般我们自己用都是用的root最高权限用户,但是工作中基本都是已经有自己单独的已经被分配好权限的账号。

    关于用户操作

    创建用户

    命令

    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'@'%';

    注:有的MySQL版本给用户设置了%允许任何地方登陆,但是本地登陆不了,遇到这个问题,加上localhost的用户就可以了。

    设置和更改用户密码

    命令

    SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword');
    
    如果是当前登陆用户用:
    SET PASSWORD = PASSWORD("newpassword");

     例子

    SET PASSWORD FOR 'pig'@'%' = PASSWORD("123456");

    修改用户名

    RENAME user " 'oldusername'@'host' to  'newusername'@'host' 

    删除用户

    DROP USER 'username'@'host';

    关于授权

    授权

    在一开始给出的权限表中,我们要注意到关于权限有四个大方向,针对所有数据,针对某个数据库,针对某个表,针对某一字段。

    命令

    grant privileges on databasesname.tablename to "username"@"host"

     说明

    • privileges:用户的操作权限,比如select,insert,update等,如果要授予所有权限,用all。
    • databasesname:数据库名
    • tablename:表名,如果要授予该用户所有数据库和所有表的相关权限,用*.*。
    • 用上面的命令授权的用户不能给其他用户授权,如果想让该用户可以给其他用户授权,可以用
      • grant privileges on databasesname.tablename to "username"@"host" with grant option; 

     例子

    grant all on *.* to "pig";
    grant select, insert on test.* to "pig"@"%";
    grant select, insert on test.user to "pig"@"%"
    grant select (id,name),update (age) on test.user to "pig"@"%";
    
    

    刷新权限

    使用这个命令使授权生效

     flush privileges;

    查看权限

    # 查看当前用户的权限
    show grants;    
    
    # 查看某个用户的权限
    show grants for "username"@"host" 或者show grants for "username"

    回收权限

    REVOKE privilege ON databasename.tablename FROM 'username'@'host';

    privilege, databasename, tablename:同授权部分

    注意:

    假如你在给用户'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'@'%'; 查看。

  • 相关阅读:
    选课系统
    Python入门day34——网络编程基础
    Python入门day34——异常处理
    Python入门day33——元类、属性查找
    Python入门day33——反射、内置方法
    Python入门day30——mixins机制、super()、多态、绑定方法、内置函数
    从 0 到 1 实现 React 系列 —— 5.PureComponent 实现 && HOC 探幽
    前端中常见数据结构小结
    从 0 到 1 实现 React 系列 —— 4.setState优化和ref的实现
    从 0 到 1 实现 React 系列 —— 3.生命周期和 diff 算法
  • 原文地址:https://www.cnblogs.com/kuxingseng95/p/9538015.html
Copyright © 2011-2022 走看看