Mysql高级篇(上)

news2024/9/21 14:29:15

Mysql高级篇(上)

  • Mysql架构介绍(一)
    • 1、Linux环境下的MySQL的安装与使用
    • 2、MySQL请求到响应字符集变化(了解)
    • 3、MySQL8 的主要目录结构
    • 4、数据库和文件系统关系
      • (1)默认数据库
      • (2)数据库在文件系统中的表示
    • 5、用户与权限管理
      • (1)用户管理
        • 创建
          • 疑问点
        • 修改(`表字段的修改`)
        • 删除
        • 用户密码修改与管理
          • 修改当前登录用户
          • root 修改其他用户
      • (2)权限管理
        • 权限列表
        • 授予权限原则
        • 授予权限方式
        • 授予权限命令
        • 查看权限
        • 收回权限
      • (3)权限表
      • (4)访问控制(了解)
        • 1. 连接核实阶段
        • 2. 请求核实阶段
      • (5)角色管理
        • 1. 创建角色
        • 2. 授予权限给角色
        • 3. 查看用户的角色和权限
        • 4. 收回角色权限
        • 5. 删除角色
        • 6. 将角色分配给用户
        • 7. 激活角色
        • 8. 默认角色
    • 6、配置文件的使用

Mysql架构介绍(一)

1、Linux环境下的MySQL的安装与使用

参考博文 Linux环境下的MySQL的安装与使用

2、MySQL请求到响应字符集变化(了解)

在这里插入图片描述

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

3、MySQL8 的主要目录结构

类别目录
数据库文件目录/var/lib/mysql/
命令目录/usr/bin//usr/sbin
配置文件目录/usr/share/mysql-8.0/(命令及配置文件)
/etc/下的my.cnf文件

在这里插入图片描述

4、数据库和文件系统关系

(1)默认数据库

SHOW DATABASES;

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

(2)数据库在文件系统中的表示

参考站内博文 Linux环境下MySQL的数据目录

5、用户与权限管理

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

(1)用户管理

创建

创建后,用户host默认为 % (任意IP)
CREATE USER '用户名' IDENTIFIED BY '密码';


创建指定host的用户
CREATE USER '用户名'@'IP地址' IDENTIFIED BY '密码';

在这里插入图片描述

疑问点

Linux环境下我登录MySQL,图片中是我用root用户登录MySQL的信息,上面user表中的用户名和对应的host值,其中有两个叫summer的用户; 随后我退出root用户,然后用summer用户登录MySQL,如果所示最后一张图片是用summer用户登录的,也登录成功了,但是我不知道是哪个summer用户,怎么确定是哪个summer用户啊?

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




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


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

修改(表字段的修改)

UPDATE 表名 SET 字段名=字段值 WHERE 条件;


刷新权限(必须要刷新,否则不生效)

FLUSH PRIVILEGES;

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

删除

DROP 表名 '用户名'@'host值';

在这里插入图片描述

用户密码修改与管理
修改当前登录用户

1、使用 ALTER USER 命令修改当前用户密码(推荐)

在命令行中修改(当前用户已经登录)USER()是函数
ALTER USER USER() IDENTIFIED BY '新密码';


远程工具(如:navicat)修改
ALTER USER '用户名'@'host值' IDENTIFIED BY '新密码';

在这里插入图片描述

2、使用 SET 命令修改当前用户密码

在命令行中修改(当前用户已经登录)
SET PASSWORD='新密码';


远程工具(如:navicat)修改
SET PASSWORD FOR '用户名'@'host值' = '新密码';

在这里插入图片描述

root 修改其他用户

和上述远程工具一样

ALTER USER命令修改

  • ALTER USER '用户名'@'host值' IDENTIFIED BY '新密码';


SET 命令修改

  • SET PASSWORD FOR '用户名'@'host值' = '新密码';



密码管理参考 腾讯云开发者社区文章




(2)权限管理

权限列表

SHOW PRIVILEGES;

在这里插入图片描述

授予权限原则
  • 只授予满足需要的最小权限
  • 创建用户的时候限制用户的登录主机,一般是限制成指定IP或内网IP段
  • 为每个用户设置满足密码复杂度的密码
  • 定期清理废弃用户,回收权限
授予权限方式

1. 角色赋予用户给用户授权
2. 直接给用户授权

授予权限命令

