MYSQL数据库系统安全管理

合集下载

如何确保MySQL数据库的数据安全性

如何确保MySQL数据库的数据安全性

如何确保MySQL数据库的数据安全性引言:在当今数字化时代,数据已经成为各个领域发展的核心。

而数据库作为数据存储和管理的关键基础设施,其数据的安全性具有重要的意义。

针对MySQL数据库,本文将从多个角度探讨如何确保其数据的安全性。

一、访问控制和权限管理为了保护MySQL数据库的数据安全,首要之务是建立严格的访问控制和权限管理系统。

合理的权限分配可以限制用户对数据库的操作,避免非授权人员的数据篡改、删除或泄漏。

以下是一些有效的访问控制和权限管理措施:1. 用户认证和强密码策略在MySQL中,用户认证是一种常见的防护机制。

管理员可以为每个用户设置用户名和密码,并且要求用户使用强密码,以增加密码被破解的难度。

此外,定期更改密码也是提高安全性的有效方式。

2. 权限的最小化原则根据最小权限原则,每个用户只能被授予其工作所需的最低权限。

通过为不同用户分配适当的权限,可以减少潜在的安全风险。

3. 授权的审计和监控对数据库的授权进行审计和监控是评估数据库安全性的重要方法之一。

管理员可以记录和监测用户的数据库活动,及时发现异常行为,并采取相应的措施。

二、加密技术的应用数据加密是数据安全的关键手段之一。

通过使用加密技术,可以对MySQL数据库中的数据进行加密,提高其机密性和完整性。

以下是几种常见的加密技术:1. 数据库连接的加密通过使用安全套接字层(SSL)或传输层安全(TLS)等加密协议,可以实现数据库连接的加密。

这样可以防止数据在传输过程中被拦截或窃取。

2. 数据库文件的加密可以使用数据库加密工具对数据库文件进行加密,保护数据在存储设备上的安全。

这种加密方式可以有效防止物理攻击或数据泄漏。

3. 数据字段的加密对敏感数据字段进行加密,如个人身份证号、密码等,可以减少数据泄漏的风险。

这样即使数据库被攻击者获取,也无法对加密数据进行直接的解读。

三、定期备份和容灾机制定期备份是确保MySQL数据库数据安全的基础。

数据损坏、误操作、病毒攻击或自然灾害等原因都可能导致数据丢失,因此建立有效的备份策略非常重要。

Web应用系统安全开发课件:phpMyAdmin管理MySQL数据库

Web应用系统安全开发课件:phpMyAdmin管理MySQL数据库
➢ 该页面列出了当前数据库的一些基本信息,包括数据库和网站服务器的相关信息,以及phpMyAdmin的相关信息, 如数据库版本、数据库类型、连接用户、服务器字符集等。 ➢ 通过上方菜单栏中的各项菜单可以对数据库执行各项管理操作,如管理数据库、管理数据表、管理数据记录等。
(1)在phpMyAdmin的主页面中,单击上方菜单栏中的“数据库”链接,接着在“新建数据库”文本框中 输入数据库名“db_test”,然后在下拉列表框中选择所要使用的编码,此处选择“utf8_unicode_ci” ,单 击“创建”按钮,创建数据库。
(2)显示数据表结构页面,如图所示。在该页面中可以设置各个字段的详细信息,包括字段名、数据类型、 长度值等属性,以完成对表结构的详细设置。
(3)设置完成后单击右下方的“保存”按钮, 成功创建数据表结构,此时将显示如图所示的页面。
(4)成功创建数据表后, 在左侧列表中选择表名,然后单击上方菜单栏中的“结构”按钮,可以直接打开, 查看数据表结构。在该数据表结构页面中,可以改变表结构,执行添加新字段, 删除现有字段,设置主键和 索引字段,修改列的数据类型或者字段的长度/值等操作。
在左侧列表中选择某个数据表后,单击上方菜单栏中的“搜索”链接,将进入搜索界面,如图所示。
首先在左侧列表中选择要导出的对象,可以是数据库或数据表(如不选择任何对象将导出当前服务器中的所有数据 库)。之后单击phpMyAdmin主页面上方菜单栏中的“导出”链接,将打开“导出”编辑区,如图所示。
单击phpMyAdmin主页面上方菜单栏中的“导入”链接,可进入执行MySQL数据库脚本界面,如图所示。 注意:首先要在phpMyAdmin里新建一个与备份数据库文件同名的数据库,再导入。
Web
➢ phpMyAdmin可以对数据库进行可视化操作,从而大大提高程序开发的效率。 ➢ phpMyAdmin可以完全对数据库进行操作,例如建库、建表、录入数据等等。

