MySQL数据库验证权限有3个维度:我是谁、从哪里来、到那里去
哲学家探究人生的终极命题
能不能连接:
在MySQL数据库中验证用户,需要检查3项值:用户名、用户密码和来源主机。分别对应mysql库中的user表的user、password和host三列
能不能执行操作:
连接到数据库之后,能不能执行操作,比如说建库、建表、改表、查询或修改数据等,除了mysql.user外,还有mysql.db,mysql.tables_priv,mysql.columns_priv,mysql.proc_priv
权限变更何时生效:
如果是通过GRANT、REVOKE、SET PASSWORD、RENAME USER等MySQL提供的命令执行修改,那么权限将马上生效
如果是手动修改字典表方式(INSERT、UPDATE、DELETE)达到变更用户权限的目的,要重启MySQL服务才能生效
创建用户:
MySQL对用户名和密码是大小写敏感的
(system@localhost) [mysql]> create user jss;
(system@localhost) [mysql]> select user,host,password from mysql.user where user='hugc';
如果user字典表中的host列值为空或%,均代表任意主机
在MySQL数据库中,用户和主机(‘user’@’host’)组成一个唯一账户
(system@localhost) [mysql]> create user hugc@’192.168.1.201’ identified by ‘hugc’;
(system@localhost) [mysql]> create user hugc@’192.168.1.%’ identified by ‘hugc’;
修改用户密码:
(hugc@localhost) [(none)]> set password for jss=password('hugc');
将用户密码设置为过期:
(system@localhost) [mysql]> alter user hugc password expire;
GRANT方式创建用户:
(system@localhost) [mysql]> grant select on test.* to hugc_test@’192.168.1.201’ identified by ‘hugc’;
(system@localhost) [mysql]> select user,host,password from mysql.user;
修改数据字典方式创建用户:
(system@localhost) [mysql]> insert into mysql.user (host,user,password) values (‘192.168.1.201’,’test_test’,password(‘123456’));
(system@localhost) [mysql]> update mysql.user set password=password(‘1234567’) where user=’test_test’;
授予权限:
priv_type
object_type
priv_level
ssl_option
with_option
(system@localhost) [mysql]> grant select on mysql.user to hugc;
查看用户权限:
(system@localhost) [mysql]> show grants for hugc;
收回用户权限:
(system@localhost) [mysql]> revoke select on mysql.user from hugc;
MySQL数据库中的权限,操作时授予和收回是的权限级别(priv_level)必须对应,否则无法成功回收
(system@localhost) [mysql]> show grants for hugc;
收回用户所有权限,不管授予用户的是什么权限级别,什么对象的什么权限,直接将用户恢复至裸身(USAGE)状态
(system@localhost) [mysql]> revoke all,grant option from hugc;
(system@localhost) [mysql]> show grants for hugc;
USAGE权限意指没有权限(no privileges),这个权限用户一经创建就会拥有,并且无法通过REVOKE语句收回
删除用户:
(system@localhost) [mysql]> drop user hugc;
MySQL数据库中的对象保存并不是依赖于用户,而是依赖于库(database),用户被删除没有任何关系,对象仍在,好好的保存在存储它的数据库中
权限级别:
MySQL数据库权限从大的粒度可以分为5类:全局、数据库、表、列、程序。可以精确的为某个用户分配从某台机器连接进来访问某个数据库下某个表的某个列的某部分记录权限。
全局权限:
与全局权限相关的权限信息记在mysql.user表中
(system@localhost) [mysql]> grant create on *.* to hugc;
授予了在任何库下创建任何对象的权限,没有select权限,没有update权限,没有delete权限
(system@localhost) [mysql]> select * from mysql.user where user=’ hugc’;
数据库级别权限:
主要用于控制账户(‘user’@’host’)操作某个数据库的权限,数据库级别的权限信息记录在mysql.db表中
(system@localhost) [mysql]> grant create on hugcdb.* to hugc;
(system@localhost) [mysql]> select * from mysql.db where user=’ hugc’;
进行验证
(jss@localhost) [mysql]>show databases;
并不存在的information_schema库,用户不能对information_schema数据中的对象做授权。这个数据库及库中的对象全是由MySQL自动维护的一系列虚拟对象
表级权限:
表对象的授权信息保存在mysql.tables_priv字典表中
(system@localhost) [mysql]> grant all on hugcdb.users to hugc;
列级权限:
是MySQL权限体系中的最细粒度,保存在mysql.columns_priv,属于权限认证体系中的高精尖武器。通过对表中列的授权,可以实现只允许从某主机来的某用户访问某库的某表的某列。
(system@localhost) [mysql]> grant select (phoneno) on hugcdb.users to hugc;
(system@localhost) [mysql]> select * from mysql.columns_priv;
(system@localhost) [mysql]> select * from mysql.table_priv where user=’hugc’;
tables_priv只是表级粗粒度的记录,columns_priv才是决定列级权限粒度的核心
尽管通过查看表结构,或者使用select语句查询表数据时只能查到被授予权限的列,但是,该用户查询information_schema.tables或其他相关字典表时,看到的表的信息仍然是完整的,比如表的大小、索引大小、平均列长度等,这也是information_schema库比较特殊的另一个体现
程序:
MySQL中的程序(ROUTINE)主要是指procedure和function两类对象,在mysql.procs_priv表中。拥有create routine权限的用户能够创建procedure、function对象。这个权限是用户/库一级权限,而execute、alter routine、grant这3个权限则是对象级,都是针对某个指定的procedure、function做授权
用户与权限设定原则:
最终确定以库为单位创建账户,在达到安全设定目标的前提下,尽可能简化流程,将权限级别设为3级:主要用于应用端的业务
{user}_oper:定义为操作用户,拥有指定库下所有对象的操作权限,授予增加(insert),删除(delete),修改(update),查询(select)记录的权限,主要用于前端应用程序,连接数据库读写数据。
{user}_read:定义为只读用户,拥有指定库下对象的读取权限,授予查询记录的权限,可用于数据查询、SQL调试、数据验证、数据导出等操作,对于做了多谢分离的应用,只读访问也使用本账户。
{user}_mgr:定义为管理账户,拥有多个库下对象操作权限,用于各项目负责人实时操作对象数据。
所有系统维护账户两个原则:
MySQL数据库的管理员账户改名,不允许出现root名称的用户
用户访问域设定为服务器所在IP段
相关推荐
本文将围绕“访问MySQL数据库的权限”这一主题展开讨论,旨在帮助读者理解MySQL数据库权限体系,并掌握如何进行权限配置。 #### 一、MySQL权限体系概述 MySQL提供了多层次的权限管理体系,包括全局权限、数据库级...
总之,这门课程涵盖了MySQL数据库运维的各个方面,从基础的系统规划和安装,到复杂的性能优化和安全控制,再到关键的备份与恢复策略,旨在培养出具备全面MySQL运维能力的专业人士。通过深入学习,学员将能够应对各种...
根据提供的文档信息,本文将对MySQL数据库的关键特性及其在Jsp/Servlet网上拍卖系统中的应用进行深入探讨。MySQL作为一款广泛使用的开源关系型数据库管理系统,因其高性能、稳定性以及丰富的功能特性而受到众多...
MySQL数据库安全体系是一个复杂而重要的主题,涉及到多个层面的安全策略和技术。在讲解这个体系之前,首先需要理解数据库安全的基本概念,包括数据保护、访问控制、审计日志、故障恢复等。 1. **单机安全**:这是...
MySQL数据库基础实例教程是针对初学者的一套系统性学习资源,尤其适合想要了解数据库管理和开发的人群。本教程分为多个章节,涵盖了从基础到进阶的各个关键领域,旨在通过实例教学来帮助学习者深入理解MySQL的核心...
在计算机系统中,安全性问题普遍存在,特别是当大量用户共享数据库中的数据时,安全问题尤其明显。保证数据库安全也成为DBA一项最重要的工作。 ;防止未经授权的数据存取; 防止未经授权的方案对象存取; 控制磁盘...
MySQL数据库简明教程是针对初学者和有一定基础的开发者设计的学习资源,旨在提供全面而精炼的MySQL知识体系。MySQL是一种流行的开源关系型数据库管理系统,广泛应用于网站开发、数据分析和其他业务系统。本教程将...
本文将深入探讨MySQL数据库在这些方面的实践。 首先,数据库实施是数据库生命周期中的一个重要阶段,它发生在概念设计、逻辑设计和物理设计之后。实施阶段主要包括以下任务: 1. **数据载入**:在数据库结构建立后...
MySQL数据库的高可用性是确保业务连续性和数据安全的关键因素。MHA(Master High Availability)是一种用于MySQL集群的高可用性解决方案,它能够在主数据库发生故障时自动将从库提升为主,以最小化服务中断时间。...
MySQL数据库是一种广泛应用于Web开发和企业管理的信息存储系统,以其高效、稳定和易用性而闻名。本报告将探讨MySQL的特点、系统功能以及设计与实施过程。 一、MySQL系统简介 MySQL Server源自Sybase SQL Server,它...
本文档提供了MySQL数据库安全配置的详细信息,涵盖了MySQL数据库的基本概念、目录结构、授权表、权限控制、数据目录和文件的安全性等方面的知识点。 MySQL数据库基本概念 MySQL是一个完全网络化的跨平台关系型...
因此,许多高校都将MySQL数据库课程纳入计算机基础教学体系之中。然而,在实际的教学过程中,学生们往往会遇到各种问题,这些问题不仅影响学习效果,还可能让学生产生畏难情绪。本文旨在通过总结教学经验并结合学生...
在 Linux 系统中安装 MySQL 数据库是一个非常重要的步骤,这需要了解 MySQL 的体系结构、应用优化、常用工具、索引存储引擎、查询缓存优化、视图优化、SQL 步骤、内存管理及优化、主从复制、存储过程和函数、索引...
总的来说,MySQL数据库的安全策略是一个多层面、综合性的体系,涵盖了从用户管理、数据访问控制到密码保护和活动监控的各个方面。实施这些策略有助于构建一个坚固的防御体系,保护敏感信息免受内外部威胁。理解并...
在Linux系统中,MySQL数据库是广泛使用的开源关系型数据库管理系统,尤其在企业级应用中扮演着重要角色。本文将详细讲解在Red Hat Enterprise Linux Server release 5.5环境下安装MySQL 5.1.49-1的过程。 首先,...
本篇文章将围绕MySQL数据库的使用进行详细的介绍,包括MySQL的特点、安装配置过程、基本的SQL操作命令(如查询、创建、删除等),以及权限管理等方面的内容。通过本文的学习,初学者能够快速掌握MySQL数据库的基本...
**MySQL数据库集群+负载均衡(LVS)** 这个主题涵盖了构建一个高可用性、高性能的MySQL集群,并通过负载均衡技术来实现对集群中多个MySQL实例请求的智能分发。这种架构能够显著提高系统的稳定性和响应速度,适用于大...
了解数据管理技术发展的过程,掌握数据库系统的基本概念、体系结构 MySQL的安装和配置 掌握关系数据库SQL语言和使用技术 MySQL的数据类型、运算符、常用函数 Mysql中一种图形化管理工具的使用 MySQL的表类型、字符...
总结来说,MySQL数据库内容安全的管理方法论强调了预防、检测和应对三个层面,通过综合运用技术手段和管理措施,构建全方位的数据库安全保障体系。只有这样,才能在信息化高速发展的时代背景下,保护企业的核心竞争...
《MySQL数据库技术及应用项目教程》是一门专为信息技术及其计算机相关专业设计的课程,旨在让学生深入了解数据库技术,特别是MySQL数据库的使用。课程的核心目标是培养学生掌握MySQL数据库的日常操作、维护、设计与...