mysql8.0.30用户与权限管理

2023-11-16

用户管理

登录mysql服务器

mysql –h hostname|hostIP –P port –u username –p DatabaseName –e "SQL语句"

下面详细介绍命令中的参数:

  • h参数 后面接主机名或者主机IP,hostname为主机,hostIP为主机IP。
  • P参数 后面接MySQL服务的端口,通过该参数连接到指定的端口。MySQL服务的默认端口是3306,不使用该参数时自动连接到3306端口,port为连接的端口号。
  • u参数 后面接用户名,username为用户名。
  • p参数 会提示输入密码。
  • DatabaseName参数 指明登录到哪一个数据库中。如果没有该参数,就会直接登录到MySQL数据库
    中,然后可以使用USE命令来选择数据库。
  • e参数 后面可以直接加SQL语句。登录MySQL服务器以后即可执行这个SQL语句,然后退出MySQL
    服务器。

创建用户

create user zhang3 identified by '123_qwerQWER'; # 默认hosts是 % 
flush privileges; #立即生效
---------------------------------------------------------
create user 'kangshifu'@'localhost' identified by '123_qwerQWER'; # 创建指定host的用户

在这里插入图片描述

修改用户

update mysql.user set user='li4' where user='zhang3';
flush privileges;

在这里插入图片描述

删除用户

drop user li4; # 默认删除host为%的用户
drop user 'kangshifu'@'localhost'; #指定删除host的用户
flush privileges;
---------------------------------------------------------
delete from mysql.user where host='%' and user='zhang3'; # delete也可以删除用户
flush privileges;

查看用户

select host, user from user;select host, user from mysql.user;

修改用户密码

set password for 'zhang3'@'%'='122_qwerQWER';

权限管理

查看权限

show privileges;

在这里插入图片描述

  • (1) CREATE和DROP权限 ,可以创建新的数据库和表,或删除(移掉)已有的数据库和表。如果将MySQL数据库中的DROP权限授予某用户,用户就可以删除MySQL访问权限保存的数据库。
  • (2)SELECT、INSERT、UPDATE和DELETE权限 允许在一个数据库现有的表上实施操作。
  • (3) SELECT权限只有在它们真正从一个表中检索行时才被用到。
  • (4) INDEX权限 允许创建或删除索引,INDEX适用于已有的表。如果具有某个表的CREATE权限,就可以在CREATE TABLE语句中包括索引定义。
  • (5) ALTER权限 可以使用ALTER TABLE来更改表的结构和重新命名表。
  • (6) CREATE ROUTINE权限 用来创建保存的程序(函数和程序),ALTER ROUTINE权限用来更改和删除保存的程序, EXECUTE权限 用来执行保存的程序。
  • (7) GRANT权限 允许授权给其他用户,可用于数据库、表和保存的程序。
  • (8) FILE权限 使用户可以使用LOAD DATA INFILE和SELECT … INTO OUTFILE语句读或写服务器上的文件,任何被授予FILE权限的用户都能读或写MySQL服务器上的任何文件(说明用户可以读任何数据库目录下的文件,因为服务器可以访问这些文件)。

授予权限的原则

权限控制主要是出于安全因素,因此需要遵循以下几个 经验原则 :

  • 1、只授予能 满足需要的最小权限 ,防止用户干坏事。比如用户只是需要查询,那就只给select权限就可以了,不要给用户赋予update、insert或者delete权限。
  • 2、创建用户的时候 限制用户的登录主机 ,一般是限制成指定IP或者内网IP段。
  • 3、为每个用户 设置满足密码复杂度的密码 。
  • 4、 定期清理不需要的用户 ,回收权限或者删除用户。

授予权限

注意: 命令行字母可小写

GRANT 权限1,权限2,…权限n ON 数据库名称.表名称 TO 用户名@用户地址 [IDENTIFIED BY ‘密码口令’];
  • 给li4用户用本地命令行方式,授予atguigudb这个库下的所有表的插删改查的权限。
    GRANT SELECT,INSERT,DELETE,UPDATE ON atguigudb.* TO li4@localhost ;

  • 授予通过网络方式登录的joe用户 ,对所有库所有表的全部权限,密码设为123。注意这里唯独不包括grant的权限
    GRANT ALL PRIVILEGES ON *.* TO joe@'%' IDENTIFIED BY '123';

实例如下

 grant select on atguigu.* to zhang3@%;
 grant select on custom.users to 'zhang3'@'%';

查看权限

