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

mysql安全管理

数据库管理系统用于管理数据库服务器的各种数据库资源,MYSQL是一个支持多用户的数据库管理系统,实现多用户下,各种数据库资源的安全访问控制,确保数据库资源安全访问成为了数据库管理系统的核心功能。MYSQL安全管理是指允许合法账户访问合法数据库资源,并拒绝非法用户访问非法数据库资源。可以看出,MYSQL安全管理与MYSQL账户管理密不可分。

1.安全管理

假设用户拥有某些权限(update,delete等),MYSQL账户可以分为
MYSQL服务实例级别:可以修改MYSQL服务器上所有数据库所有表的记录
MYSQL数据库级别:可以修改某个数据库所有表的记录
MYSQL表级别:可以修改某个表的记录
另外还有MYSQL字段级别,以及MYSQL存储程序级别的账户。

2.MYSQL身份验证

mysql系统数据库记录了MYSQL的账户信息以及MYSQL账户的访问权限,进而实现了MYSQL账户的身份认证以及权限验证。
有关MYSQL账户的身份认证信息记录在mysql系统数据库中的user系统表中。
有关MYSQL服务实例级别账户的权限验证信息记录在db系统表中。
有关MYSQL表级别账户的权限验证信息记录在tables_priv系统表中。
有关MYSQL字段级别账户的权限验证信息记录在columns_priv系统表中。
有关MYSQL存储程序级别账户的权限验证信息记录在procs_priv系统表中。

3.MYSQL身份认证流程:

(1)在某台主机A上以root身份连接MYSQL服务器,这个过程是root账户的身份认证。
(2)root账户具有至高无上的权限,包括grant权限。root账户在命令提示符窗口A执行grant命令,创建MYSQL账户B,并为该账户绑定相应的资源访问权限。
(3)在某台合法登录主机B上打开命令提示符窗口B,以MYSQL账户B的身份链接MYSQL服务器。这个过程称为MYSQL账户B的身份认证。
(4)MYSQL账户B在命令提示符窗口B上执行MYSQL命令或者SQL语句,这些MYSQL命令或者SQL语句在执行前必须经过权限验证,判断MYSQL账户B是否具有权力执行该MYSQL命令或者语句。权限验证一旦通过,该账户则可以访问相应的数据库资源,否则MYSQL服务实例拒绝MYSQL账户B的资源访问。

4.MYSQL账户与权限表

MYSQL身份认证时,需要提供账户名,密码以及登陆主机IP地址信息。
MYSQL安全管理通过权限表实现MYSQL账户的身份认证以及权限验证,这些权限表存储引擎全部是MYISAM,主键全部为复合主键,字符集全部是UTF8,字符序全部是utf8_bin。
权限表主要包含两类字段:作用域字段和权限类型字段。作用域字段构成了各个权限表的主键,记录了该账户可以访问的数据库资源。权限类型字段定义了MYSQL账户对指定的数据库资源可以进行何种类型的访问。
(1)grant命令
格式:
grant 权限名称[(字段列表)]
[权限名称[(字段列表)]]…
on [(数据库资源类型)] 数据库资源
to MYSQL账户1 [, MYSQL账户2] …
[with grant option]
说明:数据库资源可以是*.*,db_name.*,db_name.table_name以及db_name.routine_name,分别表时MYSQL服务实例,MYSQL数据库,MYSQL数据库表以及MYSQL数据库的存储过程或者函数。
MYSQL账户包括账户名,密码以及登录主机等信息,而with grant option是赋予grant权限
(2)创建MYSQL服务实例级别的账户
grant all privileges on *.* to ‘server_user’@‘%’ identified by ‘password’;
创建账户名为“server_user”,密码为password,‘%’表示任何主机都可以连接,并且*.*表示所有数据库的所有数据库对象,all privileges表示该账户拥有所有权限(grant权限除外)。
(3)创建MYSQL数据库级别的账户
grant all privileges on choose.* to ‘database_user’@‘192.168.1.%’ identified by ‘password’ with grant option;
(4)创建表级别的账户
grant all privileges on table choose.choose to ‘table_user’@‘%’ identified by ‘password’ with grant option;
(5)创建字段级别的账户(假设表choose上的score字段)
grant select(score), insert(score) on table choose.choose to ‘column_user’@‘%’ identified by ‘password’;
(6)创建存储程序级别的账户
账户仅仅拥有choose数据库存储过程get_student_course_proc()与函数to_chinese_fn()的执行权限。
grant execute on procedure choose.get_student_course_proc to ‘%’@‘192.168.1.103’ identified by ‘password’;

5.账户管理

(1)创建账户
create user ‘user1’@‘localhost’ identified by ‘password’;
(2)查看账户信息
show grants for ‘user’@‘%’;
(3)删除账户
drop user ‘table_user’@‘%’;
(4)修改已有账户的信息
使用grant命令操作已有的账户,可以向已有的账户增加权限,修改已有帐户的密码。
使用revoke命令可以撤销已有账户的已有权限:
例如:revoke select on choose.* from ‘admin_user’@‘%’;
(5)已有账户的重命名
rename user old_user to new_user
(6)修改账户密码
set password [for user] = password(‘新密码’);
(7)使用更新语句后,还需要执行“flush privileges”或者重启mysql才能生效。

http://www.xdnf.cn/news/8265.html

相关文章:

  • 【C/C++】虚拟内存空间问题整理_可用于验证掌握情况
  • WebTransport 低延迟通信
  • 解决SQL Server SQL语句性能问题(9)——创建和更新统计对象
  • Spring的事务传播行为
  • PCB设计教程【入门篇】——电路分析基础-电路定理
  • tf 重排 切分 逆排列
  • mysql日志文件binlog分析记录
  • 结构性断裂:中年失业潮与婚姻解体的崩溃逻辑
  • 数学基础知识:三角函数
  • 【打卡】车厢重排
  • java后端-海外登录(谷歌/FaceBook/苹果)
  • 汽配知识(四)不同车型与区域市场的分类差异
  • 率先实现混合搜索:使用 Elasticsearch 和 Semantic Kernel
  • Java IO流完全解析:从基础到高级应用
  • Vue.js教学第十一章:VueRouter实战指南
  • 在 Matter.js 物理引擎中,isSensor 布尔属性的使用
  • MySQL 数据库表结构修改与字段添加
  • C++:关联容器set容器,multiset容器
  • 【Python】开发工具uv
  • KS107BG型超声体模的结构及性能
  • Pinia持久化存储插件, 持久化存储插件安装(超详细教程)
  • 【KWDB 2025 创作者计划】_KWDB时序数据库特性及跨模查询
  • 使用 vip 加入两台 master 节点
  • 【AI模型学习】上/下采样
  • 【SpringBoot实战指南】使用 Spring Cache
  • 5.22 打卡
  • 生存资料的多因素分析,如果满 足等比例风险假定, 采用Cox回归; 如果不满足等比例风险假定,则考虑采用 非等比例Cox回归分析研究预后因素的影响
  • Java版本的VPN(wlcn)
  • 我的世界模组开发——物理学(1)
  • PiliPlus 非常好用的开源软件第三方B站哔哩哔哩 v1.1.3.35