我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL学习笔记(24):权限与安全

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL学习笔记(24):权限与安全

MySQL学习笔记(24):权限与安全

本文更新于2020-05-03,使用MySQL 5.7,操作系统为Deepin 15.4。

目录

  • 权限
  • 安全
    • 操作系统相关的安全问题
    • 数据库相关的安全问题
    • 数据库安全设置选项

权限

权限存取需要用到mysql库中user、db、host、tables_priv、columns_prvi这几个权限表。列分为4个部分:用户列、权限列、安全列、资源控制列。权限列又分为普通权限和管理权限。

表名 user db host 说明
用户列 host host host
用户列 user db db
用户列 password user
权限列 select_priv select_priv select_priv 查询记录
权限列 insert_priv insert_priv insert_priv 插入记录
权限列 update_priv insert_priv insert_priv 更新记录
权限列 delete_priv delete_priv delete_priv 删除记录
权限列 index_priv index_priv index_priv 维护索引
权限列 alter_priv alter_priv alter_priv 修改数据库或表
权限列 create_priv create_priv create_priv 创建数据库或表
权限列 drop_priv drop_priv drop_priv 删除数据库或表
权限列 grant_priv grant_priv grant_priv 授予权限
权限列 create_view_priv create_view_priv create_view_priv 创建视图
权限列 show_view_priv show_view_priv show_view_priv 展示视图
权限列 create_routine_priv create_routine_priv 创建存储过程或函数
权限列 alter_routine_priv alter_routine_priv 修改存储过程或函数
权限列 references_priv references_priv references_priv ?
权限列 reload_priv 重新加载MySQL
权限列 shutdown_priv 关闭MySQL
权限列 process_priv 查看所有线程
权限列 file_priv 导出导入文件
权限列 show_db_priv 展示所有库
权限列 super_priv 超级权限
权限列 create_tmp_table_priv create_tmp_table_priv create_tmp_table_priv 创建临时表
权限列 lock_tables_priv lock_tables_priv lock_tables_priv 锁表
权限列 execute_priv 执行存储过程或函数
权限列 repl_slave_priv 与复制有关
权限列 repl_client_priv 与复制有关
安全列 ssl_type
安全列 ssl_cipher
安全列 x509_issuer
安全列 x509_subject
资源控制列 max_questions
资源控制列 max_updates
资源控制列 max_connections
资源控制列 max_user_connections

权限的存取有以下两个阶段:

  1. 先从user表的host、user和password字段判断是否通过身份验证。
  2. 按照以下权限表的顺序查看是否取得权限:user->db->tables_priv->columns_priv,如果有权限表相应的值为Y,则取得该权限。在这几个权限表中,权限范围依次递减,全局权限覆盖局部权限。

安全

操作系统相关的安全问题

  • 严格控制操作系统账号(通常为mysql)和权限。
  • 尽量避免以root(通常使用mysql)权限运行MySQL。
  • 防止DNS欺骗:创建账号时host可指定域名,但若域名对应的IP地址被恶意修改,则数据库就会被恶意的IP地址访问。

数据库相关的安全问题

  • 删除匿名账号。
  • 给root账号设置密码。
  • 设置安全密码。使用密码有以下几种方式,也需注意安全问题:直接将密码写在命令行中;交互式输入密码;将账号和密码写在配置文件中,如写在/etc/my.cnf的client组中。
  • 只授予账号必需的权限。
  • 除root外,任何账号不应有mysql库user表的存取权限。
  • 不要把FILEPROCESSSUPER权限授予管理员以外的账号。
  • 注意LOAD DATA LOCAL从客户端本地读取文件带来的安全问题。
  • 使用MERGE存储引擎潜藏的安全漏洞:通过MERGE表还可以访问已被回收权限的子表。
  • DROP TABLE并不回收相关权限,导致重新创建同名表时,此前其他用户对此表的权限会自动赋予。
  • 使用SSL。
  • 如果可能,给所有用户加上访问host限制。
  • REVOKE的漏洞:在一个数据库上多次赋予权限,权限会自动合并;但是在多个数据库上多次赋予权限,每个数据库上都会认为是单独的一组权限,必须在此数据库上用REVOKE单独进行权限回收,而REVOKE ALL ON *.*并不会自动完成这个过程。

数据库安全设置选项

  • --old-passwords:该参数只是为了支持4.1版本前的客户端,这将使得新建或修改的密码全部变成旧格式,降低了系统安全性。
  • --safe-user-create:使用户不能用GRANT创建新账号,除非用户有mysql.user表的INSERT权限。
  • --secure-auth:使4.1版本前的客户端无法进行用户认证,即使使用了--old-passwords也不行。
  • --skip-grant-tables:令服务器不使用权限系统。
  • --skip-networking:不允许TCP/IP连接,所有连接必须经命名管道(Named Pipes)、共享内存(Shared Memory)、UNIX套接字(Socket)文件进行。
  • --skip-show-database:使用该选项,只有赋予SHOW DATABASES权限的用户才能执行且显示所有库名;不使用该选项,则所有用户都能执行,但只显示有权限的库名。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL学习笔记(24):权限与安全

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL学习笔记(24):权限与安全

