MySQL on Mac OS X

OSXDEV

Jump to: navigation, 찾기

MySQL은 웹 어플리케이션을 위한 가장 대중적인 데이터베이스 가운데 하나입니다. 이 데이터베이스는 컨텐츠 관리, 토론 게시판, 방명록 같은 웹과 관련된 작업들에 적합합니다. 한때, 일부 개발자들은 트랜젝션 같은 신뢰성을 위한 도구 지원 미비를 이유로 상업용 응용프로그램을 위한 MySQL을 꺼려했습니다. 그러나 이 경향은 오래 가지 못했고, MySQL은 웹 애플리케이션을 위한 최선의 선택의 되었습니다.

이 문서에서는 MySQL의 특징과 단점을 살펴보고 Mac OS X에서 MySQL을 설치하는 방법을 제시하며, 기술적인 측면에서 MySQL이 갖는 주목할만한 특징 몇가지를 알려드립니다.

목차

[편집] MySQL 특징

아마도 MySQL의 탁월한 특징은 SQL의 SELECT 문을 실행할 때의 속도일 것입니다. MySQL은 속도를 위해 개발되었습니다. MySQL 엔진의 핵심영역은 매우 작고 효율적입니다. 그리고 (ISAM 테이블을 수정한) 기본 테이블 타입은 SELECT 문을 빠르게 실행시키기 위해 특별히 고안되었습니다. 만약 여러분의 응용프로그램이(웹 컨텐츠에서 흔히 볼 수 있는) 관계형 데이터베이스 컨텐츠들 처리에 대한 향상을 요구한다면 MySQL의 속도는 큰 이득이 됩니다.

MySQL의 안정성 또한 부정할 수 없습니다. 여러분의 제품과 환경 지원 모두에서, 여러분은 MySQL이 여러분의 장치의 성능을 십분 발휘할 만큼 쿼리를 처리할 것이란 사실을 합리적으로 확신하실 수 있습니다.

또다른 중요한 장점이라면, MySQL은 배우기 쉽가는 점입니다. 관계형 데이터베이스의 초보자라 할지라도, MySQL을 배우고 정교한 웹 애플리케이션을 단기간에 만드실 수 있습니다.

이미 널리 알려진 MySQL의 대중성도 장점입니다. 왜냐하면 만약 여러분애게 어려움이 닥쳤을 때, MySQL 지원 같은 활동적인 커뮤니티의 도움을 청할 수 있기 때문입니다. MySQL에 헌신적인 수많은 메일링 리스트가 존재하며 대부분의 질문에서 빠르게 답을 찾을 수 있습니다.

[편집] MySQL의 단점

만약 여러분이 데이터베이스에 익숙한 사용자라면, MySQL의 몇가지 제한에 대해 알고 있을 것입니다. MySQL의 기본 쿼리는 서브 select , (몇몇 테이블 타입에서) 외부 키(foreign key) 제약, 저장된 프로시져, 뷰 같은 것이 지원되지 않습니다. 만약 이러한 문장이 필요하다면, PostgreSQL, FrontBase 또는 다른 데이터페이스를 찾아보시는 것이 좋습니다.

트랜젝션 지원 미비는 MySQL의 단점으로 지적되어 왔습니다만, 현재 Mac OS X에서는 MySQL InnoDB 테이블 타입과 낮은 수준 보안, 외부 키 제약 같은 힘이 드는 트랜젝션을 사용하실 수 있습니다.

[편집] MySQL 설치하기

Mac OS X Server를 사용하고 계시다면, 매우 운이 좋으신 것입니다. — MySQL이 OS에 이미 내장되어있고, 간단하게 Applications/Server/MySQL Manager에서 제어하실 수 있습니다. Mac OS X 클라이언트를 사용하고 계시다면 MySQL을 설치하셔야합니다. 이미 MySQL을 설치하셨고, 업그레이드가 요구된다면 http://www.entropy.ch에서 상세한 설명을 보실 수 있습니다. 새롭게 설치하고자 하면, http://dev.mysql.com/doc/refman/5.0/en/mac-os-x-installation.html에서 MySQL 바이너리 배포본(Mac OS X 전용 설치 패키지 파일)을 위한 상세한 설명을 따라가시기 바랍니다. 하지만, 가끔씩 기본 설정 정보를 바꾸거나 최상의 바이너리 설치를 위해 소스코드로 부터 직접 컴파일하여 설치하기를 원할 수도 있습니다. 이 경우 다음의 과정을 따라주십시오.

