MySQL - 第13节 - MySQL用户管理

news2024/11/25 7:11:06

1.MySQL用户管理概念

MySQL用户管理概念:

• 与Linux操作系统类似,MySQL中也有超级用户和普通用户之分。

• 如果一个用户只需要访问MySQL中的某一个数据库,甚至数据库中的某一个表,那么可以为其创建一个普通用户,并为该用户赋予对应的权限,而不让该用户看到数据库中的其他数据,防止该用户对其他数据进行误操作。


2.用户

2.1.用户信息

MySQL当中默认有一个名为mysql的数据库。如下:

查看该数据库中的表,可以看到其中有一个名为user的表。如下:

user表中存储的就是MySQL中用户相关的信息。如下:

部分字段说明:

• user: 表示该用户的用户名。
• host: 表示该用户可以从哪个主机登录,localhost表示只能从本机登录,%表示可以从任意地方登录。
• authentication_string: 表示该用户的密码经过password函数加密后的值。
• xxx_priv: 表示该用户是否拥有对应权限。
在查看用户信息时为了避免刷屏,可以只选择其中的部分字段进行显示。如下:

需要注意的是,MySQL中可以存在同名的用户,只要这些同名用户对应的登录主机不同即可,因为user表中的主键是复合主键,由表中的user列和host列共同承担。如下:

注:所有的用户管理工作,全部都是在这张user表中进行,所有用户管理工作对应的sql,本质其实都是对这个表进行增删查改。但是如果用户手动的对user表进行增删查改并不方便,因此MySQL提供了一些用户管理的sql。

2.2.创建用户

创建用户的SQL如下

CREATE USER '用户名'@'登录主机' IDENTIFIED BY '密码';

比如下面创建一个用户名为frank,并且可以从任意地方登录的用户。如下:

注:这里如果系统提示1290错误,即当前root用户不允许进行新建用户的操作,那么我们使用 flush privileges 命令刷新一下权限即可。

创建用户成功后,该用户的相关信息也就被写入到刚才的user表中了。MySQL内部存储密码不会以明文的方式存储,而是要通过password函数处理加密存储,如下:

这时便可以用新创建的普通用户来连接MySQL服务器了。如下:

此外,由于我们创建的这个用户可以从任意地方登录,因此如果你在Windows下也安装了MySQL,那么就可以在Windows的cmd窗口进行远程登录。如下:

说明一下:

• 创建用户的SQL当中包含用户的密码,因此该SQL不会被历史记录下来,所以不能通过上下键进行追溯。
• MySQL本身的认证级别比较高,因此创建用户时设置的密码不能太简单,否则会出现报错,这时你可以选择将密码设置复杂一些,也可以对密码相关的设置进行调整。
通过show命令查看全局变量,可以看到密码设置相关的要求。如下:

2.3.修改用户密码

用户自己修改自己的密码:

用户可以自己通过调用password函数,将新密码加密后的值设置到自己password当中。如下:

注:用户可以直接使用update函数对user表中的authentication_string密码字段进行修改,如下图所示,但这样修改风险较大,建议使用mysql提供的接口。

超级用户修改任意用户的密码:

超级用户可以通过调用password函数,将新密码加密后的值设置到指定用户的password当中。如下:

2.4.删除用户

删除用户的SQL如下:

DROP USER '用户名'@'登录地址';

比如将刚才创建的用户删除后,该用户在user表中对应的记录也就不存在了。如下:

说明一下:

• 删除用户时如果不指明待用户的登录地址,则默认删除的是登录地址为%的用户。


3.数据库的权限

3.1.MySQL中的权限

MySQL数据库提供的权限如下:

需要注意的是,新创建的用户没有任何权限,因此创建用户后需要给用户授权。 

3.2.给用户授权

给用户授权的SQL如下:

GRANT 权限列表 ON 库名.对象名 TO '用户名'@'登录地址' [IDENTIFIED BY '密码'];

说明一下:

• '用户名'@'登录地址':表示给哪一个用户授权。
• 库名.对象名:表示要授予用户哪个数据库下的哪个对象的权限。
• 权限列表:表示要授予用户何种权限,多个权限之间用逗号隔开。
• IDENTIFIED BY '密码' (可选):如果用户存在,则在授予权限的同时修改该用户的密码,如果用户不存在,则创建该用户。
比如下面使用root用户创建用户frank,并授予用户frank在root用户的test数据库下所有对象的select权限。如下:

授权后通过 show grants for '用户名'@'登陆地址' 命令,可以查看该用户现有的权限。如下: 

说明一下:

• 创建用户后该用户默认会有USAGE权限,该权限只能用于数据库登录,不能执行任何操作。

• *.*表示所有数据库的所有对象,库名.*表示某个数据库的所有对象(表、视图、存储过程等)。

此时该用户查看数据库时,就能查看到test数据库了。如下:

说明一下:

• 创建用户后该用户默认只能看到information_schema数据库,该数据库中保存的是MySQL服务器所维护的所有其他数据库的信息。

进入test数据库后,也能查看其中的所有表。如下:

但该用户目前只能查看表中的信息,而不能对表中的数据进行修改,因为我们只授予了该用户select权限。如下:

下面将test数据库下的所有权限都授予该用户。如下:

这时该用户才可以对表中的数据进行其他操作。如下:

3.3.回收权限

回收权限的SQL如下:

REVOKE 权限列表 ON 库名.对象名 FROM '用户名'@'登录地址';

说明一下:

• 回收权限的语法与授权一样,只不过将to关键字改为了from,并且没有了 IDENTIFIED BY '密码' 字段。

比如下面将frank用户在test数据库下的所有权限回收。如下:

说明一下:

• 回收用户在某一数据库下的权限后,在该用户下一次进入该数据库时才会起作用。

• 如果回收权限时该用户正在使用对应数据库,那么回收权限后该用户仍然拥有对应的权限。

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

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

相关文章

HarmonyOS学习路之开发篇—设备管理(传感器开发)

传感器开发概述 基本概念 HarmonyOS传感器是应用访问底层硬件传感器的一种设备抽象概念。开发者根据传感器提供的Sensor API,可以查询设备上的传感器,订阅传感器的数据,并根据传感器数据定制相应的算法,开发各类应用,…

【海量数据挖掘/数据分析】之 贝叶斯信念网络(贝叶斯信念网络、有向无环图、贝叶斯公式、贝叶斯信念网络计算实例)