GRANT 权限1,权限2,...权限n ON 数据库名称.表名 TO 用户名@用户地址 [IDENTIFIED BY '密码口令'];

在这里插入图片描述

查看权限

查看当前用户的权限
SHOW GRANTS;

查看某用户的全局权限
SHOW GRANTS FOR '用户名'@'用户地址';

收回权限

收回权限就是取消已经赋予用户的某些权限,使用 revoke语句;
如果要删除某个用户的张虎,那么在删除之前,安全起见,在删除之前,一定要先收回该用户的所有权限

注意:收回权限需用户重新登录后才能生效

收回权限命令

REVOKE 权限1,权限2,...权限n ON 数据库名.表名 FROM 用户名@用户地址;

在这里插入图片描述

(3)权限表

MySQL 8.0 的权限表包括 mysql.usermysql.dbmysql.tables_privmysql.columns_privmysql.procs_priv。这些表存储了用户账号数据库级别的权限信息

  • 查看【用户账号】权限
    SELECT * FROM mysql.user;

  • 查看【数据库级别】权限
    SELECT * FROM mysql.db;

  • 查看【表级别】权限
    SELECT * FROM mysql.tables_priv;

  • 查看【列级别】权限
    SELECT * FROM mysql.columns_priv;

  • 查看【存储过程和函数】权限
    SELECT * FROM mysql.procs_priv;

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

在这里插入图片描述

(4)访问控制(了解)

Linux下,MySQL 8.0 的访问控制包括两个重要的阶段:连接核实阶段请求核实阶段。这两个阶段确保MySQL能够在用户连接和执行操作时进行权限的验证,从而保证数据库的安全性和控制权。

1. 连接核实阶段

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

2. 请求核实阶段

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

在这里插入图片描述

(5)角色管理

MySQL 8.0 中,角色管理变得更加灵活和强大。角色可以看作是一组权限的集合,用户可以被授予一个或多个角色,从而简化了权限管理

1. 创建角色
-- host_name 可以省略,省略后默认为 % ;role_name不可省略
-- 可以一次性创建多个角色,中间用 逗号 隔开
CREATE ROLE 'role_name'@'host_name';
2. 授予权限给角色
-- host_name 可以省略,省略后默认为 % ;role_name不可省略
-- PRIVILEGES 代表权限的名称,多个权限用逗号隔开
-- SHOW PRIVILEGES;  查看权限
GRANT PRIVILEGES ON 数据库名.表名 TO 'role_name'@'host_name';


-- 例如:授予developer角色对数据库mydb的所有表的SELECT和INSERT权限
GRANT SELECT, INSERT ON mydb.* TO 'developer';

3. 查看用户的角色和权限
-- 查看用户被分配了哪些角色,host_name 可以省略,省略后默认为 % 
SHOW GRANTS FOR 'user_name'[@'host_name'];


-- 例如:查看用户alice的角色和权限:
SHOW GRANTS FOR 'alice';
4. 收回角色权限
-- 如果需要撤销用户的角色,可以使用REVOKE命令:
REVOKE 'role_name' FROM 'user_name';

-- 收回角色的权限
-- PRIVILEGES 代表权限的名称,多个权限用逗号隔开
-- SHOW PRIVILEGES;  查看权限
REVOKE PRIVILEGES  ON 数据库名.表名  FROM 'role_name'@'host_name';





-- 例如:撤销用户alice的developer角色:
REVOKE 'developer' FROM 'alice';

--- 收回 developer角色对数据库mydb的所有表的SELECT和INSERT权限
REVOKE SELECT, INSERT ON mydb.* FROM  'developer';
5. 删除角色
-- 如果不再需要某个角色,可以将其删除:
DROP ROLE 'role_name';
6. 将角色分配给用户
-- 将角色分配给用户可以让用户继承该角色的所有权限。
GRANT 'role_name' TO 'user_name';


-- 例如,将developer角色分配给用户alice:
GRANT 'developer' TO 'alice';

7. 激活角色

分配了角色后,用户需要激活该角色才能使用它的权限。用户可以通过以下命令来激活某个角色

-- 分配了角色后,用户需要激活该角色才能使用它的权限。用户可以通过以下命令来激活某个角色
SET ROLE 'role_name'[@'host_name' TO 'user_name'@'host_name'];

--如果想要激活所有已分配的角色,可以使用:
SET ROLE ALL;


