【MySQL精通之路】安全(2)-密码安全

密码出现在MySQL中的多个上下文中。

以下部分提供了一些指导原则,使最终用户管理员能够确保这些密码的安全并避免暴露这些密码。

此外,validate_password插件可用于强制执行可接受密码的策略。

请参阅“密码验证组件”。

1.密码安全的最终用户指南

MySQL用户应该使用以下准则来保护密码的安全。

当您运行客户端程序以连接到MySQL服务器时,不建议以将密码暴露给其他用户发现的方式指定密码。

此处列出了运行客户端程序时可以用于指定密码的方法,以及对每种方法的风险评估。

简而言之,最安全的方法是让客户端程序提示输入密码,或者在受适当保护的配置文件中指定密码。

使用mysql_config_editor实用程序,可以将身份验证凭据存储在名为.mylogin.cnf的加密登录路径文件中。

MySQL客户端程序稍后可以读取该文件,以获取连接到MySQL Server的身份验证凭据。

请参阅“mysql_config_editor--mysql配置实用程序”。

【MySQL精通之路】管理和实用程序-MySQL配置实用程序-mysql_config_editor-CSDN博客


在命令行中使用--password=password或-password选项。例如

$> mysql -u francis -pfrank db_name

警告:
这很方便,但不安全。在某些系统上,您的密码对系统状态程序(如ps)可见,其他用户可能会调用这些程序来显示命令行。

MySQL客户端在初始化过程中通常会用零覆盖命令行密码参数。

但是,仍有一个短暂的时间间隔,在此期间该值是可见的。

