当前位置: 首页 > news >正文

MySQL 用户授权管理及白名单

1.创建用户

在 MySQL 中,你可以通过以下步骤创建用户并设置白名单:

  1. 使用管理员账号连接到 MySQL 服务器。

  2. 创建新用户:

    CREATE USER 'username'@'hostname' IDENTIFIED BY 'password';
    

    其中,

    • 'username' 是你要创建的用户名;
    • 'hostname' 是允许访问 MySQL 的主机名或 IP 地址;
    • 'password' 是该用户的密码。你可以使用 PASSWORD('password') 函数对密码进行加密。
  3. 授予用户适当的权限,并设置白名单。下面是一个示例,赋予新用户对特定数据库的读取和写入权限,并限制他们只能从特定主机访问:

    GRANT SELECT, INSERT, UPDATE ON database_name.* TO 'username'@'hostname';
    FLUSH PRIVILEGES;
    

    其中,

    • database_name 是你要授权给用户访问的数据库名称;
    • 'username'@'hostname' 是之前创建的用户名和主机名;
    • SELECT, INSERT, UPDATE 是你希望授予用户的操作权限。
  4. 如果你希望用户能够访问任何数据库,例如 *.*,则可以使用以下命令授予用户全局权限:

    GRANT ALL PRIVILEGES ON *.* TO 'username'@'hostname';
    FLUSH PRIVILEGES;
    
  5. 验证用户已成功创建并具有所需的权限。

请注意,如果你想使用 IP 地址来进行白名单设置,需要确保 MySQL 服务器的 bind-address 配置允许从该 IP 地址进行连接。也可以使用 % 符号来表示任何主机。

建议在为用户设置权限时仔细考虑,并只授予必要的权限,以确保数据库的安全性。

2.修改用户

要修改用户的可访问 IP,你可以使用以下 SQL 命令:

RENAME USER 'username'@'old_hostname' TO 'username'@'new_hostname';

其中,

  • 'username' 是要修改的用户名;
  • 'old_hostname' 是原始的主机名或 IP 地址;
  • 'new_hostname' 是新的允许访问 MySQL 的主机名或 IP 地址。

执行以上命令后,用户的主机名或 IP 地址将被更新为新的值,并且用户将只能通过新的地址连接到 MySQL 服务器。

请确保你具有适当的权限以执行此操作。

如果你只想更新用户的主机名而保持其他属性不变,你可以使用 ALTER USER 命令。例如:

ALTER USER 'username'@'old_hostname' IDENTIFIED BY 'password' REPLACE 'username'@'new_hostname';

这个命令将更新 'username'@'old_hostname' 的主机名为 'new_hostname'。在此示例中,我还包括了 IDENTIFIED BY 'password' 来指定用户的密码,你可以根据需要进行修改。

请注意,在修改用户的主机名时,如果旧的主机名和新的主机名之间存在其他权限差异,可能需要额外的步骤来重新授权用户特定数据库的访问权限。

3.数据库授权

如果你只想授权用户对特定的 db01db02 数据库具有全部权限,而不是 *.*(即所有的数据库和表),你可以使用以下 SQL 命令:

GRANT ALL PRIVILEGES ON db01.* TO 'username'@'hostname';
GRANT ALL PRIVILEGES ON db02.* TO 'username'@'hostname';

这两条命令分别将 'username'@'hostname' 的全部权限授予了 db01db02 两个数据库。使用上述命令后,该用户将能够对这两个数据库执行任何操作。

请注意,你仍然需要替换 'username' 为实际的用户名,并将 'hostname' 替换为允许访问 MySQL 的主机名或 IP 地址。

此外,如果你只想授权用户进行特定的操作,比如只授予读取权限和写入权限,可以相应地修改授权命令中的权限列表。例如:

GRANT SELECT, INSERT ON db01.* TO 'username'@'hostname';
GRANT SELECT, INSERT ON db02.* TO 'username'@'hostname';

这样,用户将只具有对 db01db02 数据库的选择查询和插入数据的权限。

4.修改数据库的授权

要将用户的数据库访问权限从 db01 修改为 db02,可以使用以下 SQL 命令:

REVOKE ALL PRIVILEGES ON db01.* FROM 'username'@'hostname';
GRANT ALL PRIVILEGES ON db02.* TO 'username'@'hostname';

这两个命令分别执行了两个步骤:

  1. REVOKE ALL PRIVILEGES:从 'username'@'hostname' 用户回收对 db01 数据库的所有权限。这将取消用户对 db01 的访问权限。

  2. GRANT ALL PRIVILEGES:授予 'username'@'hostname' 用户对 db02 数据库的全部权限。这将赋予用户在 db02 中进行任何操作的权限。

请注意,你需要将 'username' 替换为实际的用户名,'hostname' 替换为允许访问 MySQL 的主机名或 IP 地址。

