【MySQL】用户管理连接池原理{数据库权限/连接池/mysql访问逻辑}

文章目录

  • 1.普通用户的引入
    • 用户
    • 创建用户
    • 删除用户
    • 修改用户密码
  • 2.数据库的权限
    • 给用户授权
    • 回收权限
    • 实操过程
  • 3.简略介绍mysql连接池
  • 3.一个用户注册/登录/使用网页版mysql逻辑

1.普通用户的引入

在这里插入图片描述

用户

MySQL中的用户,都存储在系统数据库mysql的user表中

mysql> use mysql;Database changedmysql> select host,user,authentication_string from user;+-----------+---------------+-------------------------------------------+| host      
| user          
| authentication_string                     
|+-----------+---------------+-------------------------------------------+| localhost | root          
| *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B || localhost | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE || localhost | mysql.sys     
| *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |+-----------+---------------+-------------------------------------------+--可以通过desc user初步查看一下表结构

字段解释:

user:用户名
host:表示这个用户可以从哪个主机登陆,如果是localhost,表示只能从本机登陆
authentication_string: 用户密码通过password函数加密后的
*_priv:用户拥有的权限

可以直接向这个表insert/delete 修改用户 。但是这个表字段太多了 我们用mysql提供的接口

创建用户

语法:

create user '用户名'@'登陆主机/ip' identified by '密码'; 

可能实际在设置密码的时候,因为mysql本身的认证等级比较高,一些简单的密码无法设置,会报错:
-- ERROR 1819 (HY000): Your password does not satisfy the current policy requirements-- 解决方案:https://blog.csdn.net/zhanaolu4821/article/details/93622812–查看密码设置相关要求:SHOW VARIABLES LIKE ‘validate_password%’; --关于新增用户这里,需要大家注意,不要轻易添加一个可以从任意地方登陆的user。

删除用户

drop user '用户名'@'主机名'

drop user xxx;==> ERROR 1396 (HY000): Operation DROP USER failed for ‘whb’@‘%’ – <= 直接给个用户名,不能删除,它默认是%,表示所有地方可以登陆的用户

修改用户密码

自己改自己密码set password=password('新的密码');
root用户修改指定用户的密码set password for '用户名'@'主机名'=password('新的密码');

2.数据库的权限

MySQL数据库提供的权限列表:
在这里插入图片描述

给用户授权

刚创建的用户没有任何权限。需要给用户授权。

grant 权限列表 on 库.对象名 to '用户名'@'登陆位置' [identified by '密码']

权限列表,多个权限用逗号分开

grant select on ...
grant select, delete, create on ....
grant all [privileges] on ... -- 表示赋予该用户在该对象上的所有权限

. : 代表本系统中的所有数据库的所有对象(表,视图,存储过程等)
库.* : 表示某个数据库中的所有数据对象(表,视图,存储过程等)
identified by可选。 如果用户存在,赋予权限的同时修改密码,如果该用户不存在,就是创建用户

没有删除权限

mysql> delete from account;
ERROR 1142 (42000): DELETE command denied to user ‘whb’@‘localhost’ for table ‘account’

备注:特定用户现有查看权限

mysql> show grants for 'xxx'@'%';+-----------------------------------------------+| Grants for xxx@%                              
|+-----------------------------------------------+| GRANT USAGE ON *.* TO 'xxx'@'%'               
|| GRANT ALL PRIVILEGES ON `test`.* TO 'xxx'@'%' |+-----------------------------------------------+2 rows in set (0.00 sec)mysql> show grants for 'root'@'%';+-------------------------------------------------------------+| Grants for root@%                                           
|+-------------------------------------------------------------+| GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION |+-------------------------------------------------------------+1 row in set (0.00 sec)

如果发现赋权限后,没有生效,执行如下指令:

flush privileges;

回收权限

语法:

revoke 权限列表 on 库.对象名 from '用户名'@'登陆位置'

实操过程

查看user表

在这里插入图片描述

尝试远端登录

在这里插入图片描述

如何设置能够远程登录/非当前主机登录?

在这里插入图片描述
登陆主机写上远端机器的ip即可 但是 如果你的远端机器没有公网ip 比如你想用你的笔记本访问云服务器上的mysql,这里的ip不能设置为你笔记本的ip,1.笔记本的ip是私有ip,路由转发会失效。2.私网IP动态分配。 所以如果非得想用笔记本访问云服务器mysql,登陆主机可以设置为%:表示任意ip;【同样的,windows要访问云服务器mysql,你的ip需要暴露3306端口 】注意:实际应用中,禁止这么做!实际应用中,必须指明哪一台主机!注意:实际应用中,不能把mysql端口号暴露在公网上!