show grants for 'root'@'%'\G
show grants for 'zhang3'@'%'\G

在这里插入图片描述

收回权限

REVOKE 权限1,权限2,…权限n ON 数据库名称.表名称 FROM 用户名@用户地址;
#收回全库全表的所有权限
REVOKE ALL PRIVILEGES ON *.* FROM joe@'%';
#收回mysql库下的所有表的插删改查权限
REVOKE SELECT,INSERT,UPDATE,DELETE ON mysql.* FROM joe@localhost;

查看user 信息表结构和信息

desc mysql.user;
select * from mysql.user\G

在这里插入图片描述
在这里插入图片描述

db表

DESCRIBE mysql.db;
    1. 用户列 db表用户列有3个字段,分别是Host、User、Db。3个字段分别表示主机名、用户名和数据库名。表示从某个主机连接某个用户对某个数据库的操作权限,这3个字段的组合构成了db表的主键。
    1. 权限列
      Create_routine_priv和Alter_routine_priv这两个字段决定用户是否具有创建和修改存储过程的权限

其他表信息、

procs_priv表 tables_priv表和 columns_priv表 需要时自行了解

角色管理

  • 角色(Role),可以认为是一些权限的集合,一直是存在各个数据库中,比如Oracle、SQL Server、OceanBase等,MySQL 自从 8.0 release 才引入角色这个概念。
  • 为用户赋予统一的角色,即把一个带有某些权限集合的角色分配给一个用户,那该用户就拥有了该角色所包含的所有权限,权限的修改直接通过角色来进行,无需为每个用户单独授权,大大的方便了权限管理。

创建角色

CREATE ROLE 'role_name'[@'host_name'] [,'role_name'[@'host_name']]...
CREATE ROLE 'manager'@'localhost';

给角色授予权限

GRANT privileges ON table_name TO 'role_name'[@'host_name'];

查看所有权限

show privileges\G

在这里插入图片描述

查看角色的权限

SHOW GRANTS FOR 'manager';

回收角色的权限

REVOKE privileges ON tablename FROM 'rolename';

删除角色

注意, 如果你删除了角色,那么用户也就失去了通过这个角色所获得的所有权限 。

DROP ROLE role [,role2]...
DROP ROLE 'school_read';

给用户赋予角色

GRANT role [,role2,...] TO user [,user2,...];
GRANT 'school_read' TO 'kangshifu'@'localhost';

激活角色

show variables like 'activate_all_roles_on_login';
SET GLOBAL activate_all_roles_on_login=ON;

这条 SQL 语句的意思是,对 所有角色永久激活 。运行这条语句之后,用户才真正拥有了赋予角色的所有
权限。
在这里插入图片描述

撤销用户的角色

REVOKE role FROM user;
REVOKE 'school_read' FROM 'kangshifu'@'localhost';
SHOW GRANTS FOR 'kangshifu'@'localhost';

设置强制角色(mandatory role)

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mysql8.0.30用户与权限管理 的相关文章

