Mysql数据库的安全配置、实用技巧
- 格式:doc
- 大小:82.00 KB
- 文档页数:16
MySQL数据库的安全设置与防护策略引言:MySQL是一种开源的关系型数据库管理系统,被广泛应用于各种Web应用程序中。
然而,随着数据泄露和黑客攻击事件的增加,数据库的安全性成为了一个日益重要的问题。
在本文中,我们将探讨MySQL数据库的安全设置与防护策略,以保护您的数据免受非法访问和恶意攻击。
一、使用强密码和限制访问权限为了保护MySQL数据库免受未经授权访问的风险,我们首先要确保使用强密码,并进行访问权限的限制。
管理员应确保数据库账户的密码具有足够的复杂性和随机性,包括字母、数字和特殊字符的组合。
此外,只有必要的用户才被授予数据库的访问权限,对外开放的端口和IP地址也应该根据需要进行限制。
二、定期更新和备份数据库定期更新MySQL数据库软件和补丁是保持安全性的关键。
这些更新通常包含了修复已知漏洞和安全问题的功能。
同时,定期备份数据库是非常重要的,以防止数据丢失。
管理员可以设置自动备份策略,将数据库备份到安全的地方,以便在紧急情况下恢复数据。
三、使用SSL/TLS加密通信SSL/TLS协议通过加密通信数据和验证服务器身份,提供了一种安全的通信机制。
在MySQL中启用SSL/TLS加密可以有效地防止数据在传输过程中被窃取或篡改。
管理员可以生成SSL/TLS证书,并配置MySQL服务器和客户端来使用这些证书进行加密通信。
四、限制远程访问和网络安全设置MySQL服务器通常默认允许来自任何地址的远程访问,这会增加数据库的安全风险。
为了保护数据库,管理员应该限制远程访问,并将其仅限制在需要的IP地址范围内。
此外,防火墙和网络安全设备应该用于监控和过滤不明来源的网络流量,以防止潜在的攻击。
五、日志监控和审计功能MySQL数据库具有强大的日志监控和审计功能,可以跟踪数据库的活动和记录关键操作。
管理员应该启用这些功能,并审查日志以检测潜在的安全问题或异常活动。
此外,还可以实施实时警报系统,以及利用专业的安全工具进行安全漏洞扫描和弱密码检测。
MySQL数据库安全性配置指南概述MySQL是当前最流行的关系型数据库管理系统之一,广泛应用于各个领域的企业和个人。
然而,随着数据安全问题的日益突出,对MySQL数据库进行安全性配置变得至关重要。
本文将介绍一些常见的MySQL数据库安全性配置指南,帮助读者保护其数据库中的敏感信息并防止潜在的攻击。
1. 更新和备份数据库为了保护数据库中的数据安全,首先需要定期更新MySQL数据库以获取最新的补丁和安全升级。
此外,定期备份数据库,确保在数据丢失或损坏时能够及时恢复。
2. 使用强密码和SSL强密码是保护数据库安全的重要措施之一。
确保在创建MySQL用户时使用符合安全标准的强密码,并定期更改密码。
同时,启用SSL协议可以加密数据库连接,防止数据在传输过程中被窃取。
3. 限制远程访问和控制用户权限限制远程访问是保护数据库安全的重要步骤之一。
默认情况下,MySQL允许任何IP地址进行连接。
通过配置IP白名单和防火墙规则,只允许特定IP地址进行远程访问,可以大大降低潜在的攻击风险。
此外,合理控制不同用户的权限也是数据库安全的关键。
使用最小权限原则,仅给予用户所需的权限,避免赋予过高的权限,防止潜在的攻击者利用特权进行非法操作。
4. 加密敏感数据对于包含敏感信息的字段,如用户密码、信用卡号码等,可以使用加密算法对其进行加密存储。
这样即使数据库被非法访问,攻击者也无法直接获取到明文敏感信息。
5. 定期审计和监控数据库定期审计和监控数据库可以及时发现和响应潜在的安全问题。
通过监控日志文件、网络流量和数据库性能指标等,可以快速检测到异常活动,并及时采取措施进行防范。
6. 使用防火墙和安全工具为了加强数据库的安全性,可以在服务器上设置防火墙规则,仅允许指定的端口进行访问。
此外,还可以使用安全工具,如入侵检测系统(IDS)和入侵防御系统(IPS),及时检测和阻止潜在的攻击。
7. 定期更新和监控数据库软件及时更新数据库软件是保护数据库安全的基本防御措施之一。
如何使用MySQL进行数据安全加固和防护MySQL是一种常见的关系型数据库管理系统,被广泛应用于各种网络应用和数据存储需求。
然而,随着网络攻击日益猖獗和个人隐私保护的重要性不断提升,数据安全加固和防护变得尤为重要。
本文将探讨如何使用MySQL进行数据安全加固和防护的方法和技巧。
一、使用强密码和账户管理密码是保护数据库的第一道防线。
对于MySQL而言,使用强密码非常关键。
一个强密码应该包含大小写字母、数字和特殊字符,并且足够长。
此外,及时更换密码也是必要的,建议每隔一段时间更换一次密码。
账户管理也是重要的一环。
首先,不要使用默认的管理员账户或者弱密码的账户。
创建一个独立的账户来管理数据库,并且按照最小权限原则,给予账户有限的权限。
另外,及时删除不再需要的账户,减少被攻击的风险。
二、配置安全的登录设置在MySQL的配置文件中,有一些重要的设置可以加强数据安全。
比如,可以限制通过网络访问数据库的IP地址范围,只允许特定的IP地址进行访问。
此外,可以设置最大连接数和最大错误登录尝试次数,防止恶意攻击。
同时,启用SSL/TLS协议也是一个不错的选择,确保数据在传输过程中的安全性。
三、备份和恢复策略数据备份是数据安全的重要一环。
良好的备份策略可以帮助我们应对各种数据丢失的情况,包括误删除、硬盘故障等。
数据库备份至少应该包含完整备份和增量备份两部分,以确保数据的完整性和可恢复性。
同时,备份数据应该存储在独立的设备或者云上,以免遭遇硬件故障或灾难。
除了备份,及时的数据恢复策略也是必要的。
当数据库发生故障或遭到攻击时,能够快速地恢复数据至最后一次备份点,保证业务的连续运行。
四、加密敏感数据对于某些特别敏感的数据,如个人身份证号码、银行账户等,可以考虑进行加密处理。
MySQL提供了多种加密算法和函数,可以对数据进行加密和解密。
这样即使数据被窃取,也难以直接获得真实的敏感信息。
同时,注重加密密钥的管理也是非常重要的,确保只有授权人员能够使用和管理密钥。
MySQL中的数据库安全和防护措施规范随着互联网和信息技术的迅速发展,数据库的安全性成为了企业和个人关注的焦点。
作为最流行的关系型数据库管理系统之一,MySQL的数据库安全也备受关注。
本文旨在探讨MySQL中的数据库安全和防护措施规范,提供一些有效的方法和建议。
1. 数据库访问控制数据库访问控制是数据库安全的基础。
MySQL提供了多种方式来控制用户对数据库的访问权限。
首先,我们应该使用强密码来保护数据库。
强密码应该包含字母、数字和特殊字符,并且应定期更改。
其次,我们应该限制对数据库服务器的物理访问。
只有授权的人员才能访问数据库服务器的物理设备。
此外,MySQL还提供了基于角色的访问控制功能。
通过创建用户和角色,我们可以根据用户的职责和权限来分配数据库访问权限。
应该根据最小权限原则来分配权限,即用户只能访问他们所需的数据和操作。
定期审计和更新用户的权限也是必要的措施。
2. 数据库加密数据库加密是数据库安全的重要组成部分。
MySQL支持数据在传输过程中和存储在磁盘上时的加密。
对于数据传输,我们可以使用SSL/TLS协议来加密数据传输通道。
对于数据存储,MySQL提供了多种加密引擎,如InnoDB引擎的加密功能。
我们可以使用这些加密引擎来对数据库表和列进行加密保护。
此外,我们还可以使用文件级加密来保护数据库备份和日志文件。
对于备份文件和日志文件,我们可以使用加密工具对其进行加密,以防止未经授权的访问和泄露。
3. 数据库审计和日志记录数据库审计和日志记录是发现和应对数据库安全事件的重要手段。
MySQL提供了丰富的审计功能,可以跟踪和记录对数据库的所有访问和操作。
我们可以启用MySQL的审计插件,并配置审计规则和日志存储。
定期审计数据库日志,并及时响应异常事件是确保数据库安全的必要步骤。
此外,还可以结合使用MySQL的二进制日志和错误日志来记录数据库的运行状况和异常事件。
二进制日志可以记录所有的数据库更改操作,而错误日志可以记录数据库服务的异常情况。
MySQL中的数据安全和权限控制策略MySQL是一种广泛使用的开源关系型数据库管理系统,在众多应用中扮演着重要的角色。
随着互联网应用的不断发展,数据的安全性和权限控制成为了极其重要的议题。
本文将重点讨论MySQL中的数据安全和权限控制策略,探讨如何保护数据的完整性和机密性。
一、MySQL中的数据安全策略在MySQL中,数据安全是指保护数据免受恶意访问、篡改和破坏的能力。
以下是一些常见的数据安全策略。
1. 数据加密数据加密是一种常用的数据安全措施,它通过将数据转化为密文,以防止未经授权的访问者读取敏感信息。
MySQL提供了多种加密方式,如对称加密和非对称加密。
对称加密使用相同的密钥进行加解密,而非对称加密使用公钥进行加密,私钥进行解密。
2. 数据备份和恢复数据备份是预防数据丢失的重要手段之一。
MySQL提供了多种备份方式,如物理备份和逻辑备份。
物理备份是通过复制数据库文件来进行备份,适用于大规模数据。
逻辑备份则是通过导出SQL语句来备份数据,适用于较小规模的数据库。
3. 审计和日志审计和日志记录是追踪和监控数据库活动的重要手段。
MySQL提供了多种日志类型,如二进制日志、错误日志和慢查询日志。
二进制日志可以记录所有对数据库的更改操作,以便在发生故障时进行恢复。
错误日志可以记录数据库的错误信息,帮助诊断和解决问题。
慢查询日志可以记录执行时间超过阈值的查询,方便性能优化。
4. 强化访问控制访问控制是保护数据库免受未经授权访问的重要手段。
MySQL提供了多种权限管理机制,如用户管理、角色管理和访问控制列表。
通过创建用户和授予不同的权限,可以限制用户对数据库的访问和操作权限。
此外,可以通过访问控制列表来限制特定IP地址或网段对数据库的访问。
二、MySQL中的权限控制策略权限控制是保护数据库免受非法操作和误操作的重要手段。
MySQL中的权限控制策略主要包括以下几个方面。
1. 最小权限原则最小权限原则是指给予用户最小必要权限来完成其工作。
MySQL中的防火墙和安全策略设置方法MySQL是一种常见的关系型数据库管理系统,用于存储和管理大量数据。
然而,随着网络攻击和数据泄露日益增多,对数据库的安全性和保护变得越来越重要。
在本篇文章中,我们将讨论MySQL中的防火墙和安全策略设置方法,以帮助您保护您的数据库免受潜在的威胁。
1. 数据库访问控制一个有效的安全策略是限制对数据库的访问。
MySQL提供了多种方式来实现这一点。
首先,您可以创建一个强密码策略,要求用户使用复杂的密码来访问数据库。
此外,您可以限制特定IP地址或IP地址范围的访问,以免未经授权的用户尝试连接到数据库。
这可以通过修改MySQL配置文件中的访问控制列表实现。
另一个重要的安全策略是仅授权受信任的用户对数据库进行特定操作,如查询、插入、更新和删除。
通过授权特定的用户仅对其所需的数据库和表进行操作,可以减少潜在攻击者对数据库的访问权限。
2. 防火墙保护防火墙是保护数据库的另一个重要组成部分。
通过配置防火墙规则,可以限制来自外部网络的请求,并只允许来自特定IP地址或IP地址范围的连接。
这样可以防止攻击者尝试通过网络对数据库进行攻击或未经授权的访问。
在配置防火墙时,建议启用只允许安全协议(如SSH)进行远程连接,并禁用不安全的协议(如Telnet)。
这样可以确保只有经过身份验证和加密的连接才能访问数据库。
3. 数据加密数据加密是保护数据库中敏感数据的另一个关键方面。
通过加密存储在数据库中的数据,即使数据库被入侵,攻击者也无法直接访问其中的敏感信息。
MySQL提供了多种加密方法,如使用SSL/TLS保护传输数据,以及使用加密算法对数据进行加密。
通过配置和使用这些加密选项,可以加强数据库的安全性。
此外,还建议定期备份数据库,并将备份数据存储在安全的位置,以便在发生数据损坏或丢失时能够恢复数据。
4. 审计和监控监控和审计数据库活动是监测潜在安全漏洞的有效方式。
通过记录数据库操作,如登录、查询和更新等,可以及时检测到异常活动和潜在的攻击。
MySQL安全配置与用户权限管理引言:MySQL作为目前最流行的开源关系型数据库管理系统,被广泛应用于各行各业。
然而,在使用MySQL的过程中,我们不可忽视数据库的安全性问题。
本文将重点介绍MySQL的安全配置和用户权限管理,以帮助读者提高数据库的安全性,防止潜在的安全威胁。
一、MySQL的基本安全配置MySQL的基本安全配置是保障数据库安全的第一步,以下是一些基本的安全配置建议:1. 修改root用户密码:默认情况下,MySQL的root用户密码为空,这对数据库的安全带来了潜在的风险。
为了提高安全性,我们应当为root用户设置一个强密码。
可以通过以下命令修改:```mysqladmin -u root password "newpassword"```2. 移除不必要的用户:MySQL默认安装的时候存在一些默认用户,如test,这些用户没有必要存在于生产环境中。
可以使用以下命令删除这些用户:```DELETE FROM er WHERE user='test';```3. 更改MySQL服务的默认端口:默认情况下,MySQL的服务端口为3306,这是黑客攻击的一个常用目标。
为了增加黑客攻击的难度,我们可以将MySQL的服务端口更改为一个非常用的端口,如8888。
4. 禁止远程root登录:应当避免允许root用户从远程主机登录MySQL,因为这会增加数据库的风险。
可以通过修改MySQL配置文件中的bind-address参数来实现禁止远程root登录。
二、MySQL的用户权限管理在MySQL中,用户权限管理是实现数据库安全的关键。
MySQL采用基于角色的权限管理,通过为用户分配角色,由角色决定用户对数据库的访问权限。
1. 创建新用户:在MySQL中,可以通过以下命令创建新用户并授权:```CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';GRANT ALL ON database.* TO 'username'@'localhost';```上述命令会创建一个名为username的新用户,并授予其对database数据库的所有权限。
MySQL的安全加固和防护建议引言:在如今的数字时代,数据的安全性是任何组织或个人都应该高度重视的问题。
作为最流行的关系型数据库管理系统之一,MySQL的安全性显得尤为重要。
为了确保数据的完整性和保密性,采取一系列的安全加固和防护措施是必不可少的。
本文将为您介绍MySQL的一些安全加固和防护建议,帮助您更好地保护您的数据。
一、加强访问控制策略1. 设置强密码:通过使用包含大小写字母、数字和特殊字符的密码,可以增加密码的复杂度,提高破解难度。
此外,定期更改密码也是一个好习惯。
2. 创建独立的用户账号并控制访问权限:为每个用户创建独立的账号,并为其分配最低限度的权限。
这样可以减少潜在安全威胁。
3. 启用SSL/TLS加密:通过启用SSL/TLS加密,可以确保在网络传输过程中的数据安全,防止敏感信息被窃取。
4. 使用防火墙:使用防火墙限制对MySQL端口的访问。
只允许特定IP地址或IP地址段进行连接,以降低未经授权的访问风险。
二、加强数据库本身的安全性1. 定期更新MySQL版本和补丁:及时应用最新版本和安全补丁,可以修复已知的安全漏洞,并增加数据库的稳定性。
2. 启用严格模式:启用MySQL的严格模式,可以帮助捕获数据插入和更新时潜在的错误,保证数据的完整性。
3. 关闭不必要的服务和插件:仅启用数据库所需的服务和插件,关闭无用的功能,可以减少潜在的安全风险。
4. 加密敏感数据:对于存储在数据库中的敏感数据,可以使用加密算法进行加密。
这样即使数据库被攻击,也可以保护数据的机密性。
三、加强日志和监控1. 启用日志功能:在MySQL中开启日志功能,可以记录数据库的操作和事件,便于后期的审计和故障排查。
2. 监控数据库活动:密切关注数据库的活动情况,及时发现异常行为。
可以通过实时监控工具、日志分析工具等手段进行监控。
3. 实现审计功能:通过启用审计功能,记录数据库的更改和查询操作,可以提供其追溯性和可审计性。
MySQL安全性配置与防护指南引言MySQL是最受欢迎的开源数据库管理系统之一,被广泛应用于各种规模和类型的应用程序中。
然而,不正确的配置和管理MySQL数据库可能会导致安全漏洞,使数据库成为攻击者的目标。
因此,了解MySQL安全性配置和采取相应的防护措施至关重要。
本文将介绍MySQL安全性配置和防护指南,以帮助数据库管理员保护他们的MySQL数据库免受潜在的威胁。
1. 加强访问控制在MySQL中,访问控制是一个关键的安全措施。
首先,必须确保只有授权的用户可以访问数据库。
这可以通过设置强密码策略和限制远程访问来实现。
强密码策略包括以下几个方面:- 密码复杂度要求,包括数字、字母和特殊字符的组合。
- 密码长度要求,至少8个字符。
- 定期要求用户更改密码。
另外,限制远程访问是防止未经授权的用户从外部网络访问数据库的重要措施。
可以通过防火墙规则或MySQL配置文件中的bind-address参数来实现。
2. 保护数据库文件和目录MySQL的数据文件和配置文件包含了重要的数据库信息和凭证,因此必须采取适当的措施来保护它们。
以下是一些保护数据库文件和目录的建议措施:- 限制数据库文件和目录的访问权限,确保只有授权的用户或用户组可以读取和写入这些文件。
- 定期备份数据库文件,以防止数据丢失。
备份的数据可以在遭受攻击或数据损坏时进行恢复。
- 定期检查数据库文件和目录的完整性,以确保其未被修改或篡改。
3. 更新和升级MySQL版本MySQL社区不断修复和更新数据库的安全漏洞,因此及时更新和升级MySQL 版本是保持数据库安全性的关键。
通常,更新到最新的稳定版本可以获得最新的安全修复和功能改进。
在更新和升级过程中,应使用经过验证的来源,如官方下载页面或受信任的软件仓库。
4. 防范SQL注入攻击SQL注入攻击是一种常见的数据库攻击方式,攻击者通过在输入中插入恶意SQL代码来获取敏感信息或对数据库进行未经授权的操作。
MySQL的权限管理和安全设置导言:MySQL是一个流行的开源关系型数据库管理系统,广泛应用于Web应用程序和数据驱动的网站。
在使用MySQL进行开发和管理时,了解数据库的权限管理和安全设置是至关重要的,因为这决定了数据的安全性和访问控制。
本文将深入探讨MySQL的权限管理和安全设置,帮助读者了解如何保护他们的数据。
一、MySQL用户和权限在MySQL中,用户是数据库管理系统的主要组成部分。
每个用户都有自己的用户名和密码,并且可以被分配特定的权限。
权限控制了用户对数据库的操作范围和权限级别。
MySQL有几个默认用户,如root用户和匿名用户。
以下是一些常用的命令来管理MySQL用户和权限:1. 创建用户:在MySQL中,创建用户的命令是CREATE USER。
例如,要创建一个名为"admin"的用户,可以使用以下命令:CREATE USER 'admin'@'localhost' IDENTIFIED BY 'password';这将创建一个本地用户,密码为"password"。
2. 授予权限:要授予用户特定的权限,可以使用GRANT命令。
例如,要将SELECT和INSERT权限授予"admin"用户,可以使用以下命令:GRANT SELECT, INSERT ON database.table TO 'admin'@'localhost';这将授予"admin"用户对"database"中的"table"进行SELECT和INSERT操作的权限。
3. 撤销权限:使用REVOKE命令可以撤销用户的权限。
例如,要撤销"admin"用户对"database"中的所有权限,可以使用以下命令:REVOKE ALL PRIVILEGES ON database.* FROM 'admin'@'localhost';这将从"admin"用户中移除对"database"中所有表的所有权限。
Mysql数据库的安全配置、实用技巧作者:admin 来源:不详发布时间:2006-8-31 8:48:22 发布人:david减小字体增大字体1、前言MySQL 是完全网络化的跨平台关系型数据库系统,同时是具有客户机/服务器体系结构的分布式数据库管理系统。
它具有功能强、使用简便、管理方便、运行速度快、安全可靠性强等优点,用户可利用许多语言编写访问MySQL 数据库的程序,特别是与PHP更是黄金组合,运用十分广泛。
由于MySQL是多平台的数据库,它的默认配置要考虑各种情况下都能适用,所以在我们自己的使用环境下应该进行进一步的安全加固。
作为一个MySQL的系统管理员,我们有责任维护MySQL数据库系统的数据安全性和完整性。
MySQL数据库的安全配置必须从两个方面入手,系统内部安全和外部网络安全,另外我们还将简单介绍编程时要注意的一些问题以及一些小窍门。
2、系统内部安全首先简单介绍一下MySQL数据库目录结构。
MySQL安装好,运行了mysql_db_install脚本以后就会建立数据目录和初始化数据库。
如果我们用MySQL源码包安装,而且安装目录是/usr /local/mysql,那么数据目录一般会是/usr/local/mysql/var。
数据库系统由一系列数据库组成,每个数据库包含一系列数据库表。
MySQL是用数据库名在数据目录建立建立一个数据库目录,各数据库表分别以数据库表名作为文件名,扩展名分别为MYD、MYI、frm的三个文件放到数据库目录中。
MySQL的授权表给数据库的访问提供了灵活的权限控制,但是如果本地用户拥有对库文件的读权限的话,攻击者只需把数据库目录打包拷走,然后拷到自己本机的数据目录下就能访问窃取的数据库。
所以MySQL所在的主机的安全性是最首要的问题,如果主机不安全,被攻击者控制,那么MySQL的安全性也无从谈起。
其次就是数据目录和数据文件的安全性,也就是权限设置问题。
从MySQL主站一些老的binary发行版来看,3.21.xx版本中数据目录的属性是775,这样非常危险,任何本地用户都可以读数据目录,所以数据库文件很不安全。
3.22.xx版本中数据目录的属性是770,这种属性也有些危险,本地的同组用户既能读也能写,所以数据文件也不安全。
3.23.xx版本数据目录的属性是700,这样就比较好,只有启动数据库的用户可以读写数据库文件,保证了本地数据文件的安全。
如果启动MySQL数据库的用户是mysql,那么象如下的目录和文件的是安全的,请注意数据目录及下面的属性:shell>ls -l /usr/local/mysqltotal 40drwxrwxr-x 2 root root 4096 Feb 27 20:07 bindrwxrwxr-x 3 root root 4096 Feb 27 20:07 includedrwxrwxr-x 2 root root 4096 Feb 27 20:07 info drwxrwxr-x 3 root root 4096 Feb 27 20:07 lib drwxrwxr-x 2 root root 4096 Feb 27 20:07 libexec drwxrwxr-x 3 root ro ot 4096 Feb 27 20:07 man drwxrwxr-x 6 root root 4096 Feb 27 20:07 mysql-test drwxr wxr-x 3 root root 4096 Feb 27 20:07 share drwxrwxr-x 7 root root 4096 Feb 27 20:07 sql-bench drwx------ 4 mysql mysql 4096 Feb 27 20:07 varshell>ls -l /usr/local/mysql/vartotal 8drwx------ 2 mysql mysql 4096 Feb 27 20:08 mysqldrwx------ 2 mysql mysql 4096 Feb 27 20:08 testshell>ls -l /usr/local/mysql/var/mysqltotal 104-rw------- 1 mysql mysql 0 Feb 27 20:08 columns_priv.MYD-rw------- 1 mysql mysql 1024 Feb 27 20:08 columns_priv.MYI-rw------- 1 mysql mysql 8778 Feb 27 20:08 columns_priv.frm-rw------- 1 mysql mysql 302 Feb 27 20:08 db.MYD-rw------- 1 mysql mysql 3072 Feb 27 20:08 db.MYI-rw------- 1 mysql mysql 8982 Feb 27 20:08 db.frm-rw------- 1 mysql mysql 0 Feb 27 20:08 func.MYD-rw------- 1 mysql mysql 1024 Feb 27 20:08 func.MYI-rw------- 1 mysql mysql 8641 Feb 27 20:08 func.frm-rw------- 1 mysql mysql 0 Feb 27 20:08 host.MYD-rw------- 1 mysql mysql 1024 Feb 27 20:08 host.MYI-rw------- 1 mysql mysql 8958 Feb 27 20:08 host.frm-rw------- 1 mysql mysql 0 Feb 27 20:08 tables_priv.MYD-rw------- 1 mysql mysql 1024 Feb 27 20:08 tables_priv.MYI-rw------- 1 mysql mysql 8877 Feb 27 20:08 tables_priv.frm-rw------- 1 mysql mysql 428 Feb 27 20:08 user.MYD-rw------- 1 mysql mysql 2048 Feb 27 20:08 user.MYI-rw------- 1 mysql mysql 9148 Feb 27 20:08 user.frm如果这些文件的属主及属性不是这样,请用以下两个命令修正之:shell>chown -R mysql.mysql /usr/local/mysql/varshell>chmod -R go-rwx /usr/local/mysql/var用root用户启动远程服务一直是安全大忌,因为如果服务程序出现问题,远程攻击者极有可能获得主机的完全控制权。
MySQL从3.23.15版本开始时作了小小的改动,默认安装后服务要用mysql用户来启动,不允许root用户启动。
如果非要用root用户来启动,必须加上--us er=root的参数(./safe_mysqld --user=root &)。
因为MySQL中有LOAD DATA INFILE和SELE CT ... INTO OUTFILE的SQL语句,如果是root用户启动了MySQL服务器,那么,数据库用户就拥有了root用户的写权限。
不过MySQL还是做了一些限制的,比如LOAD DATA INFILE只能读全局可读的文件,SELECT ... INTO OUTFILE不能覆盖已经存在的文件。
本地的日志文件也不能忽视,包括shell的日志和MySQL自己的日志。
有些用户在本地登陆或备份数据库的时候为了图方便,有时会在命令行参数里直接带了数据库的密码,如: shell>/usr/local/mysql/ bin/mysqldump -uroot -ptest test>test.sql shell>/usr/local/mysql/bin/mysql -uroot -ptest 这些命令会被shell记录在历史文件里,比如bash会写入用户目录的.bash_history 文件,如果这些文件不慎被读,那么数据库的密码就会泄漏。
用户登陆数据库后执行的SQL命令也会被MySQL记录在用户目录的.mysql_history文件里。
如果数据库用户用SQL语句修改了数据库密码,也会因.mysql_history文件而泄漏。
所以我们在shell登陆及备份的时候不要在-p后直接加密码,而是在提示后再输入数据库密码。
另外这两个文件我们也应该不让它记录我们的操作,以防万一。
shell>rm .bash_history .mysql_historyshell>ln -s /dev/null .bash_historyshell>ln -s /dev/null .mysql_history上门这两条命令把这两个文件链接到/dev/null,那么我们的操作就不会被记录到这两个文件里了。
3、外部网络安全MySQL数据库安装好以后,Unix平台的user表是这样的:mysql> use mysql;Database changedmysql> select Host,User,Password,Select_priv,Grant_priv from user;+-----------+------+----------+-------------+------------+| Host | User | Password | Select_priv | Grant_priv |+-----------+------+----------+-------------+------------+| localhost | root | | Y | Y || redhat | root | | Y | Y || localhost | | | N | N || redhat | | | N | N |+-----------+------+----------+-------------+------------+4 rows in set (0.00 sec)Windows平台的user表是这样的:mysql> use mysql;Database changedmysql> select Host,User,Password,Select_priv,Grant_priv from user;+-----------+------+----------+-------------+------------+| Host | User | Password | Select_priv | Grant_priv |+-----------+------+----------+-------------+------------+| localhost | root | | Y | Y || % | root | | Y | Y || localhost | | | Y | Y || % | | | N | N |+-----------+------+----------+-------------+------------+4 rows in set (0.00 sec) 我们先来看Unix平台的user表。