18.5.11.3 MySQL Cluster와 MySQL의 보안 절차
이 섹션에서는 실행중인 MySQL Cluster에 적용되는 MySQL 표준 보안 지침을 제공합니다.
일반적으로 MySQL을 안전하게 수행하기위한 표준 절차는 MySQL Cluster의 일부로 실행중인 MySQL 서버에도 적용됩니다. 무엇보다도 항상 MySQL 서버를 mysql
시스템 사용자로 실행하도록하십시오. 이것은 표준 (비 클러스터) 환경에서 실행중인 MySQL과 차이가 없습니다. mysql
시스템 계정은 고유하고 명확하게 정의되어야합니다. 다행히 이것은 새로운 MySQL 설치의 기본 동작입니다. 다음과 같은 시스템 명령을 사용하면 mysqld 프로세스가 시스템 사용자 mysql
로 실행되는 것을 확인할 수 있습니다.
shell> ps aux | grep mysql
root 10467 0.0 0.1 3616 1380 pts/3 S 11:53 0:00 \
/bin/sh ./mysqld_safe --ndbcluster --ndb-connectstring=localhost:1186
mysql 10512 0.2 2.5 58528 26636 pts/3 Sl 11:53 0:00 \
/usr/local/mysql/libexec/mysqld --basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/var --user=mysql --ndbcluster \
--ndb-connectstring=localhost:1186 --pid-file=/usr/local/mysql/var/mothra.pid \
--log-error=/usr/local/mysql/var/mothra.err
jon 10579 0.0 0.0 2736 688 pts/0 S+ 11:54 0:00 grep mysql
mysqld 프로세스가 mysql
아닌 사용자로 실행되는 경우, 그것을 즉시 종료하고 mysql
사용자로 다시 시작하도록하십시오. 이 사용자가 시스템에 존재하지 않는 경우는 mysql
사용자 계정을 만들고이 사용자를 mysql
사용자 그룹에 속하게하십시오. 이 경우이 시스템에서 (mysqld의 --datadir
옵션을 사용하여 설정된) MySQL 데이터 디렉토리가 mysql
사용자에 의해 소유되고 있는지, 그리고 SQL 노드의 my.cnf
파일의 [mysqld]
섹션에 user=mysql
이 포함되어 있는지 확인하도록하십시오. 또한 명령 행에서 --user=mysql
을 붙여 MySQL 서버 프로세스를 시작할 수 있지만 명령 행 옵션을 사용하는 것을 잊지 때문에 의도하지 않고 mysqld가 다른 사용자로 실행되는 가능성 도 있기 때문에 my.cnf
옵션을 사용하는 것이 좋습니다. mysqld_safe 시작 스크립트를 사용하면 MySQL이 강제로 mysql
사용자로 실행됩니다.
절대로 mysqld를 시스템의 root 사용자로 실행하지 마십시오. 이렇게하면 시스템에있는 모든 파일을 MySQL에서 읽을 수 있기 때문에 공격자가 MySQL이 위험에 노출됩니다.
이전 섹션에서 설명한 바와 같이 ( 섹션 18.5.11.2 "MySQL Cluster와 MySQL 권한" 을 참조하십시오) 항상 MySQL 서버를 실행하면 바로 root 암호를 설정하도록하십시오. 또한 기본적으로 설치되어있는 익명 사용자 계정을 삭제하도록하십시오. 다음 문을 사용하면 이러한 작업을 할 수 있습니다.
shell>mysql -u root
mysql>UPDATE mysql.user
->SET Password=PASSWORD('
->secure_password
')WHERE User='root';
mysql>DELETE FROM mysql.user
->WHERE User='';
mysql>FLUSH PRIVILEGES;
DELETE
문을 실행하는 경우, WHERE
절을 생략하지 않도록주의하십시오. 그렇지 않으면 모든 MySQL 사용자가 삭제 될 위험이 있습니다. mysql.user
테이블을 변경하면 변경 내용이 즉시 적용되도록 빨리 FLUSH PRIVILEGES
명령문을 실행하십시오. FLUSH PRIVILEGES
를 실행해야 다음 서버를 다시 시작할 때까지 변경 사항이 적용되지 않습니다.
ndb_show_tables, ndb_desc, ndb_select_all 등의 많은 MySQL Cluster 유틸리티는 인증없이 작동하고 테이블 이름, 스키마 및 데이터를 볼 수 있습니다. 기본적으로 이들은 Unix 스타일의 시스템에 액세스 wxr-xr-x
(755)에 설치됩니다. 이것은 mysql/bin
디렉토리에 액세스 할 수있는 사용자가 수행 할 수있는 것을 의미합니다.
이러한 유틸리티에 대한 자세한 내용은 섹션 18.4 "MySQL Cluster 프로그램" 을 참조하십시오.