Mysql安全之权限用户管理参考手册

news2024/9/26 3:32:45

一、背景

日常Mysql维护过程中,基于安全要求和规定,需要对Mysql进行分权,接入金库、账户密码满足16位复杂度,对特定表授权,只读用户,最小化权限等处理;本文简要梳理下常用命令操作,以供有需者参考操作。

在这里插入图片描述

更多参看:MySQL用户管理;

二、安全权限配置

2.1、创建用户

CREATE USER 'username'@'host' IDENTIFIED BY 'password';
#创建本地主机登录的用户
CREATE USER 'admin'@'localhost' IDENTIFIED BY '123456';
#创建指定主机登录的用户
CREATE USER 'monitor'@'192.168.10.3' IDENTIFIED BY 'Monitor123';
# 创建所有远程主机都可以登录的用户
CREATE USER 'admin'@'%' IDENTIFIED BY '123456';
#查看默认用户
SELECT user,host,account_locked FROM mysql.user;
#修改用户信息
RENAME USER user_01@localhost to user_01@'127.0.0.1';

#删除角色monitor
drop role 'monitor'@'localhost';
#删除用户账号user_01、user_02
drop USER user_01@localhost,user_02@localhost;
#查看MySQL下所有用户账号列表
USE mysql;
SELECT * FROM USER;
#修改密码
set password for username @localhost = password(newpwd); //新密码必须使用 PASSWORD() 函数来加密,如果不使用 PASSWORD() 加密,也会执行成功,但是用户会无法登录
set password FOR user_01@localhost ='123456';
update mysql.user set authentication_string=password('新密码') where user='用户名' and Host ='localhost';
#如果是普通用户修改密码,可省略 FOR 子句来更改自己的密码
SET PASSWORD = PASSWORD('newpwd');
flush privileges;
#root密码
mysqladmin -u username -h hostname -p password "newpwd"
UPDATE mysql.user set authentication_string = PASSWORD ("rootpwd) WHERE User = "root" and Host="localhost";
#或
SET PASSWORD = PASSWORD ("rootpwd");
FLUSH PRIVILEGES;


#创建本地角色admin
CREATE role 'admin'@'localhost';
#授予角色admin查询slot_info表的权限。
GRANT SELECT ON TABLE spms.slot_info TO 'admin'@'localhost';
#授予用户账号user_01角色admin的权限。
GRANT 'admin'@'localhost' TO user_01@'localhost';
SET GLOBAL activate_all_roles_on_login = ON;
#撤消用户账号user_02角色admin的权限。
revoke ALL PRIVILEGES ,GRANT OPTION FROM 'admin'@'localhost';
#删除角色student。
drop role 'admin'@'localhost';

注意:当忘记密码时,我们常在my.cnf中配置启用skip-grant-tables,使服务器不使用/绕过权限系统,给每个mysql用户完全访问所有数据库的权力。通过执行 mysqladmin flush-privileges或 mysqladmin reload或flush privileges语句,可以让一个正在运行的服务器再次开始使用授权表。

2.2、授权

grant all privileges on *.* to 'admin'@'%' identified by 'Admindb_123456';
#授予用户对admin数据库的读写权限
GRANT SELECT,INSERT ON admin.* TO 'localUser'@'%';
#授予用户对所有数据库数据表的所有权限
GRANT ALL ON *.* TO 'localUser'@'%';
#授予更新(update)权限
GRANT UPDATE ON TABLE spms.* TO user_01@localhost;
#授予用户账号admin修改表结构的权限
GRANT ALTER ON TABLE spms.slot TO user_01@localhost;
#授予用户账号user_01调用cn_proc存储过程的权限
GRANT EXECUTE on PROCEDURE spms.slot TO user_01@localhost;
#授予用户账号user_01在spms数据库上创建表、删除表、查询数据、插入数据的权限
GRANT CREATE,SELECT,INSERT,DROP ON spms.* TO user_01@localhost;
#授予全部权限
grant all privileges on spms.* to 'admin'@'%' identified by 'Admindb_123456';

#撤消用户账号user_01在spms数据库上创建表、删除表、查询数据、插入数据的权限
revoke CREATE,SELECT,INSERT,drop on spms.* to 'admin'@'%' identified by 'Admindb_123456';
#撤消用户账号user_01所有权限
REVOKE ALL PRIVILEGES,GRANT OPTION FROM  user_01@localhost;
#查看权限
SHOW GRANTS FOR 'username'@'hostname';

2.3、中转

#创建新表slot_mir,与表slot_info完全相同,作为后者的副本进行中转操作
CREATE TABLE spms.slot_mir SELECT * FROM spms.slot_info;
#创建存储过程slot_proc,统计slot_info表中的行数。
DELIMITER@@
CREATE PROCEDURE  spms.slot_proc()
BEGIN
DECLARE n INT;
SELECT COUNT(*) INTO n FROM spms.slot_info;
SELECT n;
END@@

2.4、其他

1)mysql启用尽量使用mysql用户,且mysql用户无本地登录权限,当使用mysql用户启动数据库时,可以防止任何具有file权限的用户能够用root创建文件。而如果使用root用户启动数据库,则任何具有file权限的用户都可以读写root用户的文件。这样会做系统造成严重的安全隐患。
2)注意防止DNS欺骗:创建mysql用户时,user权限表的host可以指定域名或者ip地址, 但是当使用域名时,就可能带来如下安全隐患: 如域名对应的ip址址被恶意修改,则数据库就会被恶意的ip地址进行访问,导致安全隐患。
3)my.cnf配置文件进行严格的权限控制(改成mysql属主,设置权限为600)
4)不要给全部用户all privileges权限,只授予账号必须的权限;
5)除root外,任何用户不应有mysql库user表的写权限(update,insert,delete);
6)除root外,不要把file, process,super权限授予管理员以处的账号;其中,file权限主要作用是:(1)将数据库的信息通过select … into outfile… 写到服务器上有写入权限的目录下。(2)可以将有读权限的文本文件通过load data infile… 命令写入数据库表;process 权限能被用来执行“show processlist” 命令,查看当前所有用户执行查询的明文文本。super权限能执行kill命令,终掉其它用户进程(show processlist的id进程值)。
7)drop table 命令并不收回以前的相关访问授权,导致重新创建同名的表时,以前其它用户对此表的权限会自动赋予,进而产生权限外流。因此在删除表时,要同时取消其它用户在此表的相应权限。
8)配置my.cnf启用ssl,配置前需要先运行mysql_ssl_rsa_setup生成证书,验证执行show global variables like 'have_%ssl';
9)为每个用户加上访问ip限制:创建用户时,指定user表host字段的ip或者hostname, 只有符合授权的ip或者hostname才可以进行数据库访问。
10)不需要从本地文件中Load数据到数据库中,就使用“–local-infile=0”禁用掉可以从客户端机器上Load文件到数据库中;
在这里插入图片描述

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

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

