데이터베이스에 연결하고 일부 쿼리를 실행하는 쉘 스크립트를 만들었습니다.
#/!bin/bash
...
...
mysql -h remote -u root --password='pw' MatchingDB
some SQL queries
내 질문은 이 연결이 보안 연결로 간주되며 공격자가 내가 원격 데이터베이스에 보내는 쿼리를 스니핑하거나 내가 보내는 쿼리를 변경할 수 있다는 것입니다.
답변1
예, 하지만 명령줄에 비밀번호를 제공하지 마세요. 명령줄 스위치에서 비밀번호를 생략하면 비밀번호를 묻는 메시지가 표시됩니다.
예
$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 227743
Server version: 5.0.95 Source distribution
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
비밀번호를 안전하게 처리하세요
권장 사항은 MySQL 설명서를 확인하세요. 페이지 제목은 다음과 같습니다.6.1.2.1 최종 사용자 비밀번호 보안 지침다양한 방법을 강조하고 각 방법의 장점과 단점을 논의합니다.
논의된 옵션 중에서 옵션 파일을 사용할 수 있습니다.
발췌
옵션 파일에 비밀번호를 저장하십시오. 예를 들어 Unix에서는 홈 디렉터리에 있는 .my.cnf 파일의 [client] 섹션에 비밀번호를 나열할 수 있습니다.
[client] password=your_pass
비밀번호를 안전하게 유지하기 위해 본인 외에는 누구도 파일에 접근할 수 없습니다. 이를 보장하려면 파일 액세스 모드를 400 또는 600으로 설정하십시오. 예를 들어:
shell> chmod 600 .my.cnf shell> mysql --defaults-file=/home/francis/mysql-opts
논의된 모든 방법에는 보안 관점에서 볼 때 문제가 있지만 이러한 방법을 실행하는 디렉터리가 액세스 권한이 있는 다른 디렉터리와 격리되어 있다고 가정하면 위험이 가장 낮을 것입니다.
볼트를 사용하세요
당신이 하려는 작업이 "프로덕션 준비" 설치라고 부르는 것이라면 암호화 라이브러리를 사용하는 것이 실제로 적절한 메커니즘입니다. 이에 대한 자세한 내용은 다음 제목의 MySQL 기사에서 확인할 수 있습니다.5.3.6 비밀번호 저장소.
Linux, 특히 GNOME에서는 GNOME 데몬을 사용합니다 gnome-keyring
.
인용하다
답변2
연결에 대해 SSL 지원을 활성화해야 할 수도 있습니다.
서버에서 mysqld
지원하는지 확인하려면 SSL
시스템 변수의 값을 확인하세요 have_ssl
.
mysql> SHOW VARIABLES LIKE 'have_ssl';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| have_ssl | YES |
+---------------+-------+
값이예, 서버 지원SSL 프로토콜연결하다. 값이장애를 입히다, 서버는유능한SSL 연결은 지원되지만 --ssl-xxx
이를 사용하는 적절한 옵션은 아직 제공되지 않습니다.
아마도 다음에서 확인하세요.여기SSL을 지원하는 mysql 서버를 설정하는 방법에 대해 설명합니다.