【海量数据挖掘/数据分析】之 贝叶斯信念网络(贝叶斯信念网络、有向无环图、贝叶斯公式、贝叶斯信念网络计算实例) 目录 【海量数据挖掘/数据分析】之 贝叶斯信念网络(贝叶斯信念网络、有向无环图、贝叶斯公式、贝叶斯信念网络计算实例&…

仙剑风景图片生成【InsCode Stable Diffusion美图活动一期】

一、 Stable Diffusion 模型在线使用地址:https://inscode.csdn.net/inscode/Stable-Diffusion 二、模型版本及相关配置: Steps: 20, Sampler: Euler a, CFG scale: 7, Seed: 423016627, Size: 512x512, Model hash: 74c61c3a52, Model: GuoFeng3,…

通过摄像头监测交通——远眺智慧交通视频AI分析系统「捷码精品应用展」

随着社会经济的发展和人民生活水平的提高,汽车数量增长迅猛。汽车数量的迅速增加造成交通拥挤严重、交通事故频发,甚至愈演愈烈,惨不忍"堵",严重影响城市交通安全与交通效率,如何保障人民群众安全、有序出行…

06_RBAC项目总结

RBAC项目总结 基于角色访问控制(RBAC:Role Based Access Control) 对于基本的增删改查 1.通过看接口文档要求这个接口使用什么方式发送请求,需要响应的数据的格式是什么 2.若请求的参数由其他对象或者数组组成的,就需要重新定义一个类来进行接收,后端接收的时候…

(动态规划) 673. 最长递增子序列的个数 ——【Leetcode每日一题】

❓ 673. 最长递增子序列的个数 难度:中等 给定一个未排序的整数数组 nums , 返回最长递增子序列的个数 。 注意 这个数列必须是 严格 递增的。 示例 1: 输入: [1,3,5,4,7] 输出: 2 解释: 有两个最长递增子序列,分别是 [1, 3, 4, 7] 和[1,…

Leetcode-每日一题【328.奇偶链表】

题目 给定单链表的头节点 head ,将所有索引为奇数的节点和索引为偶数的节点分别组合在一起,然后返回重新排序的列表。 第一个节点的索引被认为是 奇数 , 第二个节点的索引为 偶数 ,以此类推。 请注意,偶数组和奇数组…

【Matlab】智能优化算法_樽海鞘群算法SSA

【Matlab】智能优化算法_樽海鞘群算法SSA 1.背景介绍2.数学模型2.1 提出的移动樽海鞘链的数学模型2.2 Swarm仿真2.3 单目标Salp Swarm算法(SSA) 3.算法流程图4.文件结构5.伪代码6.详细代码及注释6.1 func_plot.m6.2 Get_Functions_details.m6.3 initiali…

自学网络安全究竟该从何学起?

一、为什么选择网络安全? 这几年随着我国《国家网络空间安全战略》《网络安全法》《网络安全等级保护2.0》等一系列政策/法规/标准的持续落地,网络安全行业地位、薪资随之水涨船高。 未来3-5年,是安全行业的黄金发展期,提前踏入行…

八大数据结构分类

1、数组 数组是可以再内存中连续存储多个元素的结构,在内存中的分配也是连续的,数组中的元素通过数组下标进行访问,数组下标从0开始。例如下面这段代码就是将数组的第一个元素赋值为 1。 int[] data new int[100];data[0] 1;…

大数据存储架构详解:数据仓库、数据集市、数据湖、数据网格、湖仓一体

前言 本文隶属于专栏《大数据理论体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见大数据理论体系 思维导图 数据仓库 数据仓库是一个面向主题的&…

Redis高可用——集群模式

Redis高可用——集群模式 一、Redis 群集模式二、集群的作用1.数据分区2.高可用 三、Redis集群的数据分片四、Redis集群的主从复制模型五、搭建Redis 群集模式1.创建每个redis节点的目录,复制需要的文件2.开启群集功能3.启动redis节点4.启动集群5.测试群集 一、Redi…

Leetcode 数据库刷题记录

https://leetcode-cn.com/problemset/database/ 题目都是leetcode 上的可以点击题目会有相应的链接 每道题后面都应相应的难度等级,如果没时间做的话 可以在leetcode 按出题频率刷题,答案仅供参考 175. 组合两个表 难度简单 SQL架构 表1: Person ---…

K210占用内存设定以及回收内存机制与方法

目录 占用内存设定 原有多行注释一键改为单行注释方法 内存回收:GC模块文档与教程 减少内存占用方法 多行注释测试 结果 单行注释测试 结果 畸变矫正测试 结果 死循环拍照内存测试 结果 占用内存设定 K210一次性将所有代码读取到内存。 K210有6MiB通用内…

SpringBoot 项目 整合Redis

一、java连接单机redis&#x1f349; 1.创建一个普通的maven工程&#x1f95d; 2.引入依赖&#x1f95d; <dependencies><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>3.8.0</version&…

【Docker镜像部署】镜像方式部署登录服务验证码无法刷出问题

背景 auth服务本地部署&#xff0c;验证码正常显示。但是一旦镜像部署则会报错。 Dockerfile文件如下 FROM daocloud.io/library/java:8-jre-alpine MAINTAINER zzjs # 时区问题 RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime RUN echo Asia/Shanghai >/e…

第四章 数组

前言 学习方法 可以多看几遍视频把上课的代码&#xff0c;自己加加注释&#xff0c;在自己写之前&#xff0c;可以画一个流程图照着流程图把代码自己实现一遍 不要怀疑自己&#xff0c;不要遇到困难就觉得自己不行&#xff0c;遇到困难就解决困难&#xff0c;编程初学者都是…

php代码审计8之SSRF

文章目录 1、关注函数2、SSRF支持的协议2.1、http/https&#xff1a;2.2、file&#xff1a;2.3、dict&#xff1a;2.4、gopher&#xff1a;2.5、ftp/ftps&#xff1a;2.6、tftp&#xff1a;2.7、imap/imaps/pop3/smtp/smtps&#xff1a;2.8、telnet&#xff1a; 3、绕过3.1、读…

flask.send_file实现文件下载、文件传输和二进制流传输

文章目录 flask.send_file函数常用参数描述url直接下载文件flask.send_file文件传输本地文件传输二进制流传输 在使用flask框架时&#xff0c;我们有时需要向前端传输文件。或者需要用户访问一个url时直接下载文件。这时可以使用flask.send_file()函数来实现相关的操作。 flask…

HarmonyOS学习路之开发篇—设备管理(控制类小器件)

控制类小器件开发概述 基本概念 控制类小器件指的是设备上的LED灯和振动器。其中&#xff0c;LED灯主要用作指示&#xff08;如充电状态&#xff09;、闪烁功能&#xff08;如三色灯&#xff09;等&#xff1b;振动器主要用于闹钟、开关机振动、来电振动等场景。 运作机制 控…