使用MySQL的常见安全风险及防范措施

使用MySQL的常见安全风险及防范措施

使用MySQL的常见安全风险及防范措施引言MySQL是一款开源的关系型数据库管理系统,在互联网和企业应用中被广泛使用。

然而,随着互联网的发展和信息技术的进步,数据库的安全风险也日益突出。

本文将讨论使用MySQL时常见的安全风险,并提供一些防范措施。

一、密码安全1.使用弱密码弱密码是最常见的安全漏洞之一。

黑客可以通过暴力破解或社会工程学攻击等方式窃取数据库密码。

为了防止这种情况发生,我们应该使用强密码,包含大小写字母、数字和特殊字符,并定期更改密码。

2.明文存储密码有些开发人员会将数据库密码明文存储在配置文件或源代码中,这种做法十分危险。

一旦黑客获取了这些文件,他们就可以轻易地获得数据库的访问权限。

为了保护密码的安全,我们应该使用加密算法对密码进行加密存储。

3.传输密码不加密如果数据库密码在传输过程中没有加密,黑客就有可能窃取密码。

为了确保密码传输的安全,我们应该使用SSL/TLS等加密协议来保护通信。

二、访问控制1.缺乏访问控制在许多情况下,数据库管理员忽略了对数据库的访问控制,导致任何人都可以轻松地访问和修改数据。

为了保护数据库的安全,我们应该使用访问控制列表(ACL)来限制数据库的访问权限,只允许授权用户访问。

2.过多用户权限一些用户被授予了过多的权限,这使得他们可以执行危险的操作,比如删除或修改数据库中重要的数据。

为了最小化潜在的风险,我们应该根据用户的角色和职责来分配合适的权限,实施最小权限原则。

三、数据备份与恢复1.不进行数据备份数据丢失是灾难性的,可能导致企业巨大的损失。

很多人忽视数据备份的重要性,没有建立完善的备份策略。

为了防止数据丢失,我们应该定期备份数据库,并测试备份的可恢复性。

2.不加密备份数据如果数据库备份数据不加密,一旦备份文件被黑客获取,他们可以轻易地获得敏感数据。

为了保护备份数据的安全性,我们应该对备份文件进行加密,确保只有授权人员可以访问备份文件。

四、SQL注入攻击SQL注入是一种利用应用程序的漏洞执行恶意SQL语句的攻击方式。

MySQL中的防火墙和安全策略设置方法

MySQL中的防火墙和安全策略设置方法

MySQL中的防火墙和安全策略设置方法MySQL是一种常见的关系型数据库管理系统,用于存储和管理大量数据。

然而,随着网络攻击和数据泄露日益增多,对数据库的安全性和保护变得越来越重要。

在本篇文章中,我们将讨论MySQL中的防火墙和安全策略设置方法,以帮助您保护您的数据库免受潜在的威胁。

1. 数据库访问控制一个有效的安全策略是限制对数据库的访问。

MySQL提供了多种方式来实现这一点。

首先,您可以创建一个强密码策略,要求用户使用复杂的密码来访问数据库。

此外,您可以限制特定IP地址或IP地址范围的访问,以免未经授权的用户尝试连接到数据库。

这可以通过修改MySQL配置文件中的访问控制列表实现。

另一个重要的安全策略是仅授权受信任的用户对数据库进行特定操作,如查询、插入、更新和删除。

通过授权特定的用户仅对其所需的数据库和表进行操作,可以减少潜在攻击者对数据库的访问权限。

2. 防火墙保护防火墙是保护数据库的另一个重要组成部分。

通过配置防火墙规则,可以限制来自外部网络的请求,并只允许来自特定IP地址或IP地址范围的连接。