本文更新于2020-05-03,使用MySQL 5.7,操作系统为Deepin 15.4。目录权限安全操作系统相关的安全问题数据库相关的安全问题数据库安全设置选项权限权限存取需要用到mysql库中user、db、host、tables_priv、columns
MySQL学习笔记(24):权限与安全
2015-01-11

MySQL学习笔记(23):SQL安全

本文更新于2019-06-29,使用MySQL 5.7,操作系统为Deepin 15.4。应用可使用PrepareStatement + Bind-Variable来防止SQL注入。已知的非法符号有:()[]--#;="+空格%
MySQL学习笔记(23):SQL安全
2016-09-18

Redis学习笔记(四)--安全

Redis学习笔记(四)--安全 基于Redis6之前版本 一、设置数据库密码 1、配置文件“redis.conf”修改,需重启服务器 在配置文件中“redis.conf”设置"requirepass 123456" 2、通过"config get requi
Redis学习笔记(四)--安全
2017-03-22

MySQL学习笔记(1):安装

本文更新于2020-05-04。目录安装使用apt-get安装使用dpkg安装使用rpm安装卸载MariaDB安装MySQL初始化密码修改密码认证插件服务启动、停止、重启、状态查看Linux下的文件布局默认数据库安装在Windows下可以采用noinstall
MySQL学习笔记(1):安装
2020-09-26

PHP学习笔记:安全性与防御措施

引言:在当今互联网的世界中,安全性是非常重要的,尤其是对于Web应用程序而言。PHP作为一种常用的服务器端脚本语言,安全性一直是开发者必须关注和重视的方面。本文将介绍一些PHP中常见的安全性问题,并提供一些防御措施的示例代码。一、输入验证输
2023-10-21

PHP学习笔记:Web安全与漏洞防范

引言:在Web开发领域,安全一直是一个重要的话题。随着互联网的快速发展,各种网络攻击和漏洞也不断涌现,因此学习和掌握相关的安全知识和防范措施对于开发人员来说十分重要。本文将重点介绍PHP中的Web安全问题和一些常见漏洞的防范方法,并给出具体
2023-10-21

MySQL学习笔记(27):备份与恢复

本文更新于2020-05-03,使用MySQL 5.7,操作系统为Deepin 15.4。目录逻辑备份和恢复物理备份和恢复冷备份和恢复热备份和恢复表数据导入导出MySQL的备份分为逻辑备份和物理备份,物理备份分为冷备份和热备份。恢复分为完全恢复和不完全恢复,不
MySQL学习笔记(27):备份与恢复
2021-04-04

MySQL学习笔记——基础与进阶篇

目录  一、###MySQL登录和退出   二、###MySQL常用命令   三、###MySQL语法规范   四、###基础查询   五、###条件查询   六、###排序查询   七、###常见函数的学习   八、###分组查询   九、###连接查询  
MySQL学习笔记——基础与进阶篇
2017-06-14

[学习笔记] Oracle创建用户、分配权限、设置角色

创建用户create user student --用户名 identified by "123456" --密码 default tablespace USERS --表空间名 temporary tablespace t
[学习笔记] Oracle创建用户、分配权限、设置角色
2015-12-27

学习笔记:信息安全管理基础(下)

      上一篇我们讲了信息安全管理基础的管理分类,各种安全管理的方式我们都仔细地分析过了。这里的下半部分小编就来整理一下剩下的关于信息安全政策和信息安全风险评估与管理的内容。  信息安全政策  我国提高信息安全保障能力和水平,维护国家安全、社会稳定和公共利益,已经制
学习笔记:信息安全管理基础(下)
2024-04-17

学习笔记:信息安全管理基础(上)

      随着信息和信息安全的发展,为了对信息系统加以严格管理和妥善维护,因而推出了信息安全管理这一理念,主要是为了保护信息系统的硬件、软件及相关数据,使之不因为偶然或恶意的侵犯而遭受破坏、更改和泄露:保证信息系统中信息的机密性、完整性和可用性。  信息安全是一个广泛
学习笔记:信息安全管理基础(上)
2024-04-17

PHP学习笔记:搜索引擎与全文检索

引言:搜索引擎和全文检索是现代Web开发中非常重要的功能。无论是电商网站、新闻门户还是博客网站,几乎所有的网站都需要提供快速准确的搜索功能,以便用户能够迅速找到所需要的信息。 在PHP中,我们可以借助一些强大的开源库来实现搜索引擎和全文检索
2023-10-21

编程热搜

目录