MySQL을 사용할 때 보안 문제는 무시할 수 없습니다. 다음은 MySQL이 표시하는 23가지 참고 사항입니다.
1. 클라이언트와 서버 간의 연결이 신뢰할 수 없는 네트워크에 걸쳐서 통과해야 하는 경우 SSH 터널을 사용하여 연결 통신을 암호화해야 합니다.
2. 사용자의 비밀번호를 변경하려면 set 비밀번호 문을 사용하십시오. 먼저 "mysql -u root"를 사용하여 데이터베이스 시스템에 로그인한 다음 "mysql> update mysql.user set 비밀번호=password('newpwd')"를 사용하여 로그인하십시오. , 그리고 마지막으로 "플러시" 권한을 실행하면 됩니다.
3. 보호해야 할 공격에는 가용성 및 내결함성과 관련되지 않은 도청 방지, 변조, 재생, 서비스 거부 등이 포함됩니다. 모든 연결, 쿼리 및 기타 작업은 ACL(액세스 제어 목록) 기반 보안 조치를 사용하여 완료됩니다. SSL 연결도 일부 지원됩니다.
4. 루트 사용자를 제외한 다른 사용자는 mysql 메인 데이터베이스의 사용자 테이블에 접근할 수 없습니다.
사용자 테이블에 저장된 암호화된 사용자 비밀번호가 유출되면 다른 사용자가 해당 사용자 이름/비밀번호로 해당 데이터베이스를 마음대로 사용할 수 있습니다. ;
5. 사용자 액세스 제어를 수행하려면 승인 및 취소 문을 사용하십시오.
6. 일반 텍스트 비밀번호를 사용하지 말고 md5() 및 sha1()과 같은 단방향 해시 함수를 사용하여 비밀번호를 사용
하지 마십시오
. 8.방화벽
을 사용하여 외부 위험의 50%를 제거하고 데이터베이스 시스템이 방화벽 뒤에서 작동하도록 하거나 DMZ 영역에 배치합니다.
9. 인터넷에서 포트 3306을 검색하려면 nmap을 사용합니다
.또는 telnet server_host를 사용하십시오. 3306 방법 테스트는 신뢰할 수 없는 네트워크에서 데이터베이스 서버의 TCP 포트 3306에 대한 액세스를 허용하지 않으므로 방화벽이나 라우터에 대한 설정이 필요합니다.
10. 불법적인 매개변수가 악의적으로 전달되는 것을 방지하려면
;, where ID=234, other 등 그러나 ID=234 OR 1=1이면 모두 표시되므로 웹 양식에서 문자열을 사용하려면 '' 또는 ""를 사용하고 동적 URL에 %22를 추가하여 나타냅니다. 큰 따옴표, 파운드 기호를 나타내는 %27 및 작은 따옴표를 나타냅니다. 확인되지 않은 값을 mysql 데이터베이스에 전달하는 것은 매우 위험합니다.
11.
mysql에 데이터를 전달할 때 크기를 확인하십시오.
데이터베이스에 연결하려면 일반 사용자 계정을 사용해야 하며 필요한 몇 가지 계정만 열어야 합니다. 권한은 사용자에게 제공됩니다.
13. 다양한 프로그래밍 인터페이스(C C++ PHP Perl Java JDBC 등)에서 특정 '이스케이프 문자' 기능을 사용합니다.
인터넷에서 mysql 데이터베이스를 사용할 때는 반드시 덜 일반 텍스트 데이터를 전송하고 SSL 및 SSH를 사용해야 합니다.
14. tcpdump -l과 같은 전송된 데이터의 보안을 확인하는 문자열 도구를 사용하는 방법을 알아보세요
.-i eth0 -w -src 또는 dst 포트 3306 문자열. 일반 사용자로 mysql 데이터베이스 서비스를 시작합니다.
15. 테이블에 링크 기호를 사용하지 말고 --skip-symbolic-links 매개변수를 선택합니다.
16. mysql 디렉터리에서 데이터베이스 서비스를 시작하는 사용자만 확인합니다. 파일을 읽고 읽을 수 있습니다.
17. 관리자가 아닌 사용자에게는 프로세스 또는 슈퍼 권한을 부여할 수 없습니다. mysqladmin 프로세스 목록은 클라이언트 연결을 끊는 데 사용할 수 있습니다. 서버 운영 매개 변수 및 제어 복사 및 복제 데이터베이스의 상태
18. '/etc/passwd' 데이터를 테이블에 로드한 후 선택을 사용하여 표시하는 문제를 방지하기 위해 관리자 이외의 사용자에게는 파일 권한이 부여되지 않습니다. 19.
DNS 서비스 회사의 서비스를 신뢰하지 않는 경우 이름 권한 테이블에 IP 숫자 주소만 설정할 수 있습니다.
20. max_user_connections 변수를 사용하여 mysqld 서비스 프로세스를 활성화하여 연결 수를 제한합니다.
21. grant문
은 리소스 제어 옵션도 지원합니다.
22. mysqld 서비스 프로세스의 보안 옵션 스위치 --local-infile=0 또는 1을 시작합니다. 0인 경우 클라이언트 프로그램은 로컬 로드를 사용할 수 없습니다. data. mysql.user에서 'user_name'@'host_name' 에 대한 grant insert(user)의 예 - Skip-grant-tables 시스템은 모든 사용자의 액세스에 대한 액세스 제어를 구현하지 않지만 다음을 사용할 수 있습니다. mysqladmin flash-privileges 또는 mysqladmin reload를 사용하면 기본적으로 액세스 제어가 활성화되며 showdatabases 문은 모든 사용자에게 공개되며 --skip-show-databases를 사용하여 이를 끌 수 있습니다.
23. 'root'@'localhost' 사용자에 대한 오류 1045(28000) 액세스 거부(비밀번호 사용:NO) 오류가 발생하는 경우 구체적인 방법은 다음과 같습니다. 먼저 --skip-grant로 시작합니다. -tables 매개변수 mysqld를 실행한 다음 mysql -u root mysql,mysql>update user set 비밀번호=password('newpassword') where user='root';mysql>Flush 특권;을 실행하고 마지막으로 mysql을 다시 시작합니다.