MySQL_11 用户管理和权限管理

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: MySQL 第十一节 用户管理和权限管理 内容分享。

目录

一、用户管理

       1.用户介绍 :

       2.操作指令 :

       3.代码演示 :

二、权限管理

       1.MySQL常见权限汇总 :

       2.相关指令 :

       3.代码演示 :


一、用户管理

       1.用户介绍 :

               MySQL中的用户都存储在系统数据库mysql中的user表中,如下图所示 :

image.gif编辑

               user表中,几个比较重要的字段——

               Host : 允许“登录”的位置(IP);localhost表示该用户只允许本机登录;但也可以指定IP地址,eg : 192.168.1.100,192.168.1.%;

               User :  用户名;

               Authentication_string : 加密后的密码,mysql8.0默认是通过caching_sha2_password()函数来加密的。

               Q : 为什么需要进行用户管理?

               A : 当我们做项目开发时,可以根据不同的开发人员,赋予他不同的MySQL操作权限;因此,MySQL数据库的管理员root用户,会根据需要创建不同的用户,并分别赋予相应的权限,供不同人员来使用

       2.操作指令 :

       1° 创建用户(同时指定密码)——

       CREATE USER '用户名' @ '允许登录的位置' IDENTIFIED BY 'pwd_expr';

      2° 删除用户 ——

       DROP USER '用户名' @ '允许登录的位置';

       3° 修改密码 —— (MySQL8.0)

       ALTER USER '用户名' @ '允许登录的位置' IDENTIFIED WITH MYSQL_NATIVE_PASSWORD BY 'pwd_expr';

       PS :

       MySQL下,认为用户的完整信息由用户名登陆位置组成

       不同的数据库用户,登录到DBMS后,根据相应的权限,可以操作的数据库和数据对象(表,视图,触发器)都不一样

       在创建用户时,若未指定Host,则为%,表示所有IP都有连接权限;同理,在删除用户时,若Host != %,必须在用户信息中明确指定用户的Host值。

       3.代码演示 :

               创建一个新的用户Ice,密码假设为12345,如下所示 :

CREATE USER 'Ice'@'localhost' IDENTIFIED BY '12345';

image.gif

image.gif编辑

               尝试登录Ice用户,如下 :

image.gif编辑

               登录成功后,会发现Ice用户可操作的数据库很少,如下图所示  :

image.gif编辑

               尝试更改Ice用户的密码,如下 :

ALTER USER 'ice'@'localhost' IDENTIFIED WITH MYSQL_NATIVE_PASSWORD BY '54321';

image.gif

               更改密码后,已建立的Ice用户与MySQL的连接将无法重新连接,如下 :

image.gif编辑

               这时,在“编辑连接”中更改当前的登录密码可以重新连接。如下 :

image.gif编辑

image.gif编辑

               尝试删除Ice用户。

               删除前,可以在mysql.user表中看到Ice用户存在,如下图所示  :

image.gif编辑

               使用DROP USER 指令删除Ice用户 :  

DROP USER 'Ice'@'localhost' ;

image.gif

               删除成功后,Ice用户在user表中不存在。

image.gif编辑


