zoukankan      html  css  js  c++  java
  • MySQL 安全性知识要点

    添加、删除用户

    1.添加用户

    可以使用CREAT USER语法添加一个或多个用户,并设置相应的密码。

    语法格式:

    CREAT USER user [IDENTIFIED BY  [PASSWORD]  'password']

        [,user [IDENTIFIED BY  [PASSWORD]  'password'] ] ...

    其中,user的格式为:

    ‘user_name’@ 'host name'

    注:user_name为用户名,host_name为主机名,password为该用户的密码。

    使用自选的IDENTIFIED BY 子句,可以为账户给定一个密码。特别是要在纯文本中指定密码,需忽略PASSWORD关键词。如果不想以明文发送密码,而且知道PASSWORD()函数返回给密码的混编制,则可以指定该混编值,则可以制定该混编值,但要加关键字PASSWORD。

    CREAT USER用于创建新的MySQL账户。CREAT USER会在系统本身的mysql数据库的user表中添加一个新记录。要是用CREAT USER,必须拥有mysql数据库的CREAT USER权限或INSERT权限。如果账户已经存在,则出现错误。

     例:添加两个新的用户,king的密码为queen,cong的密码为707013

    create user

      'king' @ 'localhost' identified by 'queen',

      'cong' @  'localhost' identified by '707013';

    完成后可以切换到mysql数据库,从user表中查到刚刚添加的两个用户记录:

    use mysql

    show tables;

    select * from user

    注:在用户名后面声明了关键字localhost。这个关键字指定用户创建的使用MySQL的连接所来自的主机。如果一个用户名和主机名中包含特殊符号如“_”,或通配符如“%”,则需要用单引号将其括起。“%”表示一组主机。

    如果两个用户具有相同的用户名但主机不同,MySQL将其视为不同的用户,允许为这两个用户分配不同的权限集合。

    如果没输入密码,那么MySQL允许相关的用户不使用密码登录。但是从安全的角度并不推荐这种做法。

    2.删除用户

     语法格式:

    DROP USER  user [, user_name]......

    DROP USER  语句用于删除一个或多个MySQL账户,并取消其权限。要使用DROP USER ,必须拥有mysql数据库的全局CREATE USER权限或DELETE权限。

    例:删除用户 palo

    drop user Palo@localhost;

    删除后可以用上面介绍的方法查看一下效果。如果被删的用户已经创建了表,索引或其他数据库对象,它们将继续保留,因为MySQL并没有记录是由谁创建了这些对象。

    修改用户名、密码

    1.修改用户名

    可以使用RENAME USER语句来修改一个已经存在的SQL用户的名字。

    语法格式:

    RENANE USER old_user TO new_user,

           [, old_user TO new_user]...

    注:old_user为已经存在过的SQL用户,new_user为新的SQL用户。

    RENAME USER语句用于对原有MySQL账户进行重新命名。要使用RENAME USER,必须拥有全局CREATE USER权限或mysql数据库UPDATE权限。如果旧账户不存在或者新账户已经存在,则会出现错误。

    例:将用户king的名字修改为ken

    rename user

      ‘king’ @ ‘loacalhost’ to 'ken' @ ‘loacalhost’;

    完成后可以用上面的方法查看一下是否修改成功。

    2.修改密码

    要修改某个用户的登录密码,可以使用SET PASSWORD语句。

    语法格式:

    SET PASSWORD  [FOR user]=PASSWORD ('newpassword')

    注:如果不加FOR user,表示修改当前用户的密码。加了FOR user则是修改当前主机上的特定用户的密码,user为用户名,它的值必须以'user_name' @'host_name'的格式给定。

    例:将用户ken的密码改为qen

    set password for ‘ken’ @ ‘localhost’ =password(‘qen’);

    权限控制

    1.授予权限

    新的SQL用户不允许访问其他SQL用户的表,也不能立即创建自己的表,它必须被授权。可以被授予的权限有以下几组。

    (1)列权限:和表中的一个具体列相关。

    (2)表权限:和一个具体表中的数据有关。

    (3)数据库权限:和一个具体的数据库中的所有表相关。

    (4)用户权限:和MySQL所有的数据库相关。

    给某用户授予权限可以使用GRANT语句。使用SHOW GRANTS语句可以查看当前账户拥有什么权限。

    GRANT 语法格式:

    GRANT priv_type  [(column_list)]  [, priv_type  [(column_list)] ]...

      ON [obect_type] {tbl_name |  *  |   * . *  |  db_name.*}

      TO user [IDENTIFIED BY [PASSWORD]  'password' ]

         [,user [IDENTIFIED BY [PASSWORD]  'password' ]  ]...

      [WITH with_option [with_option] ...]

    其中,object_type:

    TABLE

    |  FUNCTION

    |  PROCEDURE

    with_option:

    GRANT  OPTION

    |   MAX_QUERIES_PRE_HOUR  count

    |   MAX_UPDATES_PRE_HOUR  count

    |   MAX_CONNECTIONS_PRE_HOUR  count

    |   MAX_USER_CONNECTIONS  count

    注: priv_type为权限的名称,如 SELECT,UPDATE等,给不同的对象授予权限 priv_type的值也不同。TO子句用来设定用户的密码。ON字关键字后面给出的是要授予权限的数据库或表名。

    SELECT:给予用户使用SELECT语句访问特定的表的权力。用户也可以在一个视图公式中包含表。然而,用户必须对视图公式中的每个表或视图都有SELECT权限。

    INSERT:给予用户使用INSERT语句向一个特定表中添加行的权力。

    DELETE:给予用户使用DELETE语句向一个特定表中删除行的权力。

    UPDATE:给予用户使用UPDATE语句修改特定表中值的权力。

    REFERENCES:给予用户使用创建一个外键来参照特定的表的权力。

    CREATE:给予用户使用特定名字创建一个表的权力。

    ALTER:给予用户使用ALTER TABLE语句修改表的权力。

    INDEX:给予用户使用在表上定义索引的权力。

    DROP:给予用户删除表的权力。

    ALL或ALL PRIVILEGES:表示所有权限名。

    在授予表权限时,ON关键字后面跟上tb1_name ,tb1_name为表名或视图名。

  • 相关阅读:
    .NET 分布式自增Id组件(解决自动分配机器Id、时间回拨问题)
    简洁实用Socket框架DotNettySocket
    Colder框架硬核更新(Sharding+IOC)
    .NET Core开源快速开发框架Colder发布 (NET Core2.1+AdminLTE版)
    .NET开源快速开发框架Colder发布 (NET452+AdminLTE版)
    .NET 跨平台RPC框架DotNettyRPC
    Web后台快速开发框架(.NET Core)
    Web后台快速开发框架
    EasyWcf------无需配置,无需引用,动态绑定,轻松使用
    C# .NET 0配置使用Wcf(半成品)
  • 原文地址:https://www.cnblogs.com/215cwzx/p/8024627.html
Copyright © 2011-2022 走看看