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

news2024/11/13 23:28:07

文章目录

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

1.普通用户的引入

在这里插入图片描述

用户

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

mysql> use mysql;
 Database changed
 mysql> 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.coloradmin.cn/o/1964584.html

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

相关文章

Internet Download Manager(IDM)2024最新免费版电脑下载管理器

1. Internet Download Manager&#xff08;IDM&#xff09;是一款流行的下载管理软件&#xff0c;以其高速、稳定的下载性能著称。 2. IDM支持多线程下载&#xff0c;可以显著提高下载速度。 3. 该软件还具备恢复中断下载的功能&#xff0c;对于网络不稳定的用户非常实用。 …

蓝鹏测径仪非标定制订制流程

测径仪通常属于非标定制设备&#xff0c;非标定制意味着这些设备不是按照标准规格批量生产的&#xff0c;而是根据特定的客户需求和应用场景设计和制造的。例如&#xff0c;某些测径仪可能需要特殊的测量范围、精度、传感器或软件来满足特定的工业检测要求。 测径仪非标定制的…

Axure Web端元件库:构建高效互动网页的基石

在快速迭代的互联网时代&#xff0c;Web设计与开发不仅追求视觉上的美感&#xff0c;更注重用户体验的流畅与功能的强大。Axure RP&#xff0c;作为一款专业的原型设计工具&#xff0c;凭借其强大的交互设计能力和丰富的元件库&#xff0c;成为了众多UI/UX设计师、产品经理及前…

箱型图大揭秘!Matplotlib带你玩转数据界的‘变形金刚’

想要一窥数据深海的秘密&#xff1f;Matplotlib箱型图来助阵&#xff01;不是魔术师&#xff0c;却能让数据‘箱’中显真章&#xff0c;异常值无所遁形。笑点低&#xff1f;不&#xff0c;是数据洞察力强&#xff01;跟着这波操作&#xff0c;让数据可视化变得既科学又有趣&…

【手撕数据结构】链表面试题进阶

目录 相交链表环形链表扩展问题 环形链表||原理 随机链表的复制 相交链表 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点&#xff0c;返回 null 。 图示两个链表在节点 c1 开始相交&#xff1a; 思…

Centos7.6升级Nginx到nginx-1.27.0

Centos7.6升级Nginx到nginx-1.27.0 简介 升级过程 常见问题 简介 Nginx 更新到了1.27.0&#xff0c;为了系统的安全性将进行服务升级 升级过程 一、Nginx的卸载 升级前需要先卸载以前安装的版本 1、yum的卸载 > yum remove nginx同时还需要手动删除配置文件和日志文…

sqli-labs靶场——第三关

1、判断注入类型 ?id1和?id2-1的页面不一样 2、判断闭合类型 http://127.0.0.1/sqli-labs/Less-3/?id1)and 11 -- 页面正常 http://127.0.0.1/sqli-labs/Less-3/?id1)and 12 -- 页面变化 3、order by查看有几列 http://127.0.0.1/sqli-labs/Less-3/?id1)order by 4 --页面…

vue3+ts+pinia+vant-项目搭建

1.pnpm介绍 npm和pnpm都是JavaScript的包管理工具&#xff0c;用于自动化安装、配置、更新和卸载npm包依赖。 pnpm节省了大量的磁盘空间并提高了安装速度&#xff1a;使用一个内容寻址的文件存储方式&#xff0c;如果多个项目使用相同的包版本&#xff0c;pnpm会存储单个副本…

LABVIEW2016安装教程完整版安装图文教程、注册下载方法

大家好&#xff0c;今天分享下LABVIEW2016安装步骤&#xff0c;同样的安装前请大家务必退出杀毒软件&#xff0c;安装路径千万不要出现中文或其他特殊符号&#xff0c;否则都会导致安装失败的&#xff0c;跟着教程来安装都会安装成功的&#xff0c;如果你遇到了安装问题&#x…

springboot整合mybatis-plus(数据层Dao/Mapper测试)

第一部分&#xff1a;创建springboot文件 第一步&#xff1a;打开软件&#xff0c;点击file&#xff0c;点击new 然后选择module&#xff0c;在右侧选择springboot 第二步&#xff1a;选择配置和JDK以及java版本 ①选择maven类型 ②选择JDK1.8版本 ③选择java8版本 ④选择j…

破解监控难题,局域网电脑监控软件哪家强?

现在的环境&#xff0c;企业要想茁壮成长&#xff0c;员工的高效工作那可是关键中的关键。但不少老板都发现了一个头疼的问题&#xff0c;员工上班老是偷懒&#xff0c;这可怎么行&#xff1f;今天&#xff0c;就来给大家详细说道说道几款出色的局域网电脑监控软件&#xff0c;…

使用Nginx Proxy Manager配置Halo的反向代理和申请 SSL 证书

本文介绍Nginx Proxy Manager配置Halo的反向代理和申请 SSL 证书&#xff0c;如需要了解Halo 2的安装&#xff0c;参考 如何在Linux云服务器上通过Docker Compose部署安装Halo&#xff0c;搭建个人博客网站&#xff1f;。 文章目录 安装Nginx Proxy ManagerNginx Proxy Manager…

人工智能会越来越闭源——对话东北大学副教授王言治 | Open AGI Forum

作者 | Annie Xu 责编、采访 | Echo Tang 出品丨GOSIM 开源创新汇 在读期间研究方向为并不“火”的模式识别与深度学习&#xff0c;毕业却刚好踩上人工智能计算研究的风口……来自美国东北大学的王言治副教授深耕深度学习与大模型&#xff0c;前瞻性地探索大模型的本地化部署…

服务器并发模型

服务器&#xff1a; 单循环服务器&#xff1a;服务器在同一时刻只能响应一个客户端的请求 并发服务器模型&#xff1a;服务器在同一时刻可以响应多个客户端的请求 UDP:无连接 TCP:有连接 1.多进程 资源空间消耗大 效率低 2.多线程 相…

yolo格式数据集之地面道路病害检测4种数据集已划分好|可以直接使用|yolov5|v6|v7|v8|v9|v10通用

yolo格式数据集之地面道路病害检测4种数据集已划分好|可以直接使用|yolov5|v6|v7|v8|v9|v10通用 本数据为地面道路病害检测检测数据集&#xff0c;数据集数量如下&#xff1a; 总共有:8535张 训练集&#xff1a;5981张 验证集&#xff1a;1768张 测试集&#xff1a;786 类别数量…

机器学习之心一区级 | Matlab实现SMA-Transformer-LSTM多变量回归预测(黏菌算法优化)

机器学习之心一区级 | Matlab实现SMA-Transformer-LSTM多变量回归预测&#xff08;黏菌算法优化&#xff09; 目录 机器学习之心一区级 | Matlab实现SMA-Transformer-LSTM多变量回归预测&#xff08;黏菌算法优化&#xff09;效果一览基本介绍程序设计参考资料 效果一览 基本介…

leetcode 矩阵专题——java实现

73. 矩阵置零 给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 输入&#xff1a;matrix [[1,1,1],[1,0,1],[1,1,1]] 输出&#xff1a;[[1,0,1],[0,0,0],[1,0,1]] 关键在于&#xff1a;一次扫描全表…

Java高级Day18-集合

62.集合 之前保存多个数据元素使用数组&#xff0c;但数组有以下缺点&#xff1a; 长度开始必须指定&#xff0c;指定后不可修改 保存的必须为同一类型的元素 使用数组进行增加/删除元素的代码比较麻烦 集合 可以动态的保存任意多个对象 提供了一系列方便操作对象的方法 …