如果你只想给用户授予特定权限,而不是全部权限,可以相应地调整 GRANT 语句中的权限列表,例如 GRANT SELECT, INSERT, UPDATE ON db02.* TO 'username'@'hostname';

请记住,在修改数据库访问权限时,确保用户具有必要的权限,以避免意外删除或限制用户的访问能力。

5.删除用户

在 MySQL 中,你可以使用以下 SQL 命令删除用户:

DROP USER 'username'@'hostname';

其中,

  • username 是你要删除的用户名;
  • hostname 是与该用户相关联的主机名或 IP 地址。

执行以上命令后,用户将被从 MySQL 用户表中删除,并且失去访问权限,无法再连接到 MySQL 服务器。请确保你具有适当的权限以执行此操作。

如果想删除具有全局权限的用户,可以使用以下命令:

DROP USER 'username';

注意,这会删除所有匹配到指定用户名的记录,而不管主机名是什么。

请小心使用此命令,确保你知道要删除的用户和相关权限,以避免意外删除重要的用户或数据。

相关文章:

MySQL 用户授权管理及白名单

1.创建用户 在 MySQL 中,你可以通过以下步骤创建用户并设置白名单: 使用管理员账号连接到 MySQL 服务器。 创建新用户: CREATE USER usernamehostname IDENTIFIED BY password;其中, username 是你要创建的用户名;ho…...

pc-签字画板vue-esign的使用

使用的是vue-esign组件 npm install vue-esign 首先下载组件在main.js中引入vue-esign,并且挂载 import { createApp } from vue; import App from ./App.vue; const app createApp(App);import vueEsign from vue-esign app.use(vueEsign ) 页面使用&#xff0…...

javaScript:节点操作

目录 前言 常用的节点操作 innerHTML 的两个弊端(补充) createElement(标签名)使用dom方法创建一个元素 父元素.appendChild(子元素) 添加到父元素 注意 指定插入 父元素.insertBefore(要添加的元素,父元素中的指定子元素) 注意&…...

git 忽略已经提交的文件或文件夹 (修改.gitignore文件无效)

场景描述:项目开发到一半,追加了模块,提交的时候未注意将不需要提交的文件或者目录提交到.gitignore,然后提交后发现再修改git配置文件已无法阻拦更新,查阅官方资料: 核心点:.gitignore 之前&a…...

学习左耳听风栏目90天——第十二天 12/90(学习左耳朵耗子的工匠精神,对技术的热爱)【时间管理:同扭曲时间的事儿抗争】

时间管理:同扭曲时间的事儿抗争 要学会说不...

前端如何将后台数组进行等分切割