这样可以防止攻击者尝试通过网络对数据库进行攻击或未经授权的访问。

在配置防火墙时,建议启用只允许安全协议(如SSH)进行远程连接,并禁用不安全的协议(如Telnet)。

这样可以确保只有经过身份验证和加密的连接才能访问数据库。

3. 数据加密数据加密是保护数据库中敏感数据的另一个关键方面。

通过加密存储在数据库中的数据,即使数据库被入侵,攻击者也无法直接访问其中的敏感信息。

MySQL提供了多种加密方法,如使用SSL/TLS保护传输数据,以及使用加密算法对数据进行加密。

通过配置和使用这些加密选项,可以加强数据库的安全性。

此外,还建议定期备份数据库,并将备份数据存储在安全的位置,以便在发生数据损坏或丢失时能够恢复数据。

4. 审计和监控监控和审计数据库活动是监测潜在安全漏洞的有效方式。

通过记录数据库操作,如登录、查询和更新等,可以及时检测到异常活动和潜在的攻击。

MySQL 数据库基础与应用 第10章 权限管理和安全控制

MySQL 数据库基础与应用 第10章 权限管理和安全控制

MySQL 数据库基础与应用
5
10.2 用户管理
10.2.1 创建用户
创建用户使用CREATE USER语句。 语法格式:
CREATE USER user_specification [ , user_specification ] ...
其中,user_specification:
user [
IDENTIFIED BY [ PASSWORD ] ‘password’ | IDENTIFIED WITH auth_plugin [ AS ‘auth_string’] ]
10.2 用户管理
一个新安装的MySQL系统,只有一个名为root的用户,可使用以下 语句进行查看:
mysql> SELECT host, user, authentication_string FROM er;
+-----------+--------+------------------------------------------------------------------------+
4. procs_priv表 procs_priv表可以存储过程和存储函数进行权限设置。procs_priv表 包含8个字段,分别是Host、Db、User、Routine_name、Routine_type、 Grantor 、Proc_priv和Timestamp。
MySQL 数据库基础与应用
4
+-----------+--------+------------------------------------------------------------------------+

MySQL的权限管理与安全审计策略

MySQL的权限管理与安全审计策略

MySQL的权限管理与安全审计策略概述:MySQL是一个强大的开源数据库管理系统,广泛应用于各种大小规模的应用程序。

然而,随着互联网的普及和数据泄露事件的不断增加,数据库的安全性和数据隐私保护成为了一个非常重要的问题。

本文将重点探讨MySQL的权限管理和安全审计策略,帮助读者更好地保护其数据库的安全性。

权限管理:MySQL的权限管理是建立在用户和角色的基础上的。

数据库管理员(DBA)可以通过创建用户和角色,分配不同的权限来控制用户对数据库的操作。

通过使用GRANT语句,DBA可以将特定的权限授予某个用户或者角色,而使用REVOKE 语句可以撤销已经授予的权限。

这种灵活的权限管理机制使得DBA可以根据实际需求,细粒度地控制用户对数据库的访问权限,从而有效地保护数据库安全。

权限控制的最佳实践:为了确保数据库的安全性,以下是一些权限控制的最佳实践建议:1.最小化权限授予:DBA应该根据用户所需的操作来授予最小化的权限。

不要滥用权限,避免将不必要的执行权限授予用户。

2.使用角色来管理权限:角色可以将一组权限组合在一起,并赋予多个用户,使得权限管理更加灵活和高效。

当权限需要进行更改时,只需更改角色即可,而不需要逐个更改用户的权限。

3.限制外部访问:数据库服务器应该放置在安全的网络环境中,仅允许受信任的主机进行访问。

通过防火墙和访问控制列表(ACL),可以限制数据库服务器的访问。

4.定期审查权限:定期审查用户的访问权限是非常重要的。

DBA应该审查当前用户的权限,并删除不再需要的权限。

这可以确保数据库的安全性。

安全审计策略:安全审计是MySQL中一个重要的组成部分,可以有效地监控和追踪数据库的访问和操作记录。

审计日志是一种记录用户对数据库执行的操作和事件的记录,可以用于追踪和分析潜在的安全问题。

