首页 数据库 mysql教程 MySQL数据库的其它安全问题

MySQL数据库的其它安全问题

Jun 07, 2016 pm 04:07 PM
mysql 安全 安全性 数据库 系统 问题

数据库系统的安全性包括很多方面。由于很多情况下,数据库服务器容许客户机从网络上连接,因此客户机连接的安全对MySQL数据库安全有很重要的影响。 不在客户机的命令行上提供密码 使用mysql、mysqladmin等客户机用一个用户身份与MySQL服务器连接时,需要为连

数据库系统的安全性包括很多方面。由于很多情况下,数据库服务器容许客户机从网络上连接,因此客户机连接的安全对MySQL数据库安全有很重要的影响。

不在客户机的命令行上提供密码

使用mysql、mysqladmin等客户机用一个用户身份与MySQL服务器连接时,需要为连接提供密码。

1可以在命令行上提供密码

shell>mysql –u root –pmypass

注意,-p选项与密码之间不可有空格,否则会提示你输入密码,并报错。

你也可以使用长格式

shell>mysql –user=root –password=mypass

现在你可以考察这样做的后果:

在Unix上,$ps –aux | grep mysql

在win9x上,你可以按住Ctrl+Alt+Del键,NT上你可以打开任务管理器。

你发现了什么,你发现密码清清楚楚的显示在你的面前。所以,你无论何时也不要这么做。

所以你需要让客户机提示你的密码:

shell>mysql –u root –p

你也可以使用选项文件提供密码,但是注意为了安全,不能在选项文件中存储密码。你可以只提供password选项,让客户机提示你输入密码。

使用SSH加密客户机连接

这是一个关于怎样用SSH 得到一个安全的连接远程MySQL服务器的注意事项(David Carlson)。

在你的windows机器上安装SSH客户 - 我使用了一个来自http://www.doc.ic.ac.uk/~ci2/ssh/的免费SSH客户。其他有用的链接:

http://www.npaci.edu/Security/npaci_security_software.html

http://www.npaci.edu/Security/samples/ssh32_windows/index.html.

启动SSH。设置主机名字 = 你的MySql服务器名或IP地址,设置userid=你的用户名登录到你的服务器。

点击“local forwords”。设定 local port: 3306, host: localhost, remote port: 3306

保存一切,否则下次你将必须再做一遍。

用SSH登录到你的服务器。

启动一些ODBC应用程序(例如Access)。

创造一个新文件并且用ODBC驱动程序链接到mySQL,就像你通常做的一样,除了对服务器用用户“localhost”。

搞定。它对一个直接的因特网连接工作得很好。

不要使用Unix的root用户运行MySQL守护进程

不要作为Unix的root用户运行MySQL守护进程。mysqld能以任何用户运行,你也可以创造一个新的Unix用户mysql使一切更安全。如果你作为其它Unix用户运行mysqld,你不需要改变在user表中的root用户名,因为MySQL用户名与Unix 用户名没关系。

你可以作为其它Unix用户编辑mysql.server启动脚本mysqld。或者使用选项文件。有关如何用非root用户启动MySQL服务器的细节,请见第二章。

数据库目录的安全

MySQL服务器提供了一个通过mysql数据库中的授权表,实现了一个十分灵活的权限系统,保证了从网络访问数据的安全性。但是,如果服务器主机上的其它用户拥有对服务器目录的直接访问权,那么你的服务器的数据仍旧是不安全的。

一般你可能用一个非特权的Unix用户执行守护程序。检查那个运行mysqld的Unix用户是唯一的在数据库目录下有读/写权限的用户。

可能的安全漏洞

显然,你不会让服务器主机上的其它用户拥有对数据库目录文件的写访问权,但是,仅仅是读访问权也非常危险。

由于象GRANT和SET PASSWORD这样的查询都被记录到日志中去了,常规和更新日志文件包含了有关密码的敏感查询文本。如果一个攻具有对这些日志的读访问权,那么他只要在日志文件中查找GRANT或PASSWORD这样的敏感单词,就很容易找到密码的明文。

对于表文件的读访问也是很危险的,窃取文件并使MySQL以及以纯文本的形式显示表的内容是微不足道的事。可以按下列步骤进行:

1、安装一个新的MySQL分发,可以是在另一台主机上,也可以就在当前的服务器主机上安装,使用与正式服务器不同的端口、套接字和数据文件。

2、将窃取的表的相应文件拷贝到新服务数据库目录中的test目录下

3、然后就可以启动作案服务器,可以随意访问所窃取表的内容。

在Unix设置合适的数据库目录权限

如果要消除这些安全漏洞,就要安排数据库目录及其中所有文件和目录的所有权,是的只有启动服务器的专用帐户才可以访问它们。操作步骤如下:

1、切换到root用户

$su

2、设置数据库目录及其中所有文件目录的所有权为运行该服务器的帐号所有,在本书中一直将这个帐号假定为mysql,把所有的组设为root组

%chown –R mysql:root DATADIR

3、修改数据库目录及其中所有文件目录的权限为只有所有者可以读写

%chmod –R go-rwx DATADIR

在NT系统中设置合适的数据库目录权限

在NT系统中的数据库目录的安全性可能比较简单:

读者可能想到,把所有目录文件改为只有某个帐户administrator例如可读写。但是,这样会有一个问题,就是这能在administrator帐户中用手动启动独立的服务器,如果让mysql系统服务自动启动的方法也不可行,解决方法是让数据库目录也可被administrators组用户读写,这样MySQL服务器就可以用系统服务的方法自动启动了,也可以在任何帐户中用net start mysql启动。