MySQL을 설치할 때, 여러분은 공격 경로로 데이터베이스 서버가 악용되는 경우와 같이, 시스템 보안에 미치는 잠재적인 영향에 대해 주의할 필요가 있습니다. 아래 예제에서는, 여러분의 시스템에 보안이 유지되는 동안 MySQL을 설치하는 방법을 보여드립니다.

기본적인 보안 원칙 가운데 하나는 "최소 권한"입니다. 요컨대 모든이와 모든 것이 각자의 작업을 완전히 수행하는 데 필요한 권한만을 부여하는 것입니다. 이들 권한은 (이상적으로 한번의 수행으로 작업이 완료되며, 권한이 취소되는 것과 같은 이상적인) 모든 권한 부여를 합쳐도 최소가 되도록 해야합니다.

사전에 빌드된 바이너리를 설치하는 대신, 소스로부터 MySQL을 빌드할 때에도 마찬가지입니다. 이후 설명해드릴 방법은, 설치 이상의 훌륭한 제어법이 될 것입니다.

[편집] MySQL 설정 및 컴파일하기

/usr/local/mysql 경로에 MySQL을 설치해보겠습니다. 동시에 MySQL의 일부인 /usr/local/mysql/run/mysql_socket의 경로로서 /usr/local/mysql/에 MySQL의 UNIX 소켓이 자리잡도록 하겠습니다. 일반적인 설치에서는 소켓 파일은 /tmp에 위치함을 알려드립니다.

이제 여러분은 웹 브라우저를 통해 소스를 다운 받으실 수 있습니다.

일단 소스를 구하셨다면, 디버그 지원(— with-debug)과 빌드 환경 주석(— with-comment)이 덧붙여진 MySQL 문서를 통해 빠른 설치 방법을 따라가실 수 있습니다. 설정 명령은 다음과 같습니다.

./configure --prefix=/usr/local/mysql
--with-unix-socket-path=/usr/local/mysql/run/mysql_socket
--with-mysqld-user=mysql --with-comment --with-debug

설정이 완료되면, make가 실행되고, /usr/local/mysql에 sudo make 설치가 이뤄집니다. sudo /usr/local/mysql/bin/mysql_install_db가 실행되는 동안, /var 영역에는 데이터베이스 영역을 강제로 추가하고 기본적인 데이터베이스( mysql과 test)를 생성합니다. MySQL의 UNIX 소켓이 존재하는 경로에 실행을 추가하기 위해서, sudo mkdir /usr/local/mysql/run을 실행하실 수 있습니다. 모든 작업이 완료되면, 디렉토리의 목록은 다음과 같이 됩니다:

% ls -Fla /usr/local/mysql/
total 26
drwxr-xr-x 13 root wheel 1024 Jun 5 13:42 ./
drwxr-xr-x 11 root wheel 1024 Jun 5 12:19 ../
drwxr-xr-x 2 root wheel 1024 Jun 5 12:20 bin/
drwxr-xr-x 3 root wheel 1024 Jun 5 12:19 include/
drwxr-xr-x 2 root wheel 1024 Jun 5 12:19 info/
drwxr-xr-x 3 root wheel 1024 Jun 5 12:19 lib/
drwxr-xr-x 2 root wheel 1024 Jun 5 12:20 libexec/
drwxr-xr-x 3 root wheel 1024 Jun 5 12:20 man/
drwxr-xr-x 6 root wheel 1024 Jun 5 12:21 mysql-test/
drwxr-xr-x 2 root wheel 1024 Jun 5 13:42 run/
drwxr-xr-x 3 root wheel 1024 Jun 5 12:20 share/
drwxr-xr-x 7 root wheel 1024 Jun 5 12:21 sql-bench/
drwx------ 4 root wheel 1024 Jun 5 13:37 var/

이 모든 과정이 root 권한을 얻은 채로 이뤄진다는 점을 알려드립니다. 이는 mysql 계정이 /var 밑의 데이터베이스에 기록을 할 수 없고, /run 디렉토리의 mysql UNIX 소켓을 생성할 수도 없음을 의미하기도 합니다. 우리는 root 계정이 아닌 mysql 계정으로 MySQL 데이터베이스를 실행하기를 원하기 때문에, /usr/local/mysql 이 mysql 그룹에 추가되도록 그룹을 수정하고, /usr/local/mysql/run과 /usr/local/mysql/var의 권한이 다음과 같이 하여, mysql 계정에 주어지도록 할 필요가 있습니다.