此外,在一些系统上,这种覆盖策略是无效的,密码对ps仍然可见。(SystemV Unix系统和其他系统可能会遇到这个问题。

如果您的操作环境设置为在终端窗口的标题栏中显示当前命令,则只要该命令正在运行,即使该命令已滚动到窗口内容区域的视图之外,密码也会保持可见。


在没有指定密码值的情况下,在命令行中使用--password或-p选项。在这种情况下,客户端程序以交互方式请求密码:

$> mysql -u francis -p db_name
Enter password: ********

*字符表示您输入密码的位置。

输入密码时不会显示密码。

这样输入密码比在命令行中指定密码更安全,因为其他用户看不到密码。

但是,这种输入密码的方法仅适用于交互式运行的程序。

如果要从非交互运行的脚本中调用客户端,则无法通过键盘输入密码。

在某些系统上,您甚至可能发现脚本的第一行被读取并被(错误地)解释为密码。


将您的密码存储在配置文件中。

例如,在Unix上,您可以在主目录中.my.cnf文件的[client]部分列出您的密码:

[client]
password=password

为了确保密码的安全,除了你自己,任何人都不应该访问该文件。要确保这一点,请将文件访问模式设置为400或600。例如

$> chmod 600 .my.cnf

要从命令行命名包含密码的特定配置文件,请使用--defaults file=file_name选项,其中file_name是文件的完整路径名。例如

$> mysql --defaults-file=/home/francis/mysql-opts

“使用配置文件”更详细地讨论了配置文件。

【MySQL精通之路】MySQL的使用(2)-配置-CSDN博客

在Unix上,mysql客户端将已执行语句的记录写入历史文件

(请参阅“mysql客户端日志记录”)。

默认情况下,此文件名为.mysql_history,并在主目录中创建。

密码可以在CREATE USER和ALTER USER等SQL语句中以纯文本形式编写,因此,如果使用这些语句,它们将记录在历史文件中。

为了确保此文件的安全,请使用限制性访问模式,与前面对.my.cnf文件所述的方式相同。

如果您的命令解释器维护历史记录,则保存命令的任何文件都包含在命令行上输入的MySQL密码。

例如,bash使用~/.bash_history任何此类文件都应具有限制性访问模式。

2.密码安全管理员指南

数据库管理员应使用以下准则来保护密码的安全

MySQL将用户帐户的密码存储在mysql.user 系统表中。

不应将对此表的访问权限授予任何非管理帐户。

帐户密码可能已过期,因此用户必须重置这些密码。

请参阅“密码管理”和“过期密码的服务器处理”。

validate_password插件可用于对可接受的密码强制执行策略。

请参阅“密码验证组件”。

有权修改插件目录(plugin_dir系统变量的值)或指定插件目录位置my.cnf文件的用户可以替换插件并修改插件提供的功能,包括验证插件。

应该保护可能写入密码的日志文件等文件。参见下文

3.密码和日志记录

密码可以写成SQL语句中的纯文本,如CREATE USER、GRANTSET PASSWORD。如果MySQL服务器按照编写的方式记录这些语句,那么任何有权访问日志的人都可以看到其中的密码。

语句日志记录避免将密码写入以下语句的明文:

CREATE USER ... IDENTIFIED BY ...
ALTER USER ... IDENTIFIED BY ...
SET PASSWORD ...
START SLAVE ... PASSWORD = ...
START REPLICA ... PASSWORD = ...
CREATE SERVER ... OPTIONS(... PASSWORD ...)
ALTER SERVER ... OPTIONS(... PASSWORD ...)

这些语句中的密码将被重写,使其不会直接出现在写入常规查询日志、慢速查询日志和二进制日志的语句文本中。重写不适用于其他语句。特别是,mysql.user系统表中引用文字密码的INSERT或UPDATE语句会按原样记录,因此应避免使用此类语句。(无论如何,不鼓励直接修改拨款表。)

对于常规查询日志,可以通过使用--log raw选项启动服务器来抑制密码重写。出于安全原因,不建议将此选项用于生产用途。出于诊断目的,查看服务器接收到的语句的确切文本可能很有用。

默认情况下,审核日志插件生成的审核日志文件的内容不会加密,并且可能包含敏感信息,例如SQL语句的文本。出于安全考虑,审核日志文件应写入一个只有MySQL服务器和有正当理由查看日志的用户才能访问的目录。

请参阅“MySQL企业审核安全注意事项”。

如果安装了查询重写插件,服务器接收的语句可能会被重写(请参阅查询重写插件)。

在这种情况下,--log raw选项影响语句日志记录,如下所示:

如果没有--log-raw,服务器将记录查询重写插件返回的语句。这可能与收到的声明不同。

使用--log raw,服务器会将收到的原始语句记录下来。

密码重写的一个含义是,无法解析(例如,由于语法错误)的语句不会写入常规查询日志,因为它们不可能是无密码的。

需要记录所有语句(包括有错误的语句)的用例应该使用--log raw选项,记住这也可以绕过密码重写。

只有当需要纯文本密码时,才会进行密码重写。

对于具有期望密码哈希值的语法的语句,不会发生重写。

如果为这种语法错误地提供了纯文本密码,则会按照给定的方式记录密码,而无需重写。

要保护日志文件不被不必要的暴露,请将它们定位在限制服务器和数据库管理员访问的目录中。

如果服务器登录到mysql数据库中的表,则只将对这些表的访问权限授予数据库管理员

副本将复制源服务器的密码存储在其连接元数据存储库中,默认情况下,该存储库是mysql数据库中名为slave_master_info的表。

现在不推荐将数据目录中的文件用于连接元数据存储库,但仍然可以

请参阅“中继日志和复制元数据存储库”)。

确保只有数据库管理员才能访问连接元数据存储库。

将密码存储在连接元数据存储库中的另一种方法是使用START REPLICA

(或MySQL 8.0.22之前的版本,START SLAVE)或START GROUP_REPLICATION语句指定连接到源的凭据

使用限制访问模式来保护包括日志表包含密码的日志文件数据库备份

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

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

相关文章

打造高质感的电子画册,这篇文章告诉你

