MySQL 用户授权管理及白名单
1.创建用户
在 MySQL 中,你可以通过以下步骤创建用户并设置白名单:
-
使用管理员账号连接到 MySQL 服务器。
-
创建新用户:
CREATE USER 'username'@'hostname' IDENTIFIED BY 'password';其中,
'username'是你要创建的用户名;'hostname'是允许访问 MySQL 的主机名或 IP 地址;'password'是该用户的密码。你可以使用PASSWORD('password')函数对密码进行加密。
-
授予用户适当的权限,并设置白名单。下面是一个示例,赋予新用户对特定数据库的读取和写入权限,并限制他们只能从特定主机访问:
GRANT SELECT, INSERT, UPDATE ON database_name.* TO 'username'@'hostname'; FLUSH PRIVILEGES;其中,
database_name是你要授权给用户访问的数据库名称;'username'@'hostname'是之前创建的用户名和主机名;SELECT, INSERT, UPDATE是你希望授予用户的操作权限。
-
如果你希望用户能够访问任何数据库,例如
*.*,则可以使用以下命令授予用户全局权限:GRANT ALL PRIVILEGES ON *.* TO 'username'@'hostname'; FLUSH PRIVILEGES; -
验证用户已成功创建并具有所需的权限。
请注意,如果你想使用 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.数据库授权
如果你只想授权用户对特定的 db01 和 db02 数据库具有全部权限,而不是 *.*(即所有的数据库和表),你可以使用以下 SQL 命令:
GRANT ALL PRIVILEGES ON db01.* TO 'username'@'hostname';
GRANT ALL PRIVILEGES ON db02.* TO 'username'@'hostname';
这两条命令分别将 'username'@'hostname' 的全部权限授予了 db01 和 db02 两个数据库。使用上述命令后,该用户将能够对这两个数据库执行任何操作。
请注意,你仍然需要替换 'username' 为实际的用户名,并将 'hostname' 替换为允许访问 MySQL 的主机名或 IP 地址。
此外,如果你只想授权用户进行特定的操作,比如只授予读取权限和写入权限,可以相应地修改授权命令中的权限列表。例如:
GRANT SELECT, INSERT ON db01.* TO 'username'@'hostname';
GRANT SELECT, INSERT ON db02.* TO 'username'@'hostname';
这样,用户将只具有对 db01 和 db02 数据库的选择查询和插入数据的权限。
4.修改数据库的授权
要将用户的数据库访问权限从 db01 修改为 db02,可以使用以下 SQL 命令:
REVOKE ALL PRIVILEGES ON db01.* FROM 'username'@'hostname';
GRANT ALL PRIVILEGES ON db02.* TO 'username'@'hostname';
这两个命令分别执行了两个步骤:
-
REVOKE ALL PRIVILEGES:从'username'@'hostname'用户回收对db01数据库的所有权限。这将取消用户对db01的访问权限。 -
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 ) 页面使用࿰…...
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年推出的深度思考栏目,通过邀请内部专家,针对智能汽车行业发展、技术趋势等输出个性化的观点。每期一位大师,每位一个话题,本期由我们怿星的CTO虞胜伟,进行分享。…...
数学建模--二次规划型的求解的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 用于配置,部署,和管理被控节点的剧本。通过 playbook 的详细描述,执行其中的一系列 tasks ,可以让远端主机达到预期的状态。pl…...
服务注册与服务发现
服务注册与服务发现 Eureka的架构 Eureka客户端:使用了EnableEurekaClient注解的应用服务,如订单服务等,甚至Eureka本身也是一个客户端 Eureka服务端:使用了EnableEurekaServer注解的应用服务,该服务提供了注册表以及…...
脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)
一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...
UE5 学习系列(三)创建和移动物体
这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...
MySQL 8.0 OCP 英文题库解析(十三)
Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...
laravel8+vue3.0+element-plus搭建方法
创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...
从面试角度回答Android中ContentProvider启动原理
Android中ContentProvider原理的面试角度解析,分为已启动和未启动两种场景: 一、ContentProvider已启动的情况 1. 核心流程 触发条件:当其他组件(如Activity、Service)通过ContentR…...
LeetCode 0386.字典序排数:细心总结条件
【LetMeFly】386.字典序排数:细心总结条件 力扣题目链接:https://leetcode.cn/problems/lexicographical-numbers/ 给你一个整数 n ,按字典序返回范围 [1, n] 内所有整数。 你必须设计一个时间复杂度为 O(n) 且使用 O(1) 额外空间的算法。…...
联邦学习带宽资源分配
带宽资源分配是指在网络中如何合理分配有限的带宽资源,以满足各个通信任务和用户的需求,尤其是在多用户共享带宽的情况下,如何确保各个设备或用户的通信需求得到高效且公平的满足。带宽是网络中的一个重要资源,通常指的是单位时间…...
SE(Secure Element)加密芯片与MCU协同工作的典型流程
以下是SE(Secure Element)加密芯片与MCU协同工作的典型流程,综合安全认证、数据保护及防篡改机制: 一、基础认证流程(参数保护方案) 密钥预置 SE芯片与MCU分别预置相同的3DES密钥(Key1、Key2…...
第6章:Neo4j数据导入与导出
在实际应用中,数据的导入与导出是使用Neo4j的重要环节。无论是初始数据加载、系统迁移还是数据备份,都需要高效可靠的数据传输机制。本章将详细介绍Neo4j中的各种数据导入与导出方法,帮助读者掌握不同场景下的最佳实践。 6.1 数据导入策略 …...
