首页 > 语言 > 关键词  > MySQL最新资讯  > 正文

MySQL数据库安全配置

2008-05-09 09:54 · 稿源:互联网

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/mysql
total 40
drwxrwxr-x 2 root root 4096 Feb 27 20:07 bin
drwxrwxr-x 3 root root 4096 Feb 27 20:07 include
drwxrwxr-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 root 4096 Feb 27 20:07 man
drwxrwxr-x 6 root root 4096 Feb 27 20:07 mysql-test
drwxrwxr-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 var
shell>ls -l /usr/local/mysql/var
total 8
drwx------ 2 mysql mysql 4096 Feb 27 20:08 mysql
drwx------ 2 mysql mysql 4096 Feb 27 20:08 test
shell>ls -l /usr/local/mysql/var/mysql
total 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/var
shell>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.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_history
shell>ln -s /dev/null .bash_history
shell>ln -s /dev/null .mysql_history

上门这两条命令把这两个文件链接到/dev/null,那么我们的操作就不会被记录到这两个文件里了。

举报

  • 相关推荐
  • 忆联 Docker+MySQL 流控方案:打造安全高效存储底座,释放 AI 极致性能

    文章探讨了在AI时代背景下,基于Docker部署MySQL数据库的高效解决方案。通过Docker容器化技术,MySQL实现了灵活部署、资源高效利用和稳定隔离性,成为AI应用的首选数据库方案。测试结果显示,采用PCIe5.0企业级SSD配合Namespace技术和QoS优化策略,能精准控制性能偏差在2%以内,在混合读写场景下更可控制在1%以内。该方案显著提升了存储资源管理效率,为AI应用提供稳定可靠的数据存储支持,同时降低企业TCO成本,推动数据价值释放。

  • 金仓数据库26周年|淬火砺重器,万里再扬帆

    金仓数据库26年发展历程:从萨师煊教授70年代引入数据库概念,到王珊教授团队1999年创立金仓公司实现产业化突破,见证了中国数据库从无到有的发展。金仓坚持自主创新,打造KES融合数据库产品体系,拥有700多项专利,服务金融、能源等国家重点行业,装机量超百万套。公司构建产学研生态,培养数万名专业人才,推动国产数据库生态建设。站在新起点,金仓将继续以自主可控技术支撑千行百业数字化转型,助力数字中国建设。

  • 国产化标杆!金仓数据库助力一汽奔腾核心业务数字化转型

    一汽奔腾在数字化转型中面临国外数据库系统的三大挑战:性能瓶颈、数据安全隐患和成本压力。通过国产数据库替换,实现千万级数据无缝迁移,采用智能转换工具缩短适配周期,完成核心系统改造。成效显著:数据主权回归,安全漏洞归零,订单处理峰值能力提升;成本结构优化,年节省可观;技术团队本土化。该项目为汽车行业提供了国产替代标杆,推动行业从技术跟跑向标准制定转变,目前正联合开发车联网专用数据库引擎,深化智能驾驶数据分析等场景应用。

  • 水库视频监测、多地泵站远程管理,贝锐蒲公英如何打通水利数据回传?

    文章探讨了智慧水利系统建设面临的四大挑战:1)偏远监测站点有线网络接入困难,无线信号不稳定;2)传统专线组网成本高昂;3)设备分散导致运维复杂;4)水利数据存在安全风险。针对这些问题,贝锐蒲公英提出基于SD-WAN的异地组网解决方案,通过工业路由器实现4G/5G快速接入,支持双网备份确保在线率,显著降低组网成本。该方案具备云端部署、远程集中运维能力,提供完善的数据加密传输和权限管理体系,已成功应用于水文监测、水库大坝安全监控、灌区智能灌溉及城市供排水管网监测等多个场景,助力水利行业数字化转型。

  • 哪个网站的AI产品库最全?最全AI工具网站平台推荐

    本文介绍了AI工具爆发式增长背景下,全面及时的AI产品库的重要性。重点推荐AIbase平台,该平台收录7000+AI产品,覆盖30+功能分类,支持多维度筛选,数据实时更新。AIbase优势包括:1)全品类覆盖;2)开发者友好,提供API接口;3)个性化体验,支持收藏和导出工具清单。适合内容创作者、开发者、学生等各类用户使用。通过AIbase可快速找到适合的AI工具,提升工作效率。访问�

  • 小米YU7公布全新配色“流金粉”:八大配置全系标配

    今日上午,小米汽车官方带来关于旗下新车小米YU7的最新消息,该车即将上市,同时公布了全新配色“流金粉”以及八大全系标配内容,引发市场广泛讨论。 此次小米YU7推出的“流金粉”配色独具特色,其灵感源自破晓时刻的日照金山。在粉色漆面基底之上,巧妙叠加浅金色金属颗粒,营造出别具一格的视觉效果,为消费者提供了新的个性化选择。

  • 从全自动化干细胞库迈向智能产业链:博雅生命引领产业风向标

    全球细胞治疗市场呈现爆发式增长,预计2026年行业规模将突破数百亿美元。技术进步、老龄化疾病谱变化及精准医疗需求是主要驱动力。博雅生命作为行业代表企业,2012年率先打造全自动干细胞库并通过国际AABB认证,持续12年保持认证。其自动化技术平台通过机械臂模拟人工操作,提升细胞处理精准度和效率,实现从样本输入到产品输出的全流程自动化,降低污染风险。公司构建了"自动化医疗器械-生命银行-新药研发"的完整产业链,推动细胞治疗产业化发展。未来,博雅将在干细胞临床转化、创新药物研发等领域全面拓展,以科技创新改善人类健康。

  • 2025年国外AI工具排名TOP10|全球热门AI工具全面解析 + 最全AI工具库推荐

    文章介绍了2025年国外AI工具Top10榜单,包括ChatGPT(对话生成)、Claude(长文本处理)、Midjourney(图像生成)、Gemini(多模态生成)、GitHub C opilot(编程辅助)、Notion AI(知识管理)、Perplexity AI(智能搜索)、Runway ML(视频编辑)、ElevenLabs(语音合成)和Descript(音视频编辑)。推荐使用AIbase平台一站式查找和管理AI工具,该平台收录上千款工具,支持智能搜索分类,提供中文界面和实时更新。建议用户关�

  • 如何用指令句式让豆包生成个性化学生评语库

    本文介绍如何利用豆包工具快速生成个性化期末评语库。操作步骤包括:1.登录豆包平台输入详细指令,要求生成50名本科生的A级评语,内容需涵盖学术亮点、改进建议和假期规划,确保个性化差异度高于30%;2.检查生成结果是否符合要求;3.通过细化指令优化不满意内容,如突出学科优势或提供更具体学习方法建议。该工具能帮助教师高效完成评语撰写,节省时间精力。

  • 火山引擎AICC机密计算,助力蔚来智能时代数据安全

    文章探讨了智能汽车时代数据安全与隐私保护的挑战。蔚来汽车通过火山引擎Jeddak AICC机密计算平台,构建端云协同的安全防护体系,实现用户数据全链路保护。智能座舱从被动感知向主动认知升级,需要处理大量个性化数据,这对数据合规提出更高要求。面对全球化业务拓展中的合规效率问题,蔚来系统性构建技术驱动型数据安全合规框架,将隐私保护机制融入具体场景架构。专家指出,智能时代需要突破性隐私保护技术,行业需协同共建数据安全新防线。