​在数字化时代,电子画册作为一种全新的视觉传达方式,正逐渐成为各行各业展示形象、传播信息的重要工具。相较于传统的纸质画册,电子画册具有更高的质感、更好的互动性以及更低的制作成本,使得它愈发受到众多企业的青睐。那样怎么…

整理好了!2024年最常见 20 道 Rocket MQ面试题(一)

一、RocketMQ是什么? RocketMQ是一个开源的分布式消息中间件,它最初由阿里巴巴集团开发,并在2012年开源。后来,RocketMQ被捐赠给了Apache软件基金会,并在2017年成为了Apache的顶级项目。以下是RocketMQ的几个关键特点…

linux学习(六)

1.网络管理 (1)查看 ifconfig: root用户可以查看网卡状态, 普通用户: /sbin/ifconfig(需要加上命令的完整路径) (2)修改网络配置 通过命令修改网络配置 设置网卡的ip地址;禁用网卡和启用网卡了。 添加网关: (3)网络故障查询 ①ping 检测当前主机和目标主机是…

单向链表的简单综合应用

通过链表实现赋值&#xff0c;插入&#xff0c;删除&#xff0c;输出的功能&#xff0c;没有多余拉扯&#xff0c;不提供注释&#xff0c;希望大家体会链表之美&#xff1a; 头部 #include<iostream> #include<stdlib.h> using namespace std;typedef struct nod…

杨若歆发布最新单曲《迷雾之谜》从啦啦女神到音乐新星的华丽转身

5月28日&#xff0c;台北——杨若歆&#xff0c;这位被粉丝封为"啦啦女神"的多才多艺艺人&#xff0c;近日推出了她的最新单曲《迷雾之谜》&#xff0c;这首歌曲以其空灵的旋律和杨若歆独特的高音&#xff0c;迅速在歌迷中引起了热烈的反响。 杨若歆&#xff0c;身高…

vxetable 如何修改行点击高亮背景色

在使用vxetable中的表格组件时&#xff0c;有时会遇到修改点击高亮行背景色的情况。要修改高亮行背景色只需要以下两步即可 根据current-change 事件获取并记录当前点击高亮行的点击索引 根据row-style 属性绑定的方法&#xff0c;根据回调参数{rowIndex} ,判断如果当前索引和…

nginx 安全配置

1、前言 前后端分离后&#xff0c;nginx 作为跨域转发工具在日常应用中越来越广泛&#xff0c;它的安全性不能不能忽略。 2、nginx 安装相关说明 2.1 直接下载安装包 在nginx官网下载编译好的安装包&#xff0c;链接地址为nginx: download。如果是linux系统&#xff0c;直接使…

「AIGC算法」R-tree算法

R-tree算法是一种非常实用的空间数据索引技术,它可以帮助我们在复杂的空间数据中快速找到我们想要的信息。下面我将用一些生活中的例子来帮助大家更好地理解R-tree算法。 1. 定义与原理 想象一下,你有一个巨大的图书馆,里面有成千上万本书,每本书都有它在书架上的特定位置…

【Python设计模式01】面向对象基础

1.类与实例 在面向对象编程中&#xff0c;类和实例是两个基本的概念。 类&#xff08;Class&#xff09; 类是对象的蓝图或模板&#xff0c;它定义了一组属性和方法&#xff0c;这些属性和方法将由该类的所有实例共享。类用于封装数据和行为&#xff0c;使代码更加模块化和易…

720VR三维立体小程序源码系统 手机电脑端自适应 前后端分离 带完整的安装代码包以及搭建教程

系统概述 720VR 三维立体小程序源码系统是基于先进的技术和理念打造而成的综合性平台。它融合了虚拟现实技术、移动互联网技术以及计算机编程技术&#xff0c;旨在为用户提供沉浸式的 720 度全景体验。 该系统的设计充分考虑了用户的需求&#xff0c;无论是在手机端还是电脑端…