mysql自动为密码类型的数据加md5摘要 且不会保留在历史指令中(在xshell中上下翻找不到关于包含passwd的指令)

在这里插入图片描述

直接修改表中字段数据

在这里插入图片描述

普通用户只能查看到普通用户创建的数据库,看不到root创建的数据库。

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

在这里插入图片描述

3.简略介绍mysql连接池

mysql客户端要访问musqld,要建立连接,通常,一个请求需要建立连接,该请求过后,该连接断开,下次请求到来,再建立连接,如此反复。有没有高效方案?有!
在mysqld上层,搞一个“软件层”:连接池:含有 mysql对象的线程池:线程池每一个线程都包含一个MySQL对象。连接池:任务队列+线程池+mysql;启动线程池,初始化,创建线程,创建MySQL对象,建立连接,等待任务队列中任务到来。
客户端将sql构建成任务push到连接池的任务队列,连接池拿着sql去请求mysqld,之后检测cb是否被设置,如果有,【可以将查询结果传给cb,客户端继续调用cb处理sql结果。】==>(可能的一个回调场景)
下图:假设是一个网页版mysql。mysql连接池的组件,hicargithub&&gitee可以搜索一下。
在这里插入图片描述

3.一个用户注册/登录/使用网页版mysql逻辑

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uniapp微信小程序本地和真机调试文件图片上传成功但体验版不成功

文章目录 导文是因为要添加服务器域名&#xff01; 导文 uniapp微信小程序本地和真机调试文件图片上传成功但体验版不成功 uniapp微信小程序体验版上传图片不成功 微信小程序本地和真机调试文件图片上传成功但体验版不成功 是因为要添加服务器域名&#xff01; 先看一下 你小程…

解决jenkins配置extendreport不展示样式

下载插件&#xff1a;Groovy 、 HTML Publisher plugin 配置&#xff1a; 1&#xff09;Post Steps &#xff1a; 增加 Execute system Groovy script &#xff0c; 内容&#xff1a; System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "&qu…

C++ | string

前言 本篇博客讲解c中的string类的使用(常用接口) &#x1f493; 个人主页&#xff1a;普通young man-CSDN博客 ⏩ 文章专栏&#xff1a;C_普通young man的博客-CSDN博客 ⏩ 本人giee:普通小青年 (pu-tong-young-man) - Gitee.com 若有问题 评论区见&#x1f4dd; &#x1f389…

Magento2 常用命令以及技巧

1.Magento 命令行工具 Magento2 带有一个命令行工具&#xff0c;在windows下&#xff0c;用管理员权限打开MS-DOS命令提示符&#xff0c;然后cd到Magento根目录&#xff0c;运行下面命令&#xff0c;就可 以看到这个强大的命令行工具的命令清单&#xff1a; php bin/magentoU…

【C++】C++11中R字符串的作用

在 C11 中添加了定义原始字符串的字面量 1.定义和基本使用 定义方式为&#xff1a; R"xxx(原始字符串)xxx"其中 () 两边的字符串可以省略&#xff0c;R只会处理括号中的字符串。 原始字面量 R 可以直接表示字符串的实际含义&#xff0c;而不需要额外对字符串做转义…

半球房屋:高性价比的创新建筑选择—轻空间

在现代建筑领域&#xff0c;半球房屋因其独特的设计和高性价比受到广泛关注。这种建筑形式不仅在外观上引人注目&#xff0c;更在功能和经济效益上表现出色。以下将介绍半球房屋的主要优势&#xff0c;特别是其在成本和效益方面的突出表现。 降低建造成本&#xff0c;节约资源 …

资金管理平台 -SAP创建凭证测试程序及增强!

文章目录 主要程序创建程序程序 代码解析变量定义抬头和项目初始值表头赋值调用BAPI其他的子例程 核心内表增强部分LFACIF5D程序FI_DOCUMENT_CHECK完整程序 BADI增强 主要程序 创建程序 程序 &---------------------------------------------------------------------* *…

Matplotlib面积图绘制秘籍:让你的数据‘膨胀’起来,但不吹泡泡哦!

1. 引言 嘿&#xff0c;数据迷们&#xff01;想不想让你的数据‘活’起来&#xff0c;跳一曲色彩斑斓的面积舞&#xff1f;Matplotlib面积图&#xff0c;不只是数字的堆砌&#xff0c;它是故事的讲述者&#xff0c;让复杂数据变得一目了然&#xff0c;还带点小幽默。快来一探究…

鸿蒙应用框架开发【首选项】 本地数据与文件