以下是一些MySQL安全审计的策略建议:1.开启审计日志记录:在MySQL配置文件中,可以设置审计日志的开启和关闭。

MySQL数据库安全解决方案

MySQL数据库安全解决方案MySQL数据库是一种常用的关系型数据库管理系统,被广泛用于网站、应用程序等领域。

然而,由于其开放性和广泛应用,MySQL数据库也常受到各种安全威胁。

为了保障数据的安全性,企业和个人需要采取一系列的措施来保护MySQL数据库。

本文将介绍一些MySQL数据库安全的解决方案,旨在帮助用户提高数据的安全性。

1.安全认证首先,确保MySQL数据库的安全认证机制是启用的。

通过在MySQL配置文件中设置合适的身份验证方法,如使用用户名和密码来进行身份验证。

此外,还可以启用SSL加密来保护数据库连接中的数据传输。

2.更新和升级及时更新和升级MySQL数据库是保护数据库安全的重要步骤。

MySQL的开发团队经常修复各种安全漏洞,并定期发布新版本。

用户应及时关注并安装更新补丁,以确保数据库不容易受到已知的安全漏洞攻击。

3.数据库备份定期备份数据库可以提供一种应对数据丢失、系统故障或恶意攻击的保护措施。

备份可以将数据库恢复到最后一次备份的状态,并尽量减少数据的丢失。

数据库备份可以通过使用MySQL内置的备份工具,如mysqldump命令,进行定期定时的备份。

4.数据访问权限控制设置合适的用户权限是保护数据库的关键。

MySQL提供了丰富的权限管理功能,可以通过GRANT和REVOKE语句来控制用户对数据库和表的访问权限。

合理划分用户角色和权限,只给予必要的权限,避免将全部权限授予所有用户。

5.强密码策略为了增加密码的复杂性和安全性,应采取一些密码策略来设置数据库用户密码。

密码长度应足够长,建议至少8个字符,并结合大小写字母、数字和特殊字符的组合。

另外,定期更改密码也是保护数据库安全的重要步骤。

6.网络安全保护数据库服务器的网络安全也十分重要。

首先,确保数据库服务器只开放必要的端口,并限制外部访问。

如果需要远程访问MySQL数据库,则应使用VPN等安全手段来保护数据传输。

此外,防火墙和入侵检测系统也是保护数据库服务器免受未经授权的访问的有效工具。

MySQL数据库管理与应用张巧荣教学第4章MySQL数据库管理

途表 ➢ 使用MEMORY存储引擎的表不会在磁盘上创建任何文件
,表的定义存储在 MySQL 数据字典中。当服务器关闭时 ,存储在表中的所有行都将丢失,表本身仍然存在。 ➢ MEMORY类型的表的最大大小受max_heap_table_size 系统变量的限制,该变量的默认值为 16MB。
4.7 数据库存储引擎
4.4 查看数据库
➢ 使用SHOW DATABASES语句查看MySQL服务器中所有 的数据库的名称。
➢ 使用SHOW CREATE DATABASE语句查看一个数据的 创建语句
➢ 语法格式: ➢ SHOW CREATE DATABASE db_name ➢ 【例4.5】查看jwgl数据库的定义。 ➢ 在MySQL命令行客户端输入命令:SHOW CREATE
语句,如图4.12所示,或者选择“Drop Now”直接删除数据 库。 ➢ 单击右下角的“Execute”按钮,完成删除。
4.6 删除数据库
➢ 4.6.2 使用图形化工具删除数据库
4.7 数据库存储引擎
➢ 4.7.1 MySQL支持的存储引擎 ➢ 可以使用SHOW ENGINES查看MySQL支持的存储引擎
循 ACID 模型,具有提交、回滚和崩溃恢复功能。 ➢ InnoDB引擎支持外键约束,可以保证相关表之间的数据
的一致性。 ➢ InnoDB引擎支持自动增长AUTO_INCREMENT列。 ➢ InnoDB引擎提供行级锁,可提高多用户并发性和性能。
4.7 数据库存储引擎
➢ 常用的存储引擎 ➢ MyISAM存储引擎 ➢ 在MySQL 5.6之前的版本中,MyISAM是默认的存储引擎
4.8 本章小结
➢ 本章主要介绍了MySQL数据库管理操作,包括创建数据 库、查看数据库、修改数据库和删除数据库,并对 MySQL的存储引擎以及常用的存储引擎的特性进行了介 绍和比较,给出了选择存储引擎的建议。