随机推荐

  • Qt学习11:Dialog对话框操作总结

    文章首发于我的个人博客 欢迎大佬们来逛逛 完整Qt学习项目地址 源码地址 文章目录 QDialog QDialogButtonBox QMessageBox QFileDialog QFontDialog QColorDialog QInp
  • smardaten实战丨谁说无代码不能开发出漂亮的门户首页?

    一 需求背景 门户首页对于一个公司或组织来说是一个极其重要的网站页面 它可以作为访问者了解和获取相关信息的入口 同时也是展示品牌形象和吸引目标受众的重要工具 开发一个门户首页需要开发团队在向访问者展示关于公司或组织基本信息的基础上 使用多种
  • 【B类比赛】 第十一届蓝桥杯 省国赛经历

    Now 拿起键盘写下这段话的时候 已经是第12届蓝桥杯省赛前的一天了 2021 4 17 距离上次蓝桥杯省赛正好6个月了 如今的我仍在ACM里 这半年经历了挺多事情 退ACM已经势在必行 且行且珍惜吧 未来的我将会接触一些新的领域 在算法之
  • 进程间通信之共享内存分析

    零拷贝技术 https strikefreedom top linux io and zero copy 一 内存映射和共享内存的区别 1 1 内存映射之mmap函数 将一个文件或者其它对象映射到进程的地址空间 实现文件磁盘地址和进程虚拟地
  • iView中Form表单的验证(自定义验证、动态增减项验证)

    记录 iView中Form表单的验证 自定义验证 动态增减项验证
  • java.sql.SQLException: Network error IOException: Connection refused

    发生原因的问题是 数据库从服务器换到本地 项目启动就报错 1 程序和功能 启用或关闭Windows功能 2 Telnet客户端打个勾 3 win R cmd 输入 services msc 找到SQL SERVER的服务 重启一下 4 重启
  • SQLserver2008 R2连接服务器异常(error:26-定位指定的服务器/实例时出错)

    SQLserver2008 R2连接服务器异常 error 26 定位指定的服务器 实例时出错 笔者的系统环境 Windows7旗舰版安装VMware workstations pro后在Windows8 1专业版操作系统上安装SQLser
  • C语言实现抽签小功能

    相信大家都玩过微信小程序抽签的经历 现在我们就用C语言实现简单的抽签函数 简单方便 思考难度不大 各位试试吧 include
  • css line height无效,为什么设置span的line-height属性无效?

    不知道为什么span 中line height设置大小小于18px的话都是无效的 18之后才看到效果 不知道是怎么回事求大佬解答一下 http codepen io 1206189299 直接给答案 给 span 设置 display in
  • Cannot change version of project facet Dynamic Web Module to 2.5 错误

    问题 新建maven webapp项目后 出现Cannot change version of project facet Dynamic web module to 3 0或者2 5 分析 使用Maven新建Web项目时使用的是Artif
  • 和数集团聚焦区块链人才培养推动数字经济场景落地

    随着互联网时代的不断推进 全球经济结构已呈现多元化形态 尤其是大数据 云计算 人工智能等技术革新进步 数字经济迎来了快速发展的时期 从更深层次方面理解 数字经济也契合创新 协调 绿色 开放 共享的新发展理念 为我们国家经济社会发展注入了新动
  • Hive(八)Hive的Shell操作与压缩存储

    一 Hive的命令行 1 Hive支持的一些命令 Command Description quit Use quit or exit to leave the interactive shell set key value Use this
  • node.js如何封装一个接口

    用到的应用 1 webstorm 2 Navicat for MySQL 3 postman 一 使用express创建项目 1 npm install express generator g 2 express myapp 二 使用Nav
  • Openwrt下ipk包的安装、卸载与更新

    一 环境说明 Openwrt version 17 01 4 Linux version 4 4 92 二 安装ipk 将编译好的 ipk传到开发板上 使用命令 opkg install xxxxx ipk 安装成功的界面如下 再进入 li
  • 【软件工程期末复习内容】

    前言 时不可以苟遇 道不可以虚行 一 软件工程的概念 软件是计算机系统运行的 指令 数据 和 相关文档 的集合 即软件等于程序 数据 加上文档 程序 是事先按照预定功能性能等要求设计和编写的指令序列 数据 是使程序正常处理信息的数据结构及信
  • 远程计算机内部错误,Win10系统远程桌面连接出现内部错误怎么办?

    Win10系统远程桌面连接出现内部错误该怎么办 大家在使用Win10系统的时候总是会出现这样那样的问题 Win 10 远程桌面连接偶尔提示 出现了内部错误 刚刚明明还好好的 有时连接久了会突然断开 提示出现了内部错误 我们遇到这个问题该怎么
  • 生态系统过程模型

    生态系统过程模型 根据生态系统的生理生态学特性 结合影响生态系统过程的观测指标 提出的能够反映生态系统过程的机制模型 统计模型 stochasticmodel statisticmodel probabilitymodel 指以概率论为基础
  • qt 动态库的创建和使用教程(step by step)

    一般大型项目中 会将实现特定功能的函数或类 封装成链接库 供应用程序代码调用 下面我将一步步教你如何在qt 中创建动态库 并使用它 目录 创建多子目录项目 创建动态链接库 编辑链接库内容 创建应用工程并连接动态链接库 创建多子目录项目 首先
  • React基础入门

    系统学习React 一 基础知识 邂逅React开发 React系列一 核心JSX语法一 React系列二 核心JSX语法二 React系列三 阶段案例练习 React系列四 React脚手架 React系列五 组件化开发 一 React系
  • mysql8.0.30用户与权限管理

    文章目录 用户管理 登录mysql服务器 创建用户 修改用户 删除用户 查看用户 修改用户密码 权限管理 查看权限 授予权限的原则 授予权限 查看权限 收回权限 查看user 信息表结构和信息 db表 其他表信息 角色管理 创建角色 给角色