二、权限管理

       1.MySQL常见权限汇总 :

    • ALL [PRIVILEGES] : 设置除GRANT OPTION之外的所有简单权限
    • ALTER : 允许使用ALTER TABLE
    • ALTER ROUTINE : 更改或取消已存储的子程序
    • CREATE : 允许使用CREATE TABLE
    • CREATE ROUTINE : 创建已存储的子程序
    • CREATE TENPORARY TABLES : 允许使用CREATE TEMPORARY TABLE
    • CREATE USER : 允许使用CREATE USER,DROP USER,RENAME USER和REVOKE ALL PRIVILEGES。
    • CREATE VIEW : 允许使用CREATE VIEW
    • DELETE : 允许使用DELETE
    • DROP : 允许使用DROP TABLE
    • EXECUTE : 允许用户运行已存储的子程序
    • FILE : 允许使用SELECT..INTO OUTFILE和LOAD DATA INFILE
    • INDEX : 允许使用CREATE INDEX和DROP INDEX
    • INSERT : 允许使用INSERT
    • LOCK TABLES : 允许对您拥有SELECT权限的表使用LOCK TABLES
    • PROCESS : 允许使用SHOW FULL PROCESSLIST
    • REFERENCES : 未被实施
    • RELOAD : 允许使用FLUSH
    • REPLICATION CLIENT : 允许用户询问从属服务器或主服务器的地址
    • REPLICATION SLAVE : 用于复制型从属服务器(从主服务器中读取二进制日志事件)
    • SELECT : 允许使用SELECT
    • SHOW DATABASES : SHOW DATABASES显示所有数据库
    • SHOW VIEW : 允许使用SHOW CREATE VIEW
    • SHUTDOWN : 允许使用mysqladmin shutdown
    • SUPER : 允许使用CHANGE MASTER,KILL,PURGE MASTER LOGS和SET GLOBAL语句,mysqladmin debug命令;允许您连接(一次),即使已达到max_connectionso
    • UPDATE : 允许使用UPDATE
    • USAGE : “无权限”的同义词
    • GRANT OPTION : 允许授予权限

           2.相关指令 :

           1° 授予权限

           GRANT purview_list ON 库.对象名 TO '用户名'@'登录位置' [IDENTIFIED BY 'pwd_expr'];
           注意事项——

           ①权限列表中的多个权限使用逗号分隔开,eg :

           eg1 : GRANT SELECT, DELETE, CREATE ON ...;

           eg2 : GRANT ALL ON...;        //表示授予该用户在该对象上的全部权限。

           ②*.*代表本系统中的所有数据库的所有数据对象(表,视图,存储过程)库.*表示某个指定数据库中的所有数据对象(表,视图,存储过程)

           ③IDENTIFIED BY 可写可不写。若写出,用户存在则修改该用户的密码用户不存在则创建该用户。

           2° 回收权限

           REVOKE purview_list ON 库.对象名 FROM '用户'@'登录位置';

           PS :

           若权限指令没有生效,可以使用FLUSH PRIVILEGES; 指令来刷新(一般来说都会立即生效,尤其对于高版本的MySQL)。

           3.代码演示 :

                   要求如下——

                   ①创建用户five@localhost;
                   ②在root用户下为five用户授予一定权限;
                   ③在five用户下测试被授予的权限是否生效;
                   ④测试five用户未被授予的权限是否生效;
                   ⑤回收five用户的权限并删除five用户。

                   演示如下——

                   ①创建five用户 :

    CREATE USER 'five'@'localhost' IDENTIFIED BY '666';
    SELECT * FROM mysql.user;

    image.gif

    image.gif编辑

                   ②在root用户下为five用户分配权限 :

                   假定我们可以使five用户对select_ex数据库中的emp表进行访问,授予five用户查询,修改,和删除数据的权限。如下图所示 :

    image.gif编辑

    GRANT SELECT,UPDATE,INSERT ON select_ex.emp TO 'five'@'localhost';

    image.gif

                   ③登录five用户,查看权限是否生效 :

    image.gif编辑

                   可以看到,five用户视角下,已经显示有select_ex数据库以及emp表。

                   继续,测试被授权的指令能否使用 :

    INSERT INTO emp
        VALUES 
        (6666,'NewBee','Manage',1,'2002-011-11',99999.00,99999.00,10);
    UPDATE emp
        SET ecareer = 'Boss';
    SELECT * 
        FROM emp;

    image.gif

    image.gif编辑

                   ④测试five用户能否删除表中的数据 :

    DELETE FROM emp
        WHERE eno = 6666;

    image.gif

                   显然无法成功 :  

    image.gif编辑

                   可以继续在root用户下追加权限,使five用户可以进行删除数据的操作 :

    GRANT DELETE ON select_ex.emp TO 'five'@'localhost';

    image.gif

                   five用户再次尝试删除数据 :

    DELETE FROM emp
        WHERE eno = 6666;
    SELECT * FROM emp;

    image.gif

    image.gif编辑

                  ⑤回收five用户的权限并删除five用户 :

    REVOKE INSERT,DELETE,SELECT,UPDATE ON select_ex.emp FROM 'five'@'localhost';

    image.gif

                  在five用户下刷新连接,将看不到selec_ex数据库,如下图所示 :

    image.gif编辑

                  在root用户下删除five用户 :

    DROP USER 'five'@'localhost';

    image.gif

                   five用户将无法重新连接。

    image.gif编辑

           System.out.println("END-------------------------------------------------------------------------------");

    相关实践学习
    如何在云端创建MySQL数据库
    开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
    全面了解阿里云能为你做什么
    阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
    目录
    相关文章
    |
    6月前
    |
    安全 关系型数据库 MySQL
    轻松入门MySQL:MySQL8权限管理详解,角色和用户操作实例(18)
    轻松入门MySQL:MySQL8权限管理详解,角色和用户操作实例(18)
    1067 0
    |
    6月前
    |
    存储 关系型数据库 MySQL
    【mysql】—— 用户管理
    【mysql】—— 用户管理
    |
    6月前
    |
    SQL 关系型数据库 MySQL
    ⑤ 【MySQL】DCL语句 —— 用户管理、权限控制
    ⑤ 【MySQL】DCL语句 —— 用户管理、权限控制
    71 0
    |
    SQL 关系型数据库 MySQL
    【MYSQL基础】MYSQL用户管理
    【MYSQL基础】MYSQL用户管理
    88 1
    |
    6月前
    |
    SQL 关系型数据库 MySQL
    mysql用户、权限管理
    mysql用户、权限管理
    |
    6月前
    |
    存储 关系型数据库 MySQL
    【MySQL】用户管理 -- 详解
    【MySQL】用户管理 -- 详解
    |
    5月前
    |
    安全 关系型数据库 MySQL
    深入解析MySQL 8中的角色与用户管理
    深入解析MySQL 8中的角色与用户管理
    213 3
    |
    6月前
    |
    关系型数据库 MySQL Linux
    MySQL免编译安装和用户管理(转)
    MySQL免编译安装和用户管理(转)
    31 1
    |
    5月前
    |
    安全 关系型数据库 MySQL
    MySQL权限管理大揭秘:用户、组、权限解析
    MySQL权限管理大揭秘:用户、组、权限解析
    637 0
    |
    5月前
    |
    存储 关系型数据库 MySQL
    【MySQL】用户管理
    【MySQL】用户管理