广告
返回顶部
首页 > 资讯 > 数据库 >MySQL数据库的安全配置
  • 941
分享到

MySQL数据库的安全配置

2024-04-02 19:04:59 941人浏览 独家记忆
摘要

本篇内容介绍了“Mysql数据库的安全配置”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!  由于mysql

本篇内容介绍了“Mysql数据库安全配置”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

  由于mysql是多平台的数据库,它的默认配置要考虑各种情况下都能适用,所以在我们自己的使用环境下应该进行进一步的安全加固。作为一个Mysql的系统管理员,我们有责任维护MySQL数据库系统的数据安全性和完整性。

  MySQL数据库的安全配置必须从两个方面入手,系统内部安全和外部,另外我们还将简单介绍编程时要注意的一些问题以及一些小窍门。

  系统内部安全

  首先简单介绍一下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数据库的用户是,那么象如下的目录和文件的是安全的,请注意数据目录及下面的属性:

  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,那么我们的操作就不会被记录到这两个文件里了。
 外部网络安全

  MySQL数据库安装好以后,Unix平台的user表是这样的:

  mysql> use mysql;

  Database changed

  mysql> 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 changed

  mysql> 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表。其中redhat只是我试验机的机器名,所以实际上Unix平台的MySQL默认只允许本机才能连接数据库。但是缺省root用户口令是空,所以当务之急是给root用户加上口令。给数据库用户加口令有三种方法:

  1)在shell提示符下用mysqladmin命令来改root用户口令:

  shell>mysqladmin -uroot password test

  这样,MySQL数据库root用户的口令就被改成test了。(test只是举例,我们实际使用的口令一定不能使用这种易猜的弱口令)

  2)用set password修改口令:

  mysql> set password for );

  这时root用户的口令就被改成test了。

  3)直接修改user表的root用户口令:

  mysql> use mysql;

  mysql> update user set password=password(test) where user=root

“MySQL数据库的安全配置”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

您可能感兴趣的文档:

--结束END--

本文标题: MySQL数据库的安全配置