芯生态 | 鸿道Intewell工业操作系统适配Intel Core i7-8700T

操作系统与芯片在计算机系统中是不可或缺的存在&#xff0c;它们共同协作以确保计算机硬件和软件资源的有效管理和利用、确保系统正常运行和性能优化。 操作系统的设计和实现需要考虑芯片的特性和性能&#xff0c;完美的适配才能充分发挥硬件资源的潜力。下面&#xff0c;小编…

vue-cli2项目中使用scss

前言&#xff1a; 首先要搞清楚Sass和Scss的区别&#xff1a; 实际上Sass和Scss是同一种东西&#xff0c;Scss是 Sass3 引入新的语法&#xff0c;它们都是css预处理器。通常称为Sass&#xff0c;但存在两种不同的语法风格&#xff1a; 文件扩展名&#xff1a;Sass 默认…

探索Python的包与模块:构建项目的基石

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、模块与包的基础认知 1. 模块的定义与创建 2. 包的组织与管理 二、模块与包的进阶使用…

懒人创业秘诀揭秘:加入萤瓴优选项目,普通人也能打开财富大门

创业对于很多人来说&#xff0c;是一个艰难而复杂的过程。然而&#xff0c;时代的发展带来了新的机遇&#xff0c;懒人创业成为了一种趋势。加入萤瓴优选项目&#xff0c;普通人也能轻松打开财富大门。本文将揭秘懒人创业的秘诀&#xff0c;并分析萤瓴优选项目如何帮助普通人实…

极致产品力|从toB到toC,年销4.2亿份的冻干品牌是如何炼成的?

天野食品是日本冻干食品长红40年的品牌&#xff0c;从制造焦糖的小工厂&#xff0c;转变为日本冻干速食的行业第一&#xff0c;它是如何做到的呢? 深耕TOB业务&#xff0c;如何在ToC业务创造增长 天野公司以冻干食品闻名但并非以此起家。自1940年成立以来&#xff0c;便以染料…

tomcat不定时宕机,Failed to write core dump

在linux上的tomcat部署的web应用&#xff0c;不定时会自动挂掉&#xff0c;排查tomcat安装路径/logs/catalina.out 发现提示Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java a…

前端本地项目启动供后端或者测试调试

目录 1、项目本地启动的地址 2、打开终端输入 ifconfig 查找ip 3、将localhost替换成ip即可供他人测试 1、项目本地启动的地址 http://localhost:8100/?module220&webRoutevpc-gray&backRoutevpc-gray........................... 2、打开终端输入 ifconfig 查找i…

android Seek当点击的时候有一个圆圈

最近项目中Seekbar的时候遇到一个问题&#xff1a;点击进度条或者拖动进度条的时候&#xff0c;seekbar出现一个圆形的半透阴影/白色圆圈&#xff1a; <xxxxxxxxxSeekBarandroid:layout_width"wrap_content"android:layout_height"40dp"android:backgro…

DreamPose: Fashion Image-to-Video Synthesis via Stable Diffusion

UW&UCB&Google&NVIDIA ICCV23https://github.com/johannakarras/DreamPose?tabreadme-ov-file 问题引入 输入参考图片 x 0 x_0 x0​和pose序列 { p 1 , ⋯ , p N } \{p_1,\cdots,p_N\} {p1​,⋯,pN​}&#xff0c;输出对应视频 { x 1 ′ , ⋯ , x N ′ } \{x_1,…

浙江大学数据结构MOOC-课后习题-第十讲-排序5 PAT Judge

题目汇总 浙江大学数据结构MOOC-课后习题-拼题A-代码分享-2024 题目描述 这段文字是关于如何生成PAT&#xff08;一种编程能力测试&#xff09;的排行榜的说明。下面是这段文字的中文翻译&#xff1a; 输入说明&#xff1a; 每个输入文件包含一个测试案例。对于每个案例&…