前端如何切割数组 目标:前端需要做轮播,一屏展示12个,后端返回的数组需要进行切割,将数据以12为一组进行分割 环境:vue3tselement plus 代码如下: function divideArrayIntoEqualParts(array, chunkSiz…...

如何有效防止服务器被攻击?

随着互联网的快速发展,服务器安全问题日益引起人们的关注。近期,全球范围内频繁发生的服务器攻击事件引发了广泛关注。为了保护企业和个人的数据安全,有效防止服务器被攻击已成为迫在眉睫的任务。 首先,及时更新服务器的操作系统和…...

layui表格高度

layui表格的高度设置时使用 height:‘full’ 高度就是表格每个页面的总高度。也可以直接写数值,但是这是定高。 也可以使用 height:“full-数值”,比如 height:full-80 那么就会在表格占据剩余div的时候底部留100px。相当于margin-bottom:10…...

一文1800字从0到1使用Python Flask实战构建Web应用

Python Flask是一个轻量级的Web框架,它简单易用、灵活性高,适用于构建各种规模的Web应用。本文将介绍如何使用Python Flask框架来实战构建一个简单的Web应用,并展示其基本功能和特性。 第一部分:搭建开发环境 在开始之前我们需要…...

【LeetCode-中等题】210. 课程表 II

文章目录 题目方法一:bfs方法二:dfs 题目 这一题是在207题的基础上,要统计拓扑排序的顺序集合,所以只需要在207的基础上加入一个将拓扑排序的节点输出即可(有环无拓扑排序) 【LeetCode-中等题】207. 课程表…...

vue修饰符的用法

Vue修饰符是指在Vue模板中用于改变指令行为的特殊后缀。修饰符以.开头,用于指示指令应该如何绑定或响应事件。Vue修饰符在一些常见的指令中使用,例如v-on和v-model。常见的Vue修饰符包括: .prevent:阻止默认事件的发生。.stop&am…...

汽车3D HMI图形引擎选择

2002年,电影《少数派报告》让观众深入了解未来。 除了情节的核心道德困境之外,大多数人都对它的技术着迷。 我们看到了自动驾驶汽车、个性化广告和用户可以无缝交互的 3D 计算机界面。 令人惊讶的是,虽然故事发生在 2054 年,但许多科幻想象的作品已经成为现实。 对于汽车和…...

stable diffusion实践操作-webUI教程-不是基础-是特例妙用

系列文章目录 stable diffusion实践操作 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 系列文章目录前言一、SD webUI是什么?二、详细教程1. 相关插件安装1.1. 提示词插件安装和使用1.2 tagg标签妙用…...

【Java】网络编程

网络编程 Socket套接字概念分类Java数据报套接字通信模型一次发送和接受UDP数据报提供多个客户端的请求处理及响应 Java流套接字通信模型Socket编程注意事项 UDP数据报套接字编程DatagramSocket API构造方法普通方法 DatagramPacket API构造方法普通方法 InetSocketAddress API…...

van-cascader 异步加载

vant官网 异步加载选项 在使用级联选择时当一次性拿到数据量太大时不仅接口慢而且前端渲染页面也会变慢,用户体验很不好,建议使用异步加载选项, 拿到的接口让后端返回一个是否还有下一级的判断,不然van-cascader判断没有childre…...

Golang单元测试举例

1.第一个例子 cal.go package mainfunc addUpper(n int) int {res : 0for i : 1; i < n; i {res i}return res }func getSub(n1 int, n2 int) int {return n1 - n2 }cal_test.go package main//测试文件名必须是_test.go结尾 //测试函数必须Test开头 import ("fmt…...

汽车以太网协议栈

《大师说》栏目上线啦# 《大师说》栏目是怿星科技2023年推出的深度思考栏目&#xff0c;通过邀请内部专家&#xff0c;针对智能汽车行业发展、技术趋势等输出个性化的观点。每期一位大师&#xff0c;每位一个话题&#xff0c;本期由我们怿星的CTO虞胜伟&#xff0c;进行分享。…...

数学建模--二次规划型的求解的Python实现

目录 1.算法流程简介 2.算法核心代码 3.算法效果展示 1.算法流程简介 #二次规划模型 #二次规划我们需要用到函数:Cvxopt.solvers.qp(P,q,G,h,A,b) #首先解决二次规划问题和解决线性规划问题的流程差不多 """ 求解思路如下: 1.针对给定的代求式,转化成标准式…...

Ansible-palybook学习

目录 一.playbook介绍二.playbook格式1.书写格式2.notify介绍 一.playbook介绍 playbook 是 ansible 用于配置&#xff0c;部署&#xff0c;和管理被控节点的剧本。通过 playbook 的详细描述&#xff0c;执行其中的一系列 tasks &#xff0c;可以让远端主机达到预期的状态。pl…...

服务注册与服务发现

服务注册与服务发现 Eureka的架构 Eureka客户端&#xff1a;使用了EnableEurekaClient注解的应用服务&#xff0c;如订单服务等&#xff0c;甚至Eureka本身也是一个客户端 Eureka服务端&#xff1a;使用了EnableEurekaServer注解的应用服务&#xff0c;该服务提供了注册表以及…...

[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解

突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 ​安全措施依赖问题​ GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

Cesium1.95中高性能加载1500个点

一、基本方式&#xff1a; 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...

苍穹外卖--缓存菜品

1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得&#xff0c;如果用户端访问量比较大&#xff0c;数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据&#xff0c;减少数据库查询操作。 缓存逻辑分析&#xff1a; ①每个分类下的菜品保持一份缓存数据…...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1

每日一言 生活的美好&#xff0c;总是藏在那些你咬牙坚持的日子里。 硬件&#xff1a;OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写&#xff0c;"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...

在Ubuntu中设置开机自动运行(sudo)指令的指南

在Ubuntu系统中&#xff0c;有时需要在系统启动时自动执行某些命令&#xff0c;特别是需要 sudo权限的指令。为了实现这一功能&#xff0c;可以使用多种方法&#xff0c;包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法&#xff0c;并提供…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理&#xff1a;刘治强&#xff0c;浙江大学硕士生&#xff0c;研究方向为知识图谱表示学习&#xff0c;大语言模型 论文链接&#xff1a;http://arxiv.org/abs/2407.16127 发表会议&#xff1a;ISWC 2024 1. 动机 传统的知识图谱补全&#xff08;KGC&#xff09;模型通过…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)

宇树机器人多姿态起立控制强化学习框架论文解析 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架&#xff08;一&#xff09; 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...

【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)

要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况&#xff0c;可以通过以下几种方式模拟或触发&#xff1a; 1. 增加CPU负载 运行大量计算密集型任务&#xff0c;例如&#xff1a; 使用多线程循环执行复杂计算&#xff08;如数学运算、加密解密等&#xff09;。运行图…...

k8s业务程序联调工具-KtConnect

概述 原理 工具作用是建立了一个从本地到集群的单向VPN&#xff0c;根据VPN原理&#xff0c;打通两个内网必然需要借助一个公共中继节点&#xff0c;ktconnect工具巧妙的利用k8s原生的portforward能力&#xff0c;简化了建立连接的过程&#xff0c;apiserver间接起到了中继节…...