【安全测试】MySQL安全加固要点

【安全测试】MySQL安全加固要点1.修改root⽤户⼝令,删除空⼝令2.删除默认数据库和数据库⽤户3.改变默认mysql管理员帐号4.关于密码的管理5.使⽤独⽴⽤户运⾏msyql6.禁⽌远程连接数据库7.限制连接⽤户的数量8.⽤户⽬录权限限制9.命令历史记录保护10.禁⽌MySQL对本地⽂件存取11.MySQL服务器权限控制12.使⽤chroot⽅式来控制MySQL的运⾏⽬录13.关闭对⽆关的Web程序访问的⽀持14.数据库备份策略15. Mysqld安全相关启动选项rmation_schema 安全1.修改root⽤户⼝令,删除空⼝令缺省安装的MySQL的root⽤户是空密码的,为了安全起见,必须修改为强密码,所谓的强密码,⾄少8位,由字母、数字和符号组成的不规律密码。

使⽤MySQL⾃带的命令mysaladmin修改root密码,同时也可以登陆数据库,修改数据库mysql下的user表的字段内容,修改⽅法如下所⽰:# /usr/local/mysql/bin/mysqladmin -u root password “upassword” //使⽤mysqladmin#mysql> use mysql;#mysql> update user set password=password(‘upassword’) where user=’root’;#mysql> flush privileges; //强制刷新内存授权表,否则⽤的还是在内存缓冲的⼝令2.删除默认数据库和数据库⽤户⼀般情况下,MySQL数据库安装在本地,并且也只需要本地的php脚本对mysql进⾏读取,所以很多⽤户不需要,尤其是默认安装的⽤户。

MySQL初始化后会⾃动⽣成空⽤户和test库,进⾏安装的测试,这会对数据库的安全构成威胁,有必要全部删除,最后的状态只保留单个root即可,当然以后根据需要增加⽤户和数据库。

MYSQL数据库管理规范

MySQL数据库规范(设计规范+开发规范+操作规范)目录MySQL数据库规范(设计规范+开发规范+操作规范) (1)I 文档定义 (2)1.1 编写目的 (2)1.2 适用范围 (2)II . 命名设计规范 (2)2.1 总则 (2)2.2 库名 (3)2.3 表名 (3)2.4 字段名 (3)2.5 索引名 (4)2.6 视图命名 (4)2.7 存储过程命名 (4)2.8 函数命名 (4)III 数据库设计规范 (5)3.1 表设计原则 (5)3.2 字段设计原则 (6)3.3 主键设计原则 (7)3.4 索引设计原则 (8)3.5 数据库里不建议存放业务日志 (8)IV SQL设计规范 (9)4.1 避免数据类型的隐式转换 (9)4.2 避免复杂SQL (9)4.3 批量插入 (9)4.4 数据更新 (9)4.5 避免使用TRUNCATE TABLE (9)4.6 避免使用SELECT * (10)4.7 使用索引做条件查询count(*) (10)4.8 避免IN子句 (10)4.9 避免不必要的排序 (10)4.10 合理利用最左索引 (10)4.11 多表连接 (11)4.12 避免在where后的索引字段上使用函数 (11)4.13 尽量不要做’%’前缀模糊查询 (11)4.14 使用UNION ALL代替UNION (12)4.15 尽量避免OR操作 (12)4.16 MySQL 在否定条件中不能使用索引 (12)4.17 MySQL 在JOIN中连接字段类型如果不一致,则不能使用索引 (13)4.18 如果两个字段列的字符集不同,不推荐JOIN (13)V 完整性设计规范 (13)5.1 主键约束 (13)5.2 NULL值 (13)5.3 视图使用原则 (14)VI 安全性设计规范 (14)6.1 数据库账号使用规范 (14)6.2 用户与权限 (15)6.3 用户密码管理 (15)VII 开发行为规范 (15)7.1 总则 (15)7.2 避免使用触发器 (16)7.3 避免使用存储过程和函数 (16)7.4 避免使用视图 (16)VIII 其他规范 (17)8.1 编制文档 (17)8.2 维护计划规范 (17)(2)数据归档删除 (17)I 文档定义1.1 编写目的此规范依照《中国科协数据管理总纲》(暂行)、《中国科协数据标准管理办法》(暂行)、《中国科协数据质量管理办法》(暂行)制定。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录正文 (1)1研究的背景 (1)2研究的目的和意义 (1)3研究的内容 (2)3.1 MySQL数据库的安全配置 (2)3.1.1系统内部安全 (2)3.1.2外部网络安全 (4)3.2 MySQL用户帐号管理 (7)3.3 MD5加密 (11)3.3.1 数据库中数据加密的原因 (11)3.3.2 加密方式 (11)3.3.3 Md5加密原理 (12)3.3.4 具体算法 (13)4总结 (14)参考文献: (14)附录: (14)MySQL数据库安全管理摘要:MySQL是完全网络化的跨平台关系型数据库系统,同时是具有客户机/服务器体系结构的分布式数据库管理系统。