8. 默认角色
-- 用户可以设置一个或多个默认角色,这些角色将在用户登录时自动激活:
SET DEFAULT ROLE 'role_name' FOR 'user_name';


-- 例如,设置developer为用户alice的默认角色:
SET DEFAULT ROLE 'developer' FOR 'alice';

6、配置文件的使用

MySQL 8.0 中,my.cnf 文件是用于配置 MySQL 服务器及其相关工具行为的关键文件。不同的部分标签(如[mysqld]、[server]、[mysql]等)对应不同的 MySQL 组件或客户端工具的配置。

在这里插入图片描述

-- 使用示例
[mysqld]
port = 3306
datadir = /var/lib/mysql
socket = /var/lib/mysql/mysql.sock
log-error = /var/log/mysqld.log
pid-file = /var/run/mysqld/mysqld.pid
max_connections = 200
innodb_buffer_pool_size = 1G

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

[mysql]
user = root
host = localhost
port = 3306
socket = /var/lib/mysql/mysql.sock

在这里插入图片描述

[mysqld_safe]
log-error = /var/log/mysqld.log
pid-file = /var/run/mysqld/mysqld.pid
nice = 0
open-files-limit = 8192

在这里插入图片描述

[client]
port = 3306
host = localhost
user = root
socket = /var/lib/mysql/mysql.sock

在这里插入图片描述

[mysqladmin]
user = root
password = your_password
host = localhost

总结:
MySQL 8.0 中,my.cnf 文件通过不同的部分标签(如 [mysqld]、[client]、[mysql] 等)来配置 MySQL 服务器和各个工具的行为。理解和正确配置这些部分,可以有效地管理 MySQL 的各种功能和工具,使其更好地适应您的需求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2095292.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言程序设计之基础易错题锦集6

C语言程序设计之基础易错题锦集6 问题 6_0解析 6_0 问题 6_0 将形参 s 所指字符串中字母字符顺序前移,其他字符顺序后移,处理后将新字符串的首地址作为函数值返回。 例如:输入 :“asd123fgh456df”, 输出:“a…

React基础面试题

React 面试题 以下是面试官最有可能问到的 50 个 React 面试题和答案。为方便你学习,我对它们进行了分类: 基本知识React 组件React ReduxReact 路由 基本知识 1. 区分Real DOM和Virtual DOM Real DOMVirtual DOM1. 更新缓慢。1. 更新更快。2. 可以…

简化理解:Tomcat 和 Servlet 规范

有时候,我们会把复杂的技术概念弄得很复杂,其实这些东西可以用更简单的语言来理解。我们来看看 Tomcat 和 Servlet 规范到底是怎么回事。 1. 什么是 Servlet 规范? 简单来说,Sun 公司(现在是 Oracle)定了…

YOLOv9改进策略【模型轻量化】| MoblieNetV3:基于搜索技术和新颖架构设计的轻量型网络模型

一、本文介绍 本文记录的是基于MobileNet V3的YOLOv9目标检测轻量化改进方法研究。MobileNet V3的模型结构是通过网络搜索得来的,其中的基础模块结合了MobileNet V1的深度可分离卷积、MobileNet V2的线性瓶颈和倒置残差结构以及MnasNet中基于挤压和激励的轻量级注意…

注意力机制(Attention mechanism)(上篇)

在图像识别的时候,假设输入的图像大小都是一样的。但如果问题变得复杂,如图1所 示,输入是一组向量,并且输入的向量的数量是会改变的,即每次模型输入的序列长度都不一 样,这个时候应该要怎么处理呢&#xff…

随笔十、音频扩展模块测试

本项测试简单,对购买的音频扩展模块进行录音放音测试 按照使用说明,连接音频小板,一个喇叭一个麦克风,4根线,buildroot系统镜像 录音测试 rootRK356X:/# arecord -c 1 -r 44100 -f S16_LE /tmp/record.wav Recording …

Java-多线程入门

多线程是指在软件或硬件上实现多个线程并发执行的技术。为了更好地理解多线程,首先需要了解几个基本概念: 了解概念 1.程序 程序是为完成特定任务、用某种语言编写的一组指令的集合。它是一个静态的概念,通常存储在磁盘或其他非易失性存储器…

vxe-table 更新到最新版本

当前版本: "vxe-table": "^4.3.0-beta.3" 更新后: "vxe-table": "^4.7.75" 需要调整代码: 更改前main.js 更改后:

Jenkins Environment Injector Plugin 插件详解

引言 在做自动化测试的过程中,我们需要经常发送测试报告给相关研发、产品和上级,但是Jenkins邮件模板不支持Javascritpt脚本来动态生成数据,只支持静态的HTML代码,那么我们就没有办法了吗?非也,我们可以通…

SQL进阶技巧:经典问题题-换座位

目录 0 问题描述 1 数据准备 2 问题分析 3 小结 0 问题描述 表 seat中有2个字段id和student id 是该表的主键(唯一值)列,student表示学生姓名。 该表的每一行都表示学生的姓名和 ID。 id 是一个连续的增量。 编写解决方案来交换每两个连续的学生的座位号。如果学生的数量…

Windows下Nacos安装与配置

目录 1. 下载Nacos 2. 解压安装包 3. 配置系统环境变量 4. 启动Nacos 5. 配置数据库为mysql 6. 配置鉴权默认值 1. 下载Nacos 我下载的版本是2.3.0。 下载地址:Nacos Server 下载 | Nacos 官网 但是我从官方那里下载超级慢,找了一个链接下载&#…

Milvus 向量数据库进阶系列丨构建 RAG 多租户/多用户系统 (下)

本系列文章介绍 在和社区小伙伴们交流的过程中,我们发现大家最关心的问题从来不是某个具体的功能如何使用,而是面对一个具体的实战场景时,如何选择合适的向量数据库解决方案或最优的功能组合。在 “Milvus 向量数据库进阶” 这个系列文章中&a…

Python将两个Excel文件按相同字段合并到一起

在工作中我们需要将两个有关联的数据文件合并成一个Excel 1. 创建两个excel文件 test1 test2 2. 使用Pandas 数据分析工具进行合并 Pandas 一个强大的分析结构化数据的工具集,提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据&#x…

Linux操作系统软件管理

一.软件安装包类型 1.常见软件安装包格式 源码软件 .tar.gz,.tar.bz2 优点:从功能使用的角度来讲,比rpm软件安装包更加灵活, 比如 在使用源码软件安装包的时候,可以自行选择安装软件的目录,这样操作便…

TypeScript与vue

一、为组件的props标注类型 - 在没有使用TS之前,是这样接受props: - 在TS环境中,是这样接受props: - 对于props的可选项如何限制呢? 1、类型限制 类型限制在接收的时候就已经定义好了 2、可选属性(必填限制…

华媒舍:8个为什么要选择国外纳斯达克大屏推广的原因

1.纳斯达克大屏的知名度和美誉度纳斯达克大屏是全球有名气的金融业信息表明平台之一,它在全球金融体系有着广泛的知名度和美誉度。以在纳斯达克大屏中进行推广,能够让更多人关注与掌握推广具体内容,从而增加品牌曝光率。 2.纳斯达克大屏高客流…

代码随想录Day 31|leetcode题目:56.合并区间、738.单调递增的数字、968.监控二叉树

提示:DDU,供自己复习使用。欢迎大家前来讨论~ 文章目录 贪心算法Part05题目题目一:56. 合并区间解题思路 题目二:738.单调递增的数字解题思路:暴力解法:结果超时贪心算法 题目三: 968.监控二叉…

今日早报 每日精选15条新闻简报 每天一分钟 知晓天下事 9月1日,星期日

每天一分钟,知晓天下事! 2024年9月1日 星期日 农历七月廿九 1、 未来一周,四川东部、重庆等地持续高温天气,最高气温可达40~42℃。 2、 山西明确:今日起,职工医保个人账户家庭共济范围由直系亲…

QNN:基于QNN+example重构之后的yolov8det部署

QNN是高通发布的神经网络推理引擎,是SNPE的升级版,其主要功能是: 完成从Pytorch/TensorFlow/Keras/Onnx等神经网络框架到高通计算平台的模型转换; 完成模型的低比特量化(int8),使其能够运行在高…

干货分享|分享一款实用的网盘图标删除器 Drive Icon Manager v2.2

问题:在Windows平台“此电脑”及“资源管理器侧边栏”中会出现各种第三方图标,如百度网盘、WPS网盘、迅雷下载。 Drive Icon Manager 下载方法 1.打开下面网址--选择最新版本进行下载GitHub - Return-Log/Drive-Icon-Manager: 可以轻松删除‘此电脑’及‘…