sudo chgrp -R mysql /usr/local/mysql
sudo chown -R mysql /usr/local/mysql/run /usr/local/mysql/var

이제 디렉토리의 파일 목록은 다음과 같이 됩니다.:

% ls -Fla /usr/local/mysql
total 26
drwxr-xr-x 13 root mysql 1024 Jun 5 13:42 ./
drwxr-xr-x 11 root wheel 1024 Jun 5 12:19 ../
drwxr-xr-x 2 root mysql 1024 Jun 5 12:20 bin/
drwxr-xr-x 3 root mysql 1024 Jun 5 12:19 include/
drwxr-xr-x 2 root mysql 1024 Jun 5 12:19 info/
drwxr-xr-x 3 root mysql 1024 Jun 5 12:19 lib/
drwxr-xr-x 2 root mysql 1024 Jun 5 12:20 libexec/
drwxr-xr-x 3 root mysql 1024 Jun 5 12:20 man/
drwxr-xr-x 6 root mysql 1024 Jun 5 12:21 mysql-test/
drwxr-xr-x 2 mysql mysql 1024 Jun 5 13:42 run/
drwxr-xr-x 3 root mysql 1024 Jun 5 12:20 share/
drwxr-xr-x 7 root mysql 1024 Jun 5 12:21 sql-bench/
drwx------ 4 mysql mysql 1024 Jun 5 13:37 var/

이제 mysql을 시작하고 데이터베이스의 mysql 암호 설정과 같은 몇가지 중요 작업을 진행해야합니다. 시스템 root 권한이 필요한 데이터베이스 구동이 시작되는 동안, 데이터베이스 자체는 시스템 root 권한이 필요한 것이 아니라, 데이터베이스 root 권한 범위 내에서 작업함을 기억하십시오. MySQL이 모든 권한의 계정 이름으로서, 완전히 모든 점들을 완전히 구분한다 할지라도, 단지 시스템이 그러하듯, root 이름의 계정을 사용한다는 점은 다소 헷갈릴 수 있는 부분입니다.

다음의 명령으로 MySQL 구동이 시작됩니다:

sudo /usr/local/mysql/bin/mysqld_safe --user=mysql &

이제 기본적인 테스트 몇가지를 해보실 수 있습니다. 하지만 root 계정에 다음과 같은 명령어로 암호를 추가하여 데이터베이스에 보안을 덧붙여 주기를 먼저 하셔야합니다:

/usr/local/mysql/bin/mysqladmin -u root password sniggle

여기에서, "sniggle"은 데이터베이스의 root 계정에 임의로 적은 암호입니다. MySQL에서, 단일 사용자는 username과 host의 일원이 됩니다. 대부분 로컬 데이터베이스와 연계된 여러분의 개발 환경에서, 호스트는 "localhost"가 될 것입니다. 그러나, 만약 다른 장치에 연결하기를 시도한다면, MySQL의 username과 hostname에 기본적인 권한이 허용되어 있어야 할 것입니다. 사용자 이름과 암호에 관한 더 자세한 정보 원하신다면 MySQL's grant table과 grant and revoke statment에 관해 읽어보십시오.

[편집] 결론

MySQL은 웹 어플리케이션과 Mac OS X 개발환경의 큰 보완재가 되는 훌륭한 데이터베이스입니다. MySQL을 여러분의 Mac에 설치하시고 Perl, PHP, JSP 또는 여러분이 가장 자신있는 어떤 언어의 응용프로그램을 제작하시기 바랍니다. Mac OS X에 설치된 MySQL의 관리자 작업은 phpwizard.net의 웹 기반 phpMyAdmin같은 대중적인 도구나 Runtime Lab의 MacSQL을 통해 살펴보실 수 있습니다.

MySQL을 시작하기 위한 더 많은 정보를 얻기 위해서는, macosxfaq.com에서 관련 내용을 확인하시기 바랍니다.


수정일: 2005-05-13

이 문서의 원본은 ADC Home > Internet Technologies> Open Source > MySQL on Mac OS X입니다.