Maison base de données tutoriel mysql MySQL数据库安全配置指南(一)[组图]_MySQL

MySQL数据库安全配置指南(一)[组图]_MySQL

Jun 01, 2016 pm 01:53 PM
可靠性 数据库安全 Oui

  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
total40
drwxrwxr-x2rootroot4096Feb2720:07bin
drwxrwxr-x3rootroot4096Feb2720:07include
drwxrwxr-x2rootroot4096Feb2720:07info
drwxrwxr-x3rootroot4096Feb2720:07lib
drwxrwxr-x2rootroot4096Feb2720:07libexec
drwxrwxr-x3rootroot4096Feb2720:07man
drwxrwxr-x6rootroot4096Feb2720:07mysql-test
drwxrwxr-x3rootroot4096Feb2720:07share
drwxrwxr-x7rootroot4096Feb2720:07sql-bench
drwx------4mysqlmysql4096Feb2720:07var
shell>ls-l/usr/local/mysql/var
total8
drwx------2mysqlmysql4096Feb2720:08mysql
drwx------2mysqlmysql4096Feb2720:08test
shell>ls-l/usr/local/mysql/var/mysql
total104
-rw-------1mysqlmysql0Feb2720:08columns_priv.MYD
-rw-------1mysqlmysql1024Feb2720:08columns_priv.MYI
-rw-------1mysqlmysql8778Feb2720:08columns_priv.frm
-rw-------1mysqlmysql302Feb2720:08db.MYD
-rw-------1mysqlmysql3072Feb2720:08db.MYI
-rw-------1mysqlmysql8982Feb2720:08db.frm
-rw-------1mysqlmysql0Feb2720:08func.MYD
-rw-------1mysqlmysql1024Feb2720:08func.MYI
-rw-------1mysqlmysql8641Feb2720:08func.frm
-rw-------1mysqlmysql0Feb2720:08host.MYD
-rw-------1mysqlmysql1024Feb2720:08host.MYI
-rw-------1mysqlmysql8958Feb2720:08host.frm
-rw-------1mysqlmysql0Feb2720:08tables_priv.MYD
-rw-------1mysqlmysql1024Feb2720:08tables_priv.MYI
-rw-------1mysqlmysql8877Feb2720:08tables_priv.frm
-rw-------1mysqlmysql428Feb2720:08user.MYD
-rw-------1mysqlmysql2048Feb2720:08user.MYI
-rw-------1mysqlmysql9148Feb2720:08user.frm
如果这些文件的属主及属性不是这样,请用以下两个命令修正之:
shell>chown-Rmysql.mysql/usr/local/mysql/var
shell>chmod-Rgo-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不能覆盖已经存在的文件。

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

20 meilleures pratiques pour Java ActiveMQ 20 meilleures pratiques pour Java ActiveMQ Feb 20, 2024 pm 09:48 PM

1. Choisissez le protocole de transport client approprié ActiveMQ prend en charge une variété de protocoles de transport client, notamment STOMP, AMQP et OpenWire. Choisissez le bon protocole en fonction des besoins de votre application pour optimiser les performances et la fiabilité. 2. Configurez la persistance des messages. Les messages persistants persistent même après le redémarrage du serveur, contrairement aux messages non persistants. Pour les messages critiques, choisissez la persistance pour garantir une livraison fiable. Code de démonstration : //Définir la persistance des messages MessageProducerproducer=session.createProducer(destination);producer.setDeliveryMode(Deliv

Introduction au développement de systèmes embarqués C++ : création d'applications embarquées hautement fiables Introduction au développement de systèmes embarqués C++ : création d'applications embarquées hautement fiables Nov 27, 2023 am 11:06 AM

Les systèmes embarqués font référence à des applications qui s'exécutent sur des plates-formes matérielles spécifiques et sont généralement utilisées pour contrôler, surveiller et traiter divers appareils et systèmes. En tant que langage de programmation puissant, le C++ est largement utilisé dans le développement de systèmes embarqués. Cet article présentera les concepts et techniques de base du développement de systèmes embarqués C++ et comment créer des applications embarquées de haute fiabilité. 1. Présentation du développement de systèmes embarqués Le développement de systèmes embarqués nécessite une certaine compréhension de la plate-forme matérielle, car les applications embarquées doivent interagir directement avec le matériel. En plus des plates-formes matérielles, les systèmes embarqués

Comment la connexion à la base de données Java résout-elle les problèmes de sécurité ? Comment la connexion à la base de données Java résout-elle les problèmes de sécurité ? Apr 16, 2024 pm 03:12 PM