相关文章

vue2.x中$attrs的使用

最近笔者在做大屏项目的时候,由于组件数据传递,一层传递一层,使用vuex或者pinia又显得过于笨重。故而想起了那个传说中的v-bind"$attrs"以及v-on"$listeners",下面就来聊下使用: 上图组件之间的关…

2022年度盘点|FinClip 扩展SDK推荐

2022年,FinClip 团队进行了24个产品迭代,为了丰富FinClip 的平台能力,除了核心SDK之外,我们还为开发者们提供了扩展SDK,扩展SDK是一个依赖核心SDK的库,里面提供了核心SDK中所没有的各种小程序API。 官方希…

[从零开始]用python制作识图翻译器·四

具体实现 整个工程文件已经上传到我的代码仓库。 正式开始 项目结构 数据存储 因为本系统为自用而非商用,并且偏向功能性,所以直接用一个config.json文件保存所有的用户数据,就不用加密了。 原型设计 如图,本系统一共包含两个用…

mp4是什么格式?如何录制mp4格式的视频?一招解决

相信不少的小伙伴都听说过mp4格式,或者在日常的学习生活中就接触过不少mp4格式的文件。但也有不少的小伙伴还不是很了解mp4。mp4是什么格式?我们又该如何录制mp4格式的视频呢?今天小编教大家一招,轻松解决这个问题。 一、mp4是什么…

python3.11安装, 解决pip is configured with locations that require TLS/SSL问题

系统:centos7.4(虚拟机)python版本:本机自带的2.7.5,以及参考python安装的python3.11pip版本:本机自带的8.1.2,参考pip安装&升级升级到了20.3.4,pip3版本为22.3.1openssl版本&am…

【新年快乐】禁止燃放烟花爆竹那就用Python画场烟花秀吧

目录 前言 Python界面设计之Tkinter 简单创建一个界面 在界面上创建画布 导入图片到界面中 其他一些重要函数 用Python画一场烟花秀 烟花的粒子类 烟花秀的实现 完整程序 前言 新年即将来临,在这个举国欢庆的日子里,怎么能少的了灿烂又热…

Spring AOP统一功能处理(切面、切点、连接点、通知)

目录 一、 AOP的一些前置知识 1.1什么是Aop 1.2 AOP的作用 1.3AOP基础组成 二、SpringAOP的实现 2.1添加SpringAOP框架支持 2.2定义切面(Aspect) 2.3定义切点(Pointcut) 2.4定义通知(Advice) 三、实例展示(计时器) 代码实现 一、 AOP的一些前…

