MySQL 을 사용 하면 보안 문제 에 주의 하지 않 을 수 없습니다.다음은 MySQL 이 제시 한 23 가지 주의사항 입 니 다.1.클 라 이언 트 와 서버 의 연결 이 신뢰 할 수 없 는 네트워크 를 뛰 어 넘 고 통과 해 야 한다 면 SSH 터널 을 사용 하여 이 연결 의 통신 을 암호 화해 야 합 니 다.2.set password 문 구 를 사용 하여 사용자 의 비밀 번 호 를 수정 합 니 다.세 단계 로"my sql-u root"에서 데이터베이스 시스템 에 로그 인 한 다음"my sql>update my sql.user set password=password("newpwd")"를 실행 하고 마지막 으로"flush privileges"를 실행 하면 됩 니 다.3.주의해 야 할 공격 은 엿 듣 기,변경,재생,서비스 거부 등 이 있 고 가용성 과 잘못 사용 하 는 부분 과 관련 되 지 않 습 니 다.모든 연결,조회,기타 작업 은 ACL 즉 제어 목록 에 접근 하 는 보안 조 치 를 사용 하여 이 루어 집 니 다.SSL 연결 에 대한 지원 도 있다.4.루트 를 제외 한 다른 사용 자 는 MySQL 메 인 데이터베이스 에 있 는 user 표 에 접근 할 수 없습니다.암호 화 후 user 표 에 저 장 된 암호 화 된 사용자 비밀번호 가 누설 되면 다른 사람들 은 이 사용자 이름/비밀번호 에 해당 하 는 데이터 베 이 스 를 마음대로 사용 할 수 있 습 니 다.5.grant 와 revoke 문 구 를 사용 하여 사용자 접근 제어 작업 을 진행 합 니 다.6.명문 비밀 번 호 를 사용 하지 않 고 md5()와 sha 1()등 단 방향 하 계 함수 로 비밀 번 호 를 설정 합 니 다.7.사전에 있 는 글 자 를 사용 하여 비밀 번 호 를 만 들 지 않 는 다.8.방화벽 을 사용 하여 외부 위험 의 50%를 제거 하고 데이터 베이스 시스템 을 방화벽 뒤에 숨 어 일 하 게 하거나 DMZ 구역 에 설치한다.9.인터넷 에서 nmap 로 3306 포트 를 스 캔 해도 telnet serverhost 3306 방법 테스트 는 비 신뢰 네트워크 에서 데이터베이스 서버 의 3306 호 TCP 포트 에 접근 할 수 없 기 때문에 방화벽 이나 공유 기 에 설정 해 야 합 니 다.10.불법 매개 변수 가 악의 적 으로 들 어 오 는 것 을 방지 하기 위해 where ID=234,다른 사람 이 where ID=234 OR 1=1 을 입력 하여 모든 것 을 표시 하기 때문에 웹 폼 에'또는'문자열 을 사용 하고 동적 URL 에%22 대표 더 블 따옴표,%23 대표 우물 번호,%27 대표 따옴표 를 추가 합 니 다.검사 되 지 않 은 값 을 my sql 데이터베이스 에 전달 하 는 것 은 매우 위험 합 니 다.11.MySQL 에 데 이 터 를 전달 할 때 크기 확인 하기;12.응용 프로그램 은 데이터 베 이 스 를 연결 하려 면 일반적인 사용자 계 정 을 사용 하고 필요 한 권한 만 이 사용자 에 게 개방 해 야 합 니 다.13.각 프로 그래 밍 인터페이스(C C++PHP Perl Java JDBC 등)에서 특정한'탈출 문자'함 수 를 사용한다.인터넷 에서 my sql 데이터 베 이 스 를 사용 할 때 명문 데 이 터 를 전송 하지 않 고 SSL 과 SSH 의 암호 화 방식 데이터 로 전송 합 니 다.14.tcpdump 와 strings 도 구 를 사용 하여 전송 데이터 의 안전성 을 볼 수 있 습 니 다.예 를 들 어 tcpdump-l-i eth0-w-src or dst port 3306|strings.일반 사용자 로 my sql 데이터베이스 서 비 스 를 시작 합 니 다.15.표 의 연결 기 호 를 사용 하지 않 고 선택 한 매개 변수 Cskip-symbolic-links;16.my sql 디 렉 터 리 에서 데이터베이스 서 비 스 를 시작 하 는 사용자 만 파일 을 읽 고 쓸 수 있 는 권한 이 있다 고 확신 합 니 다.17.process 나 슈퍼 권한 을 비 관리 사용자 에 게 지불 할 수 없습니다.이 my sqladmin processlist 는 현재 실행 중인 조회 텍스트 를 열거 할 수 있 습 니 다.슈퍼 권한 은 클 라 이언 트 연결 을 차단 하고 서버 실행 매개 변수 상 태 를 바 꾸 며 데이터 베 이 스 를 복사 하 는 서버 를 제어 할 수 있 습 니 다.18.file 권한 은 관리자 이외 의 사용자 에 게 지불 하지 않 고 load data'/etc/passwd'가 표 에 다시 select 로 표시 되 는 문 제 를 방지 합 니 다.19.DNS 서비스 회사 의 서 비 스 를 믿 지 않 으 면 호스트 이름 허용 표 에 IP 숫자 주소 만 설정 할 수 있 습 니 다.20.max 사용user_connections 변 수 는 my sqld 서비스 프로 세 스 를 지정 한 계 정 에 연결 수 를 제한 합 니 다.21.grant 구문 도 자원 제어 옵션 을 지원 합 니 다.22.my sqld 서비스 프로 세 스 를 시작 하 는 보안 옵션 스위치,Clocal-infile=0 또는 1 이 0 이면 클 라 이언 트 프로그램 은 local load data 를 사용 할 수 없습니다.권한 을 부여 하 는 예 grant insert(user)on my sql.user to'username'@'host_name';Cskip-grant-tables 시스템 을 사용 하면 모든 사용자 의 접근 을 제어 하지 않 지만 my sqladmin flush-privileges 나 my sqladmin reload 로 접근 통 제 를 시작 할 수 있 습 니 다.기본 적 인 상황 은 show databases 문 구 를 모든 사용자 에 게 개방 하고 Cskip-show-databases 로 닫 을 수 있 습 니 다.23.Error 1045(28000)Access Denied for user'root'@'localhost'(Using password:NO)오류 가 발생 했 을 때 비밀 번 호 를 다시 설정 해 야 합 니 다.구체 적 인 방법 은 Cskip-grant-tables 매개 변수 로 my sqld 를 시작 한 다음 my sql-u root my sql,my sql>update user set password=password('new password')where user='root'를 실행 하 는 것 입 니 다.mysql>Flush privileges;,마지막 으로 my sql 을 다시 시작 하면 됩 니 다.