Solution de sécurité de connexion à la base de données Java : Cryptage JDBC : utilisez la connexion SSL/TLS pour protéger la sécurité de la transmission des données. Pool de connexions : réutilisez les connexions, limitez la consommation des ressources et évitez la surutilisation. Restreindre l'accès : accordez aux applications uniquement les autorisations minimales nécessaires pour éviter les fuites de données. Défense contre l'injection SQL : utilisez des requêtes paramétrées et la validation des entrées pour vous défendre contre les attaques malveillantes.

Comment prévenir les attaques par injection SQL ? Comment prévenir les attaques par injection SQL ? May 13, 2023 am 08:15 AM

Avec la popularité d’Internet et l’expansion continue des scénarios d’application, nous utilisons de plus en plus souvent des bases de données dans notre vie quotidienne. Cependant, les problèmes de sécurité des bases de données font également l’objet d’une attention croissante. Parmi eux, l’attaque par injection SQL est une méthode d’attaque courante et dangereuse. Cet article présentera les principes, les inconvénients et comment prévenir les attaques par injection SQL. 1. Principes des attaques par injection SQL Les attaques par injection SQL font généralement référence au comportement de pirates informatiques exécutant des instructions SQL malveillantes dans des applications en construisant des entrées malveillantes spécifiques. Ces comportements conduisent parfois à

Prévention des attaques par injection SQL : stratégies de sécurité pour protéger les bases de données d'applications Java Prévention des attaques par injection SQL : stratégies de sécurité pour protéger les bases de données d'applications Java Jun 30, 2023 pm 10:21 PM

Sécurité des bases de données : stratégies pour protéger les applications Java contre les attaques par injection SQL Résumé : Avec le développement d'Internet, les applications Java jouent un rôle de plus en plus important dans nos vies et notre travail. Cependant, dans le même temps, les problèmes de sécurité des bases de données sont devenus de plus en plus importants. Les attaques par injection SQL constituent l’une des vulnérabilités de sécurité des bases de données les plus courantes et les plus dévastatrices. Cet article présentera quelques stratégies et mesures pour protéger les applications Java contre la menace d'attaques par injection SQL. Partie 1 : Qu'est-ce qu'une attaque par injection SQL ? Injection SQL

Précautions à prendre pour supprimer les fichiers de base de données DreamWeaver CMS Précautions à prendre pour supprimer les fichiers de base de données DreamWeaver CMS Mar 13, 2024 pm 09:27 PM

Titre : Points à noter lors de la suppression des fichiers de base de données de Dreamweaver CMS En tant qu'outil de construction de sites Web populaire, la suppression des fichiers de base de données de Dreamweaver CMS est l'un des problèmes souvent rencontrés lors de la maintenance de sites Web. Des opérations de suppression de fichiers de base de données incorrectes peuvent entraîner une perte de données sur le site Web ou un dysfonctionnement du site Web. Par conséquent, nous devons être extrêmement prudents lors de l’exécution d’opérations de suppression de fichiers de base de données. Ce qui suit présente les précautions à prendre pour supprimer les fichiers de base de données Dreamweaver CMS et fournit des exemples de code spécifiques pour vous aider à supprimer correctement les fichiers de base de données. Remarque : préparez-vous

Développer des applications en ligne de commande PHP fiables Développer des applications en ligne de commande PHP fiables May 24, 2023 am 08:53 AM

Avec l'avancement et le développement continus de la technologie Internet, de plus en plus d'applications et de services Web ont été développés. Afin de gérer ces applications et services plus efficacement, de plus en plus de développeurs commencent à utiliser des applications en ligne de commande PHP pour la gestion et les opérations. Cependant, développer des applications PHP fiables en ligne de commande est très difficile. Dans cet article, nous explorerons comment développer des applications en ligne de commande PHP fiables. 1. Choisissez le bon framework Choisir un framework approprié est la première étape du développement d'applications PHP fiables en ligne de commande. exister

Résumé de l'expérience en matière d'application MySQL et de projets de sécurité dans le domaine financier Résumé de l'expérience en matière d'application MySQL et de projets de sécurité dans le domaine financier Nov 03, 2023 am 09:00 AM

Résumé de l'expérience des applications MySQL et des projets de sécurité dans le domaine financier Introduction : Avec le développement de la technologie et la croissance rapide du secteur financier, l'application de la technologie des bases de données dans le domaine financier est devenue de plus en plus importante. En tant que système de gestion de bases de données relationnelles open source mature, MySQL est largement utilisé dans le stockage et le traitement des données par les institutions financières. Cet article résumera l'application de MySQL dans le domaine financier et analysera l'expérience et les leçons apprises dans les projets de sécurité. 1. Application de MySQL dans le domaine financier Le stockage et le traitement des données sont généralement requis par les institutions financières

See all articles