另外一个问题是,如果你在非administrators组用户中或者从网络都无法建立数据库连接,因为没有数据库目录的读的权利,如果要正常使用,还需要 写的权利。解决方法是让SYSTEM组用户能够队数据库目录读写。

由于许可证和费用的原因,通常建议你在Linux服务器上使用MySQL,在Windows平台之用来测试或者数据录入工作。但是,如果你要在Windows上使用的话,可以注意本小节的一些内容。

影响安全的mysqld选项

下列mysqld选项影响安全:

--secure

由gethostbyname()系统调用返回的IP数字被检查,确保他们解析回到原来的主机名。这对某些外人通过模仿其它主机获得存取权限变得更难。这个选项也增加一些聪明的主机名检查。在MySQL3.21里,选择缺省是关掉的,因为它有时它花很长时间执行反向解析。MySQL 3.22缓存主机名并缺省地启用了这个选项。

--skip-grant-tables

这个选项导致服务器根本不使用权限系统。这给每个人以完全存取所有的数据库的权力!(通过执行mysqladmin reload,你能告诉一个正在运行的服务器再次开始使用授权表。)

--skip-name-resolve

主机名不被解析。所有在授权表的Host的列值必须是IP数字或localhost。

--skip-networking

在网络上不允许TCP/IP连接。所有到mysqld的连接必须经由Unix套接字进行。这个选项对使用MIT-pthreads的系统是不合适的,因为MIT-pthreads包不支持Unix套接字。


本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1662
14
CakePHP 教程
1419
52
Laravel 教程
1313
25
PHP教程
1262
29
C# 教程
1235
24
laravel入门实例 laravel入门实例 Apr 18, 2025 pm 12:45 PM

Laravel 是一款 PHP 框架,用于轻松构建 Web 应用程序。它提供一系列强大的功能,包括:安装: 使用 Composer 全局安装 Laravel CLI,并在项目目录中创建应用程序。路由: 在 routes/web.php 中定义 URL 和处理函数之间的关系。视图: 在 resources/views 中创建视图以呈现应用程序的界面。数据库集成: 提供与 MySQL 等数据库的开箱即用集成,并使用迁移来创建和修改表。模型和控制器: 模型表示数据库实体,控制器处理 HTTP 请求。

MySQL和PhpMyAdmin:核心功能和功能 MySQL和PhpMyAdmin:核心功能和功能 Apr 22, 2025 am 12:12 AM

MySQL和phpMyAdmin是强大的数据库管理工具。1)MySQL用于创建数据库和表、执行DML和SQL查询。2)phpMyAdmin提供直观界面进行数据库管理、表结构管理、数据操作和用户权限管理。

MySQL与其他编程语言:一种比较 MySQL与其他编程语言:一种比较 Apr 19, 2025 am 12:22 AM

MySQL与其他编程语言相比,主要用于存储和管理数据,而其他语言如Python、Java、C 则用于逻辑处理和应用开发。 MySQL以其高性能、可扩展性和跨平台支持着称,适合数据管理需求,而其他语言在各自领域如数据分析、企业应用和系统编程中各有优势。

laravel框架安装方法 laravel框架安装方法 Apr 18, 2025 pm 12:54 PM

文章摘要:本文提供了详细分步说明,指导读者如何轻松安装 Laravel 框架。Laravel 是一个功能强大的 PHP 框架,它 упростил 和加快了 web 应用程序的开发过程。本教程涵盖了从系统要求到配置数据库和设置路由等各个方面的安装过程。通过遵循这些步骤,读者可以快速高效地为他们的 Laravel 项目打下坚实的基础。

甲骨文在商业世界中的作用 甲骨文在商业世界中的作用 Apr 23, 2025 am 12:01 AM

Oracle不仅是数据库公司,还是云计算和ERP系统的领导者。1.Oracle提供从数据库到云服务和ERP系统的全面解决方案。2.OracleCloud挑战AWS和Azure,提供IaaS、PaaS和SaaS服务。3.Oracle的ERP系统如E-BusinessSuite和FusionApplications帮助企业优化运营。

您应该多久再生一次会话ID? 您应该多久再生一次会话ID? Apr 23, 2025 am 12:03 AM

会话ID应在登录时、敏感操作前和每30分钟定期重新生成。1.登录时重新生成会话ID可防会话固定攻击。2.敏感操作前重新生成提高安全性。3.定期重新生成降低长期利用风险,但需权衡用户体验。

在MySQL中解释外键的目的。 在MySQL中解释外键的目的。 Apr 25, 2025 am 12:17 AM

在MySQL中,外键的作用是建立表与表之间的关系,确保数据的一致性和完整性。外键通过引用完整性检查和级联操作维护数据的有效性,使用时需注意性能优化和避免常见错误。

比较和对比Mysql和Mariadb。 比较和对比Mysql和Mariadb。 Apr 26, 2025 am 12:08 AM

MySQL和MariaDB的主要区别在于性能、功能和许可证:1.MySQL由Oracle开发,MariaDB是其分支。2.MariaDB在高负载环境中性能可能更好。3.MariaDB提供了更多的存储引擎和功能。4.MySQL采用双重许可证,MariaDB完全开源。选择时应考虑现有基础设施、性能需求、功能需求和许可证成本。

See all articles