它具有功能强、使用简便、管理方便、运行速度快、安全可靠性强等优点,用户可利用许多语言编写访问MySQL数据库的程序,特别是与PHP更是黄金组合,运用十分广泛。

由于MySQL是多平台的数据库,它的默认配置要考虑各种情况下都能适用,所以在用户自己的使用环境下应该进行安全加固。

用户有责任维护MySQL数据库系统的数据安全性和完整性。

关键词:MYSQL;数据库;数据库安全;访问控制;MD5加密正文MySQL数据库的安全配置必须从两个方面入手,系统内部安全和外部网络安全;MySQL用户帐号管理主要用grant(授权)和revoke(撤权)两个SQL指令来管理;MD5在实际中的一个应用就是对数据库中的用户信息加密,当用户创建一个新的账号或者密码,他的信息不是直接保存到数据库,而是经过一次加密以后再保存,这样,即使这些信息被泄露,也不能立即理解这些信息的真正含义。

有效的提高了前台和后台的数据安全性。

1研究的背景随着计算机技术和信息技术的迅速发展。

数据库的应用十分广泛,深入到各个领域,但随之而来产生了数据的安全问题。

近年来,数据库供应商竞相为大众提供功能丰富的数据库环境,大多数主要系统都支持XML、Web服务、分布式复制、操作系统集成以及其他一些有用的功能。

与以前相比,数据库更加容易遭受到攻击,它已经成为了更有价值的攻击目标,所以需要配置更多的安全功能,管理也要更加的谨慎。

2 研究的目的和意义本文对MySQL数据库的安全配置、MySQL用户帐号管理以及使用MD5加密提高数据库前台和后台数据安全性做了详细研究。

由于MySQL是多平台的数据库,它的默认配置要考虑各种情况下都能适用,所以用户需要根据具体的环境进行相关的安全配置,通过本文的研究,对如何提高数据库的安全性有很大的帮助。

3研究的内容3.1 MySQL数据库的安全配置3.1.1系统内部安全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 infodrwxrwxr-x 3 root root 4096 Feb 27 20:07 libdrwxrwxr-x 2 root root 4096 Feb 27 20:07 libexecdrwxrwxr-x 3 root root 4096 Feb 27 20:07 manshell>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如果这些文件的属主及属性不是这样,请用以下两个命令修正之: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用户来启动,必须加上--user=root的参数(./safe_mysqld --user=root &)。

因为MySQL中有LOAD DATA INFILE和SELECT ... 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.sqlshell>/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.1.2外部网络安全MySQL数据库安装好以后,Unix平台的user表是这样的:mysql> use mysql;Database changedmysql> select Host,User,Password,Select_priv,Grant_priv from user;图 3.1.2.1 Unix平台的user表Windows平台的user表是这样的:mysql> use mysql;Database changedmysql> select Host,User,Password,Select_priv,Grant_priv from user;图 3.1.2.2 Windows平台的user表实际上Unix平台的MySQL默认只允许本机才能连接数据库。

但是缺省root用户口令是空,所以当务之急是给root用户加上口令。

相关文档
最新文档