MySQL数据库安全配置指南(一)[组图]_MySQL
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不能覆盖已经存在的文件。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









1. 適切なクライアント トランスポート プロトコルを選択します。 ActiveMQ は、STOMP、AMQP、OpenWire などのさまざまなクライアント トランスポート プロトコルをサポートします。パフォーマンスと信頼性を最適化するために、アプリケーションのニーズに基づいて適切なプロトコルを選択してください。 2. メッセージの永続性の構成: 永続的なメッセージはサーバーの再起動後も永続化されますが、非永続的なメッセージは永続化されません。重要なメッセージの場合は、信頼性の高い配信を保証するために永続性を選択します。デモ コード: //メッセージの永続性を設定します。 MessageProducerProducer=session.createProducer(destination);Producer.setdeliveryMode(Deliv)

組み込みシステムとは、特定のハードウェア プラットフォーム上で実行されるアプリケーションを指し、通常はさまざまなデバイスやシステムの制御、監視、処理に使用されます。 C++ は強力なプログラミング言語として、組み込みシステム開発で広く使用されています。この記事では、C++ 組み込みシステム開発の基本的な概念と手法、および信頼性の高い組み込みアプリケーションの作成方法を紹介します。 1. 組込みシステム開発の概要 組込みアプリケーションはハードウェアと直接対話する必要があるため、組込みシステム開発ではハードウェア プラットフォームについてある程度の理解が必要です。ハードウェアプラットフォームに加えて、組み込みシステム

Java データベース接続セキュリティ ソリューション: JDBC 暗号化: SSL/TLS 接続を使用してデータ送信のセキュリティを保護します。接続プール: 接続を再利用し、リソースの消費を制限し、過剰使用を防ぎます。アクセスを制限する: データ漏洩を防ぐために、必要最小限のアクセス許可のみをアプリケーションに付与します。 SQL インジェクションに対する防御: パラメーター化されたクエリと入力検証を使用して、悪意のある攻撃から防御します。

インターネットの普及とアプリケーション シナリオの継続的な拡大により、私たちは日常生活でデータベースを使用する機会がますます増えています。ただし、データベースのセキュリティ問題にも注目が集まっています。中でもSQLインジェクション攻撃は一般的かつ危険な攻撃手法です。この記事では、SQL インジェクション攻撃の原理、被害、防止方法を紹介します。 1. SQL インジェクション攻撃の原則 SQL インジェクション攻撃とは、一般に、特定の悪意のある入力を構築することによって、アプリケーション内で悪意のある SQL ステートメントを実行するハッカーの動作を指します。これらの行動は、場合によっては次のような問題につながることがあります。

タイトル: Dreamweaver CMS のデータベースファイルを削除する際の注意点 Web サイト構築ツールとして人気のある Dreamweaver CMS のデータベースファイルの削除は、Web サイトのメンテナンスでよく遭遇する問題の 1 つです。データベース ファイルの削除操作を誤ると、Web サイトのデータが損失したり、Web サイトが正常に機能しなくなる可能性があるため、データベース ファイルの削除操作を実行する場合は細心の注意が必要です。ここでは、Dreamweaver CMS データベース ファイルを削除する際の注意事項と、データベース ファイルを正しく削除するための具体的なコード例をいくつか紹介します。注:準備してください

データベース セキュリティ: SQL インジェクション攻撃から Java アプリケーションを保護する戦略 概要: インターネットの発展に伴い、Java アプリケーションは私たちの生活や仕事においてますます重要な役割を果たしています。しかし同時に、データベースのセキュリティ問題もますます顕著になってきています。 SQL インジェクション攻撃は、データベース セキュリティの最も一般的かつ壊滅的な脆弱性の 1 つです。この記事では、SQL インジェクション攻撃の脅威から Java アプリケーションを保護するための戦略と対策を紹介します。パート 1: SQL インジェクション攻撃とは何ですか? SQLインジェクション

MySQL のユーザー権限管理を使用してデータベースのセキュリティを保護する方法 はじめに MySQL は、広く使用されているオープンソースのリレーショナル データベース管理システムであり、データベースのセキュリティを保護するために、ユーザー権限管理機能を提供します。ユーザー権限を適切に設定することで、データベースのセキュリティ管理を実現し、悪意のある操作や不正アクセスを防ぐことができます。この記事では、MySQL のユーザー権限管理を使用してデータベースのセキュリティを保護する方法を紹介し、デモンストレーション用のコード例を示します。ユーザーと権限の作成 まず、root アカウントを使用して MyS にログインします。

金融分野における MySQL アプリケーションとセキュリティ プロジェクトの経験の概要 はじめに: テクノロジーの発展と金融業界の急速な成長に伴い、金融分野におけるデータベース テクノロジーの応用はますます重要になってきています。 MySQL は、成熟したオープンソースのリレーショナル データベース管理システムとして、金融機関によるデータの保存と処理に広く使用されています。この記事では、金融分野における MySQL のアプリケーションを要約し、セキュリティ プロジェクトで得られた経験と教訓を分析します。 1. 金融分野での MySQL の適用 データの保存と処理は通常、金融機関によって要求されます