常用损失函数-交叉熵损失函数、MAE、MSE、smoothL1

目录标题常见的损失函数1、分类任务1.1 多分类任务1.2 二分类任务2、 回归任务2.1 MAE损失2.2 MSE损失2.3 smooth L1损失总结常见的损失函数 损失函数:衡量模型参数的质量的函数,衡量方式是比较网络输出和真实输出的差异。ybar与y 之间的差异 损失函数、…

Jtag_To_AXI的简单使用

文章目录基本操作其他基本操作 搭建的bd文件如下所示, 对tcl命令进行封装后,测试结果如下, 其他 网上看到JTAG to AXI Master的API函数读写操作这篇文章,试着复现一下,没成功,VS工程下的log文件显示打…

量子应用与未来市场:浅谈一下未来的发展方向

量子通信和量子网络 量子信息科学领域探索的是如何在量子系统中国将信息编码,包括量子力学的相关统计、存在的局限性和独特的可解释性,量子信息科学领域是量子计算、量子通信、量子传感的基础。量子通信的研发重点是在对信息进行量子编码之后&#xff0…

Long和Integer相互转换

目录一、int和long互相转换(一)long转化为int(1)类型强制转换(2)利用BigDecimal强制转换(二)int转化为long(1)类型强制转换(2)利用Big…

【go语言http2.0client源码分析】

go语言之http2.0client源码分析client.GetNewRequestdo requesthttp2.Transport.RoundTripGetClientConnnewClientConnReadFrameprocessHeaderswrite request上一篇分析了http2.0的实现之后,这里分析一下client的实现。 package mainimport ("crypto/tls""cryp…

第二层:对象的初始化和清理

文章目录前情回顾对象特性——对象的初始化和清理构造函数和析构函数什么是构造函数和析构函数构造函数构造函数的语法构造函数的分类按照参数分类按照类型分类拷贝构造函数拷贝函数的调用时机深拷贝和浅拷贝构造函数的调用方法括号法显示法隐式转换法构造函数规则析构函数析构…

DM8:达梦数据库DEM--dmagent监控服务器代理部署(详细步骤)

DM8:达梦数据库DEM部署dmagent代理环境(详细步骤)1 dmagent代理下载部署1.1通过web DEM下载代理包1.2 从数据库服务器目录直接拷贝dmagent2 部署JDK环境2.1 使用数据库自带的JDK包2.2 配置服务器JDK环境变量3 配置agent.ini文件3.1 103 节点 &#xff0c…

C语言——运算符与表达式

一、赋值运算符 运算符描述实例将右边操作数的值赋给左边操作数AB,即将B的值赋给A加法赋值运算符,将右边操作数加上左边操作数的结果赋值给左边操作数B A 等价于 B B A-减法赋值运算符,将左边操作数减去右边操作数的结果赋值给左边操作数B - A 等价于…

擎创动态 | 酸了酸了,这年会也忒燃了吧

前言:受疫情影响的这一年里,擎创科技逆流勇上,汇聚点点星火,点亮新的征程。擎创的服务随之正式遍及全国,北起重工业基地的东三省,南至改革开放最早的粤港澳大湾区,东起经济中心的大本营上海&…

数据开发面试问题记录

因作者近期正在投递数据开发岗位,所以会在此记录一些面试过程中的问题,持续更新,直到入职新公司为止 1. 数仓建模的三范式理论 所谓的范式,就是我们在关系建模的时候所遵从的一些规范,而三范式,指的就是三…

QML工程之初始工程代码分析

接着上一讲&#xff0c;当建立完工程之后&#xff0c;IDE 会呈现如下的界面下面的代码是main.cpp&#xff0c;工程起始运行的代码段&#xff0c;具体的函数说明都在代码段里面进行了标注。#include <QGuiApplication> //主要是ui进程运行头函数&#xff0c;包含事件循环&…

寻找数组的中心下标

Python-寻找数组的中心下标 题目 给你一个整数数组 nums &#xff0c;请计算数组的 中心下标 。 数组 中心下标 是数组的一个下标&#xff0c;其左侧所有元素相加的和等于右侧所有元素相加的和。 如果中心下标位于数组最左端&#xff0c;那么左侧数之和视为 0 &#xff0c;因…

佳讯频传!安全狗多项能力获信通院认可

近期&#xff0c;信通院发布了其主导的《基于云的工作负载保护平台能力要求》标准以及《零信任产业图谱》。 作为国内云原生安全领导厂商&#xff0c;安全狗也凭借自身综合且突出的安全能力获得信通院认可。 厦门服云信息科技有限公司&#xff08;品牌名&#xff1a;安全狗&a…