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 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

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 인젝션 공격의 원리와 폐해, 그리고 SQL 인젝션 공격을 예방하는 방법을 소개합니다. 1. SQL 인젝션 공격의 원리 SQL 인젝션 공격은 일반적으로 해커가 특정 악성 입력을 구성하여 애플리케이션에서 악의적인 SQL 문을 실행하는 행위를 의미합니다. 이러한 행동은 때때로 다음과 같은 결과를 초래합니다.

데이터베이스 보안: SQL 주입 공격으로부터 Java 애플리케이션을 보호하기 위한 전략 요약: 인터넷이 발전하면서 Java 애플리케이션은 우리의 삶과 업무에서 점점 더 중요한 역할을 하고 있습니다. 그러나 동시에 데이터베이스 보안 문제가 점점 더 두드러지고 있습니다. SQL 주입 공격은 가장 흔하고 파괴적인 데이터베이스 보안 취약점 중 하나입니다. 이 기사에서는 SQL 주입 공격의 위협으로부터 Java 애플리케이션을 보호하기 위한 몇 가지 전략과 조치를 소개합니다. 1부: SQL 주입 공격이란 무엇입니까? SQL 주입

제목: Dreamweaver CMS의 데이터베이스 파일 삭제 시 주의 사항 인기 있는 웹 사이트 구축 도구인 Dreamweaver CMS의 데이터베이스 파일 삭제는 웹 사이트 유지 관리 시 자주 발생하는 문제 중 하나입니다. 잘못된 데이터베이스 파일 삭제 작업으로 인해 웹사이트 데이터가 손실되거나 웹사이트가 제대로 작동하지 않을 수 있습니다. 따라서 데이터베이스 파일 삭제 작업을 수행할 때는 매우 주의해야 합니다. 다음에서는 Dreamweaver CMS 데이터베이스 파일 삭제 시 주의 사항을 소개하고 데이터베이스 파일을 올바르게 삭제하는 데 도움이 되는 몇 가지 특정 코드 예제를 제공합니다. 참고: 준비하다

인터넷 기술의 지속적인 발전과 발전으로 인해 점점 더 많은 웹 애플리케이션과 서비스가 개발되었습니다. 이러한 애플리케이션과 서비스를 보다 효율적으로 관리하기 위해 점점 더 많은 개발자가 관리 및 운영에 PHP 명령줄 애플리케이션을 사용하기 시작하고 있습니다. 그러나 안정적인 PHP 명령줄 애플리케이션을 개발하는 것은 매우 어렵습니다. 이 기사에서는 안정적인 PHP 명령줄 애플리케이션을 개발하는 방법을 살펴보겠습니다. 1. 올바른 프레임워크 선택 적합한 프레임워크를 선택하는 것은 안정적인 PHP 명령줄 애플리케이션을 개발하는 첫 번째 단계입니다. 존재하다

금융분야 MySQL 적용 및 보안 프로젝트 경험 요약 서론: 기술의 발전과 금융산업의 급속한 성장으로 인해 금융분야에서 데이터베이스 기술의 적용이 점점 더 중요해지고 있습니다. 성숙한 오픈 소스 관계형 데이터베이스 관리 시스템인 MySQL은 금융 기관의 데이터 저장 및 처리에 널리 사용됩니다. 이 기사에서는 금융 분야에서 MySQL의 적용을 요약하고 보안 프로젝트에서 얻은 경험과 교훈을 분석합니다. 1. 금융분야에서의 MySQL 활용 일반적으로 금융기관에서는 데이터 저장 및 처리를 요구합니다.
