• MySQL基础之安全管理


    管理用户

    MySQL用户账号和信息存储在名为mysql的MySQL数据库中。一般不需要直接访问mysql数据库和表, 但有时需要直接访问。需要直接访问它的时机之一是在需要获得所有用户账号列表时。为此, 可以使用如下代码

    USE mysql;
    SELECT user FROM user;

    mysql数据库中有一个名为user的表, 它包含所有用户账号。user表有一个名为user的列, 它存储用户登录名。

    创建用户账号

    为了创建一个新用户账号, 使用CREATE USER语句, 如下所示:

    CREATE USER ben IDENTIFIED BY 'p@$$w0rd';

    CREATE USER创建用户账号, 在创建用户账号时不一定需要口令, 不过这个例子使用IDENTIFIED BY 'p@$$w0rd'给出一个口令

    IDENTIFIED BY指定的口令为纯文本, MySQL将保存在user表之前对其进行加密。为了作为散列值指定口令, 使用IDENTIFIED BY PASSWORD

    为重新命名一个用户账号, 使用RENAME USER语句

    RENAME USER ben TO bforta;

    删除用户账号

    为了删除一个用户账号(以及相关的权限), 使用DROP USER语句

    DROP USER bforta;

    设置访问权限

    在创建用户账号之后, 必须接着分片访问权限。新创建的用户没有访问权限。它们能登录MySQL, 但是不能看到数据, 不能执行任何数据库操作。

    为了看到赋予用户账号的权限, 使用SHOW GRANTS FOR, 

    MariaDB [(none)]> SHOW GRANTS FOR bforta;
    +------------------------------------+
    | Grants for bforta@% |
    +------------------------------------+
    | GRANT USAGE ON *.* TO 'bforta'@'%' |
    +------------------------------------+
    1 row in set (0.001 sec)

    MariaDB [(none)]>

    输出显示用户bforta有一个权限USAGE ON *.*。USAGE表示根本没有权限。

    为设置权限, 使用GRANT语句。GRANT要求至少给出以下信息:

    • 要授予的权限
    • 被授予访问权限的数据库和表
    • 用户名
    MariaDB [(none)]> GRANT SELECT ON crashcourse.* TO bforta;
    Query OK, 0 rows affected (0.004 sec)
    
    MariaDB [(none)]> 

    此GRANT允许用户在crashcourse.*(crashcourse数据库的所有表)上使用SELECT。

    GRANT的反操作是REVOKE, 用它来撤销特定的权限。

    MariaDB [(none)]> REVOKE SELECT ON crashcourse.* FROM bforta;
    Query OK, 0 rows affected (0.001 sec)
    
    MariaDB [(none)]> 

    GRANT和REVOKE可以在几个层次上控制访问权限

    • 整个服务器, 使用GRANT ALL和REVOKE ALL
    • 整个数据库, 使用ON database.*
    • 特定的表, 使用ON database.table
    • 特定的列
    • 特定的存储过程

    可以授予和撤销的权限如下

    更改口令

    为了更改用户的口令, 可使用SET PASSWORD语句, 新口令必须如下加密

    MariaDB [(none)]> SET PASSWORD FOR bforta = Password('n3w p@$$w0rd');
    Query OK, 0 rows affected (0.003 sec)
    
    MariaDB [(none)]> 

    SET PASSWORD还可以用来设置自己的口令

    MariaDB [(none)]> SET PASSWORD = Password('n3w p@$$w0rd');
    Query OK, 0 rows affected (0.003 sec)
    
    MariaDB [(none)]> 
  • 相关阅读:
    今天学到的单词
    今天是运维的一天
    今天是属于数据库的一天
    Python基础9 元组的访问和拆包
    Python基础8 元组的创建
    Python基础7 序列
    Python基础6 控制语句 if else elif range() while for
    Python基础5 运算符
    Python基础4 字符串的查找 find rfind 字符串类型和数字类型的转换
    Python基础2 数据类型:数字类型
  • 原文地址:https://www.cnblogs.com/featherwit/p/13472161.html
Copyright © 2020-2023  润新知