首选项 简介 本示例使用ohos.data.preferences接口&#xff0c;展示了使用首选项持久化存储数据的功能。 效果预览 使用说明 1.点击顶部titleBar的右侧切换按钮&#xff0c;弹出主题菜单&#xff0c;选择任意主题则切换相应的主题界面&#xff1b; 2.退出应用再重新进入&a…

C++客户端Qt开发——界面优化(美化登录界面)

美化登录界面 在.ui中拖入一个QFream&#xff0c;顶层窗口的QWidget无法设置背景图片&#xff0c;套上一层QFrame将背景图片设置到QFrame上即可 用布局管理器管理元素&#xff1a;用户名LineEdit&#xff0c;密码LineEdit&#xff0c;记住密码ComboBox&#xff0c;登录Button…

Windows本地构建镜像推送远程仓库

下载 Docker Desktop https://smartidedl.blob.core.chinacloudapi.cn/docker/20210926/Docker-win.exe 使用本地docker构建镜像和推送至远程仓库&#xff08;harbor&#xff09; 1、开启docker的2375端口 2、配置远程仓库push镜像可以通过http harbor.soujer.com:5000ps&am…

【C语言】数据类型全解析:编程效率提升的秘诀

目录 C语言数据类型详解1. 基本数据类型1.1 整型示例代码输出结果 1.2 浮点型示例代码输出结果 1.3 字符型示例代码输出结果 2. 派生数据类型2.1 数组示例代码输出结果 2.2 指针示例代码输出结果 2.3 结构体示例代码输出结果 2.4 共用体示例代码输出结果 3. 类型限定符3.1 cons…

为什么Word中正文总会变成标题?

问题 选中文字之后点击正文&#xff0c;格式总是会自动变成标题&#xff0c;然后出现在目录中&#xff0c;改不掉。 方法 是因为段落样式的大纲级别设置了标题级别 选中识别成标题的正文&#xff0c;右键选择段落&#xff0c;把大纲级别设置成正文就好。

微信小程序云开发订单微信支付与小票和标签打印的完整高效流程

一个字“全”&#xff01;&#xff01;&#xff01; 前言一、流程设定1、如何开通云支付流程2、以订单下单为例的支付流程2.1 业务场景介绍2.2 业务场景流程图 二、代码与代码文件组成1、页面JS2、云函数payPre3、支付回调函数pay_cb3.1 准备条件3.2 必要认知3.3 pay_cb 完整函…

Llama 4训练已开启!Meta科学家最新采访,揭秘Llama 3.1是如何炼成的

Llama 3.1的诞生标志着人工智能领域的一个重要里程碑&#xff0c;它不仅是Meta在大型语言模型&#xff08;LLM&#xff09;研发上的一次重大突破&#xff0c;也代表了开源AI模型在技术进步和应用潜力上的新高度。以下是对Llama 3.1的炼成过程、观点阐述以及未来发展趋势的分析。…

莫斯科的社会生态环境之一瞥

题记 社会生态&#xff0c;它是指人类随着利用科技对环境的作用所呈现出的人和人的关系&#xff0c;人和人群的关系&#xff0c;人群和环境的关系 。而生态文明的理念&#xff0c;提倡的不止是尊重自然、顺应自然、保护自然&#xff0c;也包含注重规律的和谐性、可持续性、稳定…

如何使用CANoe自带的TCP/IP Stack验证TCP的零窗口探测机制

如果想利用CANoe自带的TCP/IP协议栈验证TCP的零窗口探测机制,就必须添加一个网络节点并配置独立的CANoe TCP/IP协议栈,作为验证对象。而与它进行TCP通信的对端也是一个网络节点,但不要配置TCP/IP协议栈,而是使用CAPL代码在底层组装TCP报文模拟TCP通信过程。这样可以尽量减少…

2024年最强网络安全学习路线,详细到直接上清华的教材!

关键词&#xff1a;网络安全入门、渗透测试学习、零基础学安全、网络安全学习路线 首先咱们聊聊&#xff0c;学习网络安全方向通常会有哪些问题前排提示&#xff1a;文末有CSDN官方认证Python入门资料包 &#xff01; 1、打基础时间太长 学基础花费很长时间&#xff0c;光语…

医院体检信息管理系统,C#体检系统源码,健康体检系统PEIS

体检服务全流程 检前 检前注意事项提醒-体检预约-套餐选择-体检签到-费用缴纳 检中 科室队列提醒-增项检中支付 检后 报告查询-体检百科-报告解读-问卷调查 体检管理系统模块介绍 一、登记管理模块 登记体检者基本信息&#xff0c;包括唯一的体检编号&#xff0c;姓名、…