本文链接: https://www.lsjlt.com/news/59408.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL数据库的安全配置
    本篇内容介绍了“MySQL数据库的安全配置”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!  由于MySQL...
    99+
    2022-10-18
  • MySQL数据库安全配置
    这篇文章主要讲解了“MySQL数据库安全配置”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL数据库安全配置”吧!1、前言  MySQL是完全网络化的...
    99+
    2022-10-18
  • pg数据库安全配置
    数据库安全配置是数据库管理的重要环节之一。安全配置主要包括密码、网络访问控制、审计等。下面会依次讲解在瀚高数据库中如何实现密码相关的安全性配置。 1 密码加密存储 pg中密码始终以加密方式存储在系统目录中。ENCREPED 关键字没有任何效...
    99+
    2018-10-05
    pg数据库安全配置
  • MySql数据库安装及配置
    http://dev.mysql.com/downloads/mysql/官网进行下载,由于5.7没有32位的选择其它版本下载64位版本安装及配置如下截图步骤   ...
    99+
    2022-10-18
  • 【MySQL数据库】最全安装过程及配置详解
    🧛‍♂️iecne个人主页::iecne的学习日志 💡每天关注iecne的作品,一起进步 💪一起学习,必看iecne 🐳希望大家多多支持🥰一起进步呀...
    99+
    2023-08-16
    mysql 数据库 服务器
  • windows中配置安装mysql数据库
      MySql 是一种免费的关系型数据库,相较于 MsSqlServer 和 Oracle 比较轻量化,安装也很简单,而且免费不需要的版权费用,个人认为一般的小项目采用还是比较合适的,当然也有部分数据量很大的项目会采用 MySql...
    99+
    2014-10-27
    windows中配置安装mysql数据库
  • 设置MySQL数据库最安全的方法
    下面讲讲关于设置MySQL数据库最安全的方法,文字的奥妙在于贴近主题相关。所以,闲话就不谈了,我们直接看下文吧,相信看完设置MySQL数据库最安全的方法这篇文章你一定会有所受益。    ...
    99+
    2022-10-18
  • MySQL数据库安装及配置相关
    一)Centos下安装MySQL数据库安装MySql参考网址: https://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/ 因为MySQL官网有创建yu...
    99+
    2022-10-18
  • MySQL数据库如何安装与配置
    本文小编为大家详细介绍“MySQL数据库如何安装与配置”,内容详细,步骤清晰,细节处理妥当,希望这篇“MySQL数据库如何安装与配置”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1.什么是pymysqlPyMyS...
    99+
    2023-06-27
  • 【MySQL数据库原理】MySQL Community安装与配置
    目录 安装成功之后查看版本验证 1、介绍、安装与配置数据库 2、操作MySQL数据库 3、MySQL数据库原理 安装成功之后查看版本验证 SELECT VERSION();查看...
    99+
    2023-09-01
    mysql 数据库 php
  • 解压版 MySQL 数据库的安装与配置
    目录 1 下载2 安装3 配置3.1 添加环境变量3.2 新建配置文件3.3 初始化MySQL3.4 注册MySQL服务3.5 启动MySQL服务3.6 修改默认账户密码 4 登录5 卸载...
    99+
    2023-10-27
    数据库 mysql
  • django配置mysql数据库
    查看ubuntu已安装的所有软件:dpkg -l   dpkg -l | grep mysql查看软件安装的路径dpkg -L | grep mysql查看开机启动的软件,需要额外安装插件:sudo apt...
    99+
    2022-10-18
  • Linux安装配置MariaDB数据库全程详解
    MariaDB在很多方面强于MySQL,在Linux下如何安装MariaDB数据库成为大家比较头疼的一个问题,下面用实例为大家讲解下MariaDB是采用Maria存储引擎的MySQL分支版本,在很多方面强于...
    99+
    2022-10-18
  • Linux中CentOS MySQL数据库安装配置的示例
    这篇文章将为大家详细讲解有关Linux中CentOS MySQL数据库安装配置的示例,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。安装mysql数据库的笔记,分享给大家 ...
    99+
    2022-10-18
  • MySQL数据库配置详解
    下面是我生产环境中MySQL的配置详解:[mysqld]mysql服务端配置server-id=1服务ID,每个服务的服务ID不同即可log-bin=mysql-bin定义bin_log的位置和名称,mys...
    99+
    2022-10-18
  • MySQL配置数据库审计
    MySQL配置数据库审计 1 背景2 环境3 准备工作4 安装审计4.1 解压审计包4.2 查看数据库插件目录4.3 安装数据库审计插件4.3.1 复制到插件目录4.3.2 修改插件权限4.3.3 设置审计参数4.3.4 修改数据库...
    99+
    2023-08-17
    数据库 mysql java
  • 【①MySQL】浅谈数据库系统:MySQL的简介与安装配置
    前言 欢迎来到小K的MySQL专栏,本节将为大家带来MySQL的简介与安装配置的详细讲解~ 目录 前言一、数据库系统概述数据(Data)数据库(Database)数据库管理系统(Data...
    99+
    2023-09-17
    数据库 mysql java
  • Mysql数据库的安装与环境配置(版本V5.7)
    数据库的安装 一、在mysql官网下载合适的mysql数据库版本压缩包,地址如下: mysql数据库官网 二、解压mysql-5.7.35-win32.zip压缩包到安装路径下,如下图: 三、配置安...
    99+
    2023-09-20
    数据库 mysql
  • MySQL多实例数据库的安装及配置方法
    下面讲讲关于MySQL多实例数据库的安装及配置方法,文字的奥妙在于贴近主题相关。所以,闲话就不谈了,我们直接看下文吧,相信看完MySQL多实例数据库的安装及配置方法这篇文章你一定会有所受益。一、MySQL多...
    99+
    2022-10-18
  • MySQL数据库01——mysql的安装和配置(包含workbench安装,超详细)
    做大数据分析等数据行业肯定要接触数据库,Mysql是比较适合个人学习的数据库软件,本期第一章教学怎么安装和配置。 1.MySQL官网下载 先去官网下载:MySQL :: 下载 MySQL 社区服务器  社区版就可以,选上面这个,然后下载。...
    99+
    2023-10-20
    数据库 mysql 服务器 大数据 workbench
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作