DBMS 2

DA, SQL, DB보안 등 실무자를 위한 위한 DB기술 바이블!

프로그램 옵션 지정하기

DBMS 2
MySQL 가이드
MySQL 프로그램 사용하기
프로그램 옵션 지정하기
작성자
admin
작성일
2021-02-19 10:47
조회
1075

프로그램 옵션 지정하기

명령어 라인에서 옵션 사용하기
옵션 파일 사용하기
환경 변수를 사용해서 옵션 지정하기
옵션을 사용해서 프로그램 변수 설정하기

MySQL프로그램용 옵션을 지정하는 데에는 몇 가지 방법이 있다:


  • 명령어 라인에서 프로그램 이름 다음에 옵션을 열거한다. 이것은 프로그램을 특별하게 호출할 때 사용하는 가장 일반적인 방법이다.
  • 프로그램이 시작할 때 읽는 옵션 파일에 옵션을 열거한다. 이 방법은 프로그램이 실행될 때마다 이 옵션을 사용하도록 할 경우에 쓰는 일반적인 방법이다.
  • 환경 변수에 옵션을 열거한다. 이 방법은 프로그램이 실행 될 때마다 이 옵션을 적용하고자 할 경우에 유용한 방법이다. 실제로는, 이러한 목적으로는 옵션 파일들이 주로 사용된다. 하지만, Section 5.13.2, “유닉스에서 다중 서버 구동 시키기”에서는 환경 변수들이 보다 효과적으로 사용될 수 있다는 것을 보여 준다. 그곳에서는 이러한 변수들을 사용해서 서버와 클라이언트 프로그램 모두를 위한 TCP/IP 포트 및 유닉스 소켓 파일을 효과적으로 지정하는 방법을 설명한다.

어떤 변수들이 지정 되었는지 확인 하기 위해서, MySQL 프로그램은 우선 환경 변수를 검사한 후에, 옵션 파일들을 읽고, 마지막으로 명령어 라인을 검사한다. 하나의 옵션이 여러 번 지정되어 있다면, 마지막에 나오는 것이 우선권을 갖게 된다. 이것은 환경 변수가 가장 낮은 순위를 갖고 명령어 라인이 가장 높은 우선권을 갖는다는 것을 의미하는 것이다.

여러분은 옵션 파일에 있는 프로그램 옵션에 대해 디폴트 값을 지정해서 프로그램들이 이것을 사용하도록 활용할 수 있다. 이렇게 하면 프로그램을 실행시킬 때마다 일일이 입력을 하는 수고를 피할 수 있을 뿐만 아니라, 필요하다면 명령어 라인에서 다른 옵션을 지정해 줌으로서 디폴트 값을 무시하도록 만들 수도 있다.

출처 : MySQL 코리아
명령어 라인에서 옵션 사용하기

명령어 라인에서 지정되는 옵션들은 아래의 규칙을 따른다:


  • 옵션은 명령어 다음에 입력한다.
  • 옵션 인수는 단축형 (short name) 또는 전체 이름 (ling name)에 따라서 단일 대시 또는 이중 대시를 사용한다. 대부분의 옵션들은 두 가지 형태를 모두 갖고 있다. 예를 들면, -? 과 --help 는 MySQL 프로그램이 도움말을 보여주도록 지시하는 옵션의 약식 이름과 전체 이름이 된다.
  • 옵션 이름은 대소 문자를 구분한다. -v 와 -V 는 모두 사용 가능하지만 의미는 서로 다른 것이다. (각각 --verbose 과 --version 옵션의 약식 이름이 된다.)
  • 어떤 옵션들은 옵션 이름 다음에 값을 가지게 된다. 예를 들면, -h localhost 또는 --host=localhost 은 클라이언트 프로그램에 MySQL 서버 호스트를 지정해 주는 것이다. 옵션 값은 MySQL이 구동되고 있는 호스트 이름을 프로그램에게 알려 준다.
  • 값을 가진 전체 이름 옵션의 경우에는, 옵션 이름과 그 값을 ‘=’ 기호로 구분한다. 약식 이름 옵션의 경우에는, 옵션 값을 옵션 바로 다음에 붙여 쓰거나, 한 칸 띄운 다음에 기입한다: -hlocalhost 과 -h localhost 는 동일한 표현이다. 이러한 규칙에서 한 가지 예외 규정이 있는데, MySQL패스워드를 지정할 때가 이에 해당된다. 이 옵션은 전체 이름을 사용해서 --password=pass_val 또는 --password로 쓸 수 있다. 두 번째의 경우에는 (패스워드 값이 없는 경우), 프로그램은 여러분에게 패스워드를 입력할 수 있는 프롬프트를 보여준다. 패스워드 옵션은 또한 약식 이름 형태인 -ppass_val 또는 -p로 사용될 수 있다. 하지만, 약식 이름의 경우, 패스워드 값을 주게 되면, 옵션과 그 값 사이에 스페이스 (space)를 사용하지 말아야 한다. 그 이유는 옵션 문자 다음에 스페이스를 주게 되면, 프로그램은 뒤 따라오는 인수가 패스워드 값인지 또는 어떤 다른 종류의 인수 값인지 알지 못하기 때문이다. 결론적으로, 아래의 두 명령어는 완벽하게 서로 틀린 의미를 갖게 된다:

            shell> mysql -ptest
    shell> mysql -p test

    첫 번째 명령어는 mysql이 test를 패스워드 값으로 사용하도록 지시하지만, 디폴트 데이터 베이스를 지정하지는 않게 된다. 두 번째 명령어는 mysql이 패스워드용 프롬프트를 내 보내고 test를 디폴트 데이터 베이스로 사용하도록 지시하는 것이다.

어떤 옵션들은 결과를 활성화 또는 비활성화 (turn on 또는 off)시키는 기능을 제어하기도 한다. 예를 들면, mysql 클라이언트는 --column-names 옵션을 지원하는데, 이 옵션은 쿼리 결과를 보여줄 때 컬럼 이름 열을 화면에 보여줄 지 또는 숨길지를 결정한다. 이 옵션의 디폴트 값은 보여주는 것이다. 하지만, 여러분은 이 기능을 어떤 상황에서는 숨길 수도 있는데, 예를 들면 mysql의 결과를 다른 프로그램에 보내서 초기 헤더 라인을 뺀 데이터 부분만을 보고자 할 경우가 여기에 해당한다.

컬럼 이름을 비활성화 시키기 위해서는, 아래 형태 중에 하나를 가지고 옵션을 지정하면 된다:



--disable-column-names
--skip-column-names
--column-names=0


--disable 과 --skip 접두사 및 =0 접미사는 모두 동일한 효과를 나타낸다: 이것들은 옵션을 비활성화 시킨다.

다음과 같이 지정을 하면 옵션을 “enabled” 하게 만들 수가 있다:



--column-names
--enable-column-names
--column-names=1


만약에 옵션이 -loose 다음에 나오는 경우에는, 프로그램이 그 옵션을 인식하지 못함으로 인해 에러가 발생하고 종료되지 않는 대신에 경고 메시지만을 보여주게 된다:



shell> mysql --loose-no-such-option
mysql: WARNING: unknown option '--no-such-option'


--loose 접두사는 동일 머신에 다중의 MySQL을 설치한 장비에서 프로그램을 구동시키고 옵션 파일에 옵션을 기술해 놓을 때 유용하게 사용할 수 있는 것이다. 한 프로그램의 모든 버전에서 인식되지 않는 옵션에 대해서는 --loose 접두사를 사용해서 지정할 수가 있다 (또는 옵션 파일에서 loose 를 사용한다). 이 옵션을 인식하는 프로그램 버전은 정상적으로 프로세스를 진행하고, 이것을 인식하지 못하는 버전은 경고 메시지를 보낸 다음에 무시해 버리게 된다.

때때로 mysql과 함께 유용하게 사용할 수 있는 옵션이 --execute 또는 -e 옵션인데, 이것은 SQL명령문을 서버에 패스할 때 사용된다. 이러한 명령문들은 단일 또는 이중 인용 부호로 묶여야 한다. 명령문 안에서 인용 부호를 사용하고자 한다면, 명령문에 대해서는 이중 인용 부호를 사용하고, 명령문 내에서는 단일 인용 부호를 사용한다. 이 옵션을 사용하면, mysql은 그 명령문을 사용한 다음에 종료를 한다.

예를 들면, 여러분은 아래의 명령어를 가지고 사용자 계정의 리스트를 얻을 수 있을 것이다



shell> mysql -u root -p --execute="SELECT User, Host FROM user" mysql
Enter password: ******
+------+-----------+
| User | Host |
+------+-----------+
| | gigan |
| root | gigan |
| | localhost |
| jon | localhost |
| root | localhost |
+------+-----------+
shell>


전체 이름 형태 (--execute)는 등호 기호(=)가 뒤 따라 와야 한다는 점을 기억하기 바란다.

앞의 예제에서 보았듯이, mysql 데이터 베이스의 이름은 별도의 인수 형태로 전달 되었다. 하지만, 동일한 명령문을 아래의 명령어로 실행시킬 수 있는데, 여기에서는 디폴트 데이터 베이스를 지정하지 않았다:



mysql> mysql -u root -p --execute="SELECT User, Host FROM mysql.user"

다중 SQL 명령문은 명령어 라인에서 세미콜론으로 구분해서 전달 될 수도 있다:



shell> mysql -u root -p -e "SELECT VERSION();SELECT NOW()"
Enter password: ******
+------------+
| VERSION() |
+------------+
| 5.0.19-log |
+------------+
+---------------------+
| NOW() |
+---------------------+
| 2006-01-05 21:19:04 |
+---------------------+


--execute 또는 -e 옵션은 MySQL 클러스터에 대한 ndb_mgm 관리 클라이언트에 비슷한 형식으로 명령문을 전달할 때 사용되기도 한다.


옵션 파일 사용하기

대부분의 MySQL 프로그램들은 옵션 파일 (때로는 구성 파일로도 불리어짐)에서 스타트업 옵션을 읽을 수 있다. 옵션 파일들은 주로 사용되는 옵션들을 지정하는데 대해서 편리한 방법을 제공해 주기 때문에 여러분이 명령어 라인에서 프로그램을 구동할 때마다 입력하는 수고를 없애 준다.

프로그램이 옵션 파일을 읽을 수 있는지 없는지를 확인하기 위해서는, --help 옵션 (mysqld의 경우, --verbose 및 --help for mysqld)을 함께 사용해서 프로그램을 호출한다. 만약에 프로그램이 옵션 파일을 읽을 수 있다면, 도움말 메시지는 프로그램이 찾는 파일과 인식할 수 있는 옵션 그룹을 표시하게 된다.

Note: MySQL 클러스터 프로그램과 함께 사용되는 옵션 파일들은 Section 15.4, “MySQL 클러스터 구성”에서 설명하기로 한다.

윈도우 시스템의 경우, MySQL 프로그램은 아래의 파일들에서 스타트업 옵션들을 읽는다:



Filename Purpose
WINDIR\my.ini Global options
C:\my.cnf Global options
INSTALLDIR\my.ini Global Options
defaults-extra-file The file specified with --defaults-extra-file=path, if any

WINDIR 는 윈도우 디렉토리 위치를 나타낸다. 이것은 주로 C:\WINDOWS 또는 C:\WINNT가 된다. 여러분은 이것의 정확한 위치를 아래의 명령문을 사용해서 WINDIR 환경 변수의 값을 가지고 알아낼 수가 있다:



C:\> echo %WINDIR%

INSTALLDIR 는 MySQL이 설치된 디렉토리를 가리킨다. 일반적으로는 C:\PROGRAMDIR\MySQL\MySQL 5.0 Server 가 되며, MySQL 5.0을 설치 및 구성 마법사를 사용해서 설치할 때에는, PROGRAMDIR 은 프로그램 디렉토리를 가리키게 된다 (일반적으로 영문 윈도우 버전의 경우에는 Program Files).

유닉스 시스템의 경우, MySQL 프로그램은 아래의 파일들에서 스타트업 옵션을 읽는다:



Filename Purpose
/etc/my.cnf Global options
$MYSQL_HOME/my.cnf Server-specific options
defaults-extra-file The file specified with --defaults-extra-file=path, if any
~/.my.cnf User-specific options

MYSQL_HOME은 서버 관련 my.cnf 파일이 상주하고 있는 디렉토리 경로를 갖고 있는 환경 변수이다.

만약에 MYSQL_HOME 이 설정되지 않고 mysqld_safe를 사용해서 서버를 구동시킨다면, mysqld_safe은 MYSQL_HOME을 아래와 같이 설정하고자 할 것이다:


  • BASEDIR 과 DATADIR 이 각각 MySQL 베이스 디렉토리와 데이터 디렉토리 경로 이름을 나타내도록 만든다.
  • my.cnf 파일이 BASEDIR이 아닌 DATADIR 에 있다면, mysqld_safe는 MYSQL_HOME 을 DATADIR에 설정한다.
  • 반면에, MYSQL_HOME 이 설정되지 않고 DATADIR 안에 my.cnf 파일이 없다면, mysqld_safe은 MYSQL_HOME을 BASEDIR에 설정한다.

전형적으로 본다면, 바이너리를 설치할 경우의 DATADIR 은 /usr/local/mysql/data 가 되고 소스를 설치할 경우에는 /usr/local/var 가 된다. 이곳이 MySQL을 구성할 때 지정되는 데이터 디렉토리의 위치이며, mysqld 를 구동할 때 -datadir 옵션을 가지고 지정하는 위치가 아니라는 것을 알아두기 바란다. 런타임시 -datadir을 사용하더라도 서버가 옵션 파일을 어디에서 찾을 것인지에 대해서는 아무런 영향을 주지 않는데, 서버는 어떤 옵션을 실행하기 전에 옵션 파일들을 찾기 때문이다.

MySQL은 위에서 언급한 순서대로 옵션 파일들을 찾고 읽게 된다. 여러분이 사용하고자 하는 옵션 파일이 존재하지 않는다면, 일반적인 텍스트 편집기를 사용해서 이것을 생성한다.

주어진 옵션에서 다중의 인스턴스가 발견되면, 최종 인스턴스가 우선 순위를 갖게 된다. 한 가지 예외가 있다: mysqld에 대해서는, --user 옵션의 첫 번째 인스턴스는 보안 목적으로 사용되기 때문에, 옵션 파일에 있는 사용자 지정 옵션을 명령어 라인에서 지정하는 것이 앞서 실행되지 않도록 하고 있다.

MySQL프로그램을 구동할 때 명령어 라인에서 입력할 수 있는 옵션들은 어떤 것이든지 옵션 파일에서도 사용할 수 있다. 한 프로그램에서 사용 가능한 옵션들의 목록을 보기 위해서는, 그 프로그램을 --help 옵션과 함께 구동 시킨다.

옵션 파일에서 옵션을 지정할 때 사용하는 신텍스는 명령어 라인에서 사용하는 신텍스와 유사하지만, 옵션 앞에 사용하는 두 개의 대시는 생략해야 한다. 예를 들면, 명령어 라인에서 사용되는 --quick 또는 --host=localhost는 옵션 파일에서는 quick 또는 host=localhost 과 같이 쓰여져야 한다. --loose-opt_name 을 옵션 파일에서 지정하기 위해서는, loose-opt_name와 같이 작성되어야 한다.

옵션 파일에서는 비어 있는 라인 (Empty lines)이 무시된다. 라인이 비어 있지 않다면 아래의 형태 중에 하나가 될 것이다:


  • #comment, ;comment
    코멘트 라인은 ‘#’ 또는 ‘;’로 시작한다. ‘#’로 시작 되는 코멘트는 라인의 중간에서도 시작할 수 있다.
  • [group]
    group은 여러분이 옵션을 설정하고자 하는 그룹 또는 프로그램의 이름이다. 그룹 라인 다음에 다른 그룹 라인이 주어지거나 옵션 파일의 끝이 나오기 전까지는 어떠한 옵션 설정 라인도 주어진 그룹에 적용할 수 있다.
  • opt_name
    이것은 명령어 라인에서의 --opt_name 과 동일한 것이다.
  • opt_name=value
    이것은 명령어 라인의 --opt_name=value 과 동일한 것이다. 옵션 파일에서는, ‘=’ 기호 앞뒤에 스페이스를 사용할 수 있지만, 명령어 라인에서는 이렇게 사용할 수 없다. 여러분은 단일 또는 이중 인용 부호로 값을 묶을 수도 있는데, 그 값이 ‘#’ 코멘트 문자 또는 화이트 스페이스 (whitespace)를 갖고 있을 경우에 유용하게 사용할 수 있다.

숫자 값을 갖는 옵션의 경우에는, 그 값에 접미사 K, M, 또는 G (대소문자 모두 사용 가능)을 사용해서 1024, 10242 또는 10243의 승수를 표시할 수 있다. 예를 들면, 아래의 명령어는 mysqladmin에게 서버를 1024번만큼 PING하도록 하는데, 각 PING간에는 10초의 간격을 두라고 명령하는 것이다:

mysql> mysqladmin --count=1K --sleep=10 ping

앞뒤에 있는 공백 (blank)은 옵션 이름과 값에서 자동으로 삭제된다. 여러분은 이스케이프 시퀀스 (escape sequences)를 사용할 수도 있는데, 옵션 파일에서 ‘\b’, ‘\t’, ‘\n’, ‘\r’, ‘\\’, 와 ‘\s’를 사용해서 백스페이스 (backspace), 탭 (tab), 뉴라인 (newline), 캐리지 리턴 (carriage return), 그리고 스페이스 문자를 의미하도록 할 수 있다.

‘\\’ 이스케이프 시퀀스는 단일 백슬레시를 의미하기 때문에, 여러분은 각각의 ‘\’를 ‘\\’로 써야 한다. 다른 방법으로는, 경로 이름 구분자 (separator)로 ‘\’를 사용하지 않고 ‘/’를 사용할 수도 있다.

옵션 그룹의 이름이 프로그램 이름과 같다면, 그룹에 있는 옵션들은 특별히 그 프로그램에 적용되게 된다. 예를 들면, [mysqld] 와 [mysql] 그룹은 mysqld 서버와 mysql 클라이언트 프로그램에 각각 적용된다.

모든 클라이언트 프로그램은 [client] 옵션 그룹을 읽을 수 있다 (mysqld는 읽을 수 없음). 이것은 여러분이 모든 클라이언트에 적용되는 옵션을 지정할 수 있게 해 준다. 예를 들면, [client]는 여러분이 서버에 접속할 때 사용하기 위한 패스워드를 지정할 때 사용할 수 있는 완벽한 그룹이다. (하지만 그 옵션 파일이 여러분만 읽고 쓸 수 있도록 해야 하며, 다른 사람들이 패스워드를 알지 못하도록 해야 한다.) 여러분이 사용하는 모든 클라이언트 프로그램이 인식하지 못하는 옵션은 [client] 그룹에 그 옵션을 넣지 않도록 한다. 여러분이 프로그램을 구동시키고자 한다면, 프로그램은 이 옵션을 인식하지 못하게 되고 에러 메시지를 보여 주면서 동작을 멈추게 된다.

아래에 있는 것은 전형적인 글로벌 옵션 파일이다:



[client]
port=3306
socket=/tmp/mysql.sock

[mysqld]
port=3306
socket=/tmp/mysql.sock
key_buffer_size=16M
max_allowed_packet=8M

[mysqldump]
quick


앞의 옵션 파일은 key_buffer_size 와 max_allowed_packet 변수를 설정하는 라인을 위해 var_name=value 신텍스를 사용하고 있다.

다음에 나오는 것은 전형적인 사용자 옵션 파일이다:



[client]
# The following password will be sent to all standard MySQL clients
password="my_password"

[mysql]
no-auto-rehash
connect_timeout=2

[mysqlhotcopy]
interactive-timeout


특정 MySQL릴리즈 시리즈에 속한 mysqld 서버만 읽을 수 있는 옵션 그룹을 생성하고자 한다면, [mysqld-4.1], [mysqld-5.0]과 같은 이름을 가진 그룹을 사용해서 만들면 된다. 아래의 그룹은 --new 옵션이 5.0.x 버전 번호를 가진 MySQL 서버에 의해서만 사용되도록 지시한다:



[mysqld-5.0]
new


MySQL 5.0.4 이후에는, 옵션 파일에서 !include 지시문 (directives)을 사용해서 다른 옵션 파일을 포함하도록 만들 수가 있고 !includedir를 사용해서 옵션 파일에 대한 특정 디렉토리를 검색하도록 할 수가 있다. 예를 들면, /home/mydir/myopt.cnf 파일을 포함하기 위해서는, 여러분은 아래의 지시문을 사용할 수 있다:



!include /home/me/myopt.cnf

/home/mydir 디렉토리를 검색하고 그곳에서 찾은 옵션 파일들을 읽기 위해서는, 아래의 지시문을 사용한다:



!includedir /home/mydir

Note: 현재의 버전까지는, 유닉스 시스템에서 !includedir 지시문을 사용해서 검색되고 포함 되는 파일들은 반드시 파일 이름 끝에 .cnf가 있어야 한다. 윈도우에서는, 이러한 지시문은 .ini 또는 .cnf 확장자로 끝나는 파일을 검사한다.

포함되어 있는 옵션 파일의 컨텐츠는 현재 (current) 옵션 그룹의 문장에서 적용된다는 점을 알아두기 바란다. 여러분이 아래의 라인을 my.cnf 안에 써 놓았다고 가정하자:



[mysqld]
!include /home/mydir/myopt.cnf


이 경우에, myopt.cnf 파일은 서버에 의해서만 실행되면, !include 지시문은 다른 클라이언트 어플리케이션에 의해 무시된다. 하지만, 만약에 아래의 라인을 사용하게 된다면, 디렉토리 /home/mydir/my-dump-options 은 mysqldump만이 옵션 파일로 검사를 하게 되고, 서버 또는 다른 어떤 클라이언트 어플리케이션들은 이것을 검사할 수 없게 된다:



[mysqldump]
!includedir /home/mydir/my-dump-options


여러분이 소스 배포판을 갖고 있다면, support-files 디렉토리에서 my-xxxx.cnf라는 이름의 샘플 옵션 파일들을 찾을 수 있을 것이다. 바이너리 배포판을 가지고 있다면, MySQL이 설치된 디렉토리 아래에 있는 support-files 디렉토리를 검사해 본다. 윈도우 시스템의 경우에는, 샘플 옵션 파일들이 MySQL 설치 디렉토리 안에 있을 것이다 (어디에 있는 지 모를 경우에는, 이 섹션 초기 부분 또는 Chapter 2, MySQL 설치 및 업그레이드 를 보기 바란다). 현재의 버전까지는, 소형, 중간, 대형, 및 초 대형 시스템에 대해서 모두 동일한 샘플 옵션을 제공하고 있다. 이 파일들 중에 하나를 시험하기 위해서는, 윈도우에서는 그것을 C:\my.cnf에 복사하고, 유닉스에서는 홈 디렉토리에 있는 .my.cnf에 복사를 한다.

Note: 윈도우에서는, .cnf 옵션 파일 확장자가 보이지 않을 수도 있다.

옵션 파일들을 지원하는 대부분의 MySQL 프로그램들은 다음의 옵션들을 처리한다. 이것들은 옵션 파일을 다루는데 영향을 끼치기 때문에, 옵션 파일에서 사용하지 말고 명령어 라인에서만 사용을 해야 한다. 올바르게 동작 시키기 위해서는, 각각의 옵션을 명령어 다음에 바로 입력해야 하는데, 한 가지 예외적인 경우는, --print-defaults는 --defaults-file 또는 --defaults-extra-file 바로 다음에 사용될 수 있다.


  • --no-defaults
    어떠한 옵션 파일도 읽지 말 것.
  • --print-defaults
    옵션 파일에서 가져오는 프로그램 이름과 모든 옵션을 프린트 할 것.
  • --defaults-file=file_name
    주어진 옵션 파일만 사용할 것. file_name 은 그 파일에 대한 전체 경로 이름이다.
  • --defaults-extra-file=file_name
    이 옵션 파일을 글로벌 옵션 파일 다음에 읽을 것 (하지만 유닉스의 경우에는 사용자 옵션 파일 전에 읽을 것). file_name 은 그 파일에 대한 전체 파일 경로 이름이다.

MySQL에 대한 다른 프로그램 언어 인터페이스는 C 클라이언트 라이브러리에 근거를 하고 있으며, 이러한 인터페이스 중에 어떤 것들은 옵션 파일의 컨텐츠에 접근할 수 있는 방법을 제공해 주기도 한다. 여기에는 Perl 과 Python이 포함된다. 자세한 내용에 대해서는, 여러분이 선호하는 인터페이스 매뉴얼을 참조하기 바란다.


환경 변수를 사용해서 옵션 지정하기

환경 변수를 사용해서 옵션을 지정하기 위해서는, 여러분이 사용하는 명령어 프로세서에 적당한 신텍스를 사용해서 변수를 설정한다. 예를 들면, 윈도우 또는 NetWare에서는, USER 변수를 설정해서 MySQL 계정 이름을 지정하도록 한다. 이렇게 하기 위해서, 아래의 신텍스를 사용한다:



SET USER=your_name

유닉스용 신텍스는 여러분이 사용하는 쉘과 관련이 된다. 여러분이 TCP/IP 포트 번호를 MYSQL_TCP_PORT 변수를 사용해서 지정하고자 한다고 가정한다. 이에 대한 전형적인 신텍스는 (sh, bash, zsh의 경우) 다음과 같다:



MYSQL_TCP_PORT=3306
export MYSQL_TCP_PORT


첫 번째 명령어는 변수를 설정하고, export 명령어는 그 변수를 쉘 환경 변수로 보내서 그 값을 MySQL과 다른 프로세스들이 사용할 수 있도록 만든다.

csh 와 tcsh의 경우에는, setenv를 사용해서 쉘 변수를 환경에 맞게 만든다:



setenv MYSQL_TCP_PORT 3306

환경 변수를 설정하는 명령어는 명령어 라인에서 실행 시켜서 즉시 효과를 나타내도록 할 수는 있으나, 설정은 여러분이 로그 아웃을 하지 않은 상태에서만 유지가 된다. 여러분이 로그인 할 때마다 효과를 갖기 위해서는, 적당한 명령어 또는 명령어들을 스타트업 파일에 적어 놓아서 명령어 인터프리터가 매 서버 시작 때마다 읽을 수 있도록 하면 된다. 전형적인 스타트업 파일들은, 윈도우에서는 AUTOEXEC.BAT 이며, bash에서는 .bash_profile, 그리고 tcsh에서는 .tcshrc 가 된다. 보다 상세한 사항은 명령어 인터프리터 매뉴얼을 참조하기 바란다.


옵션을 사용해서 프로그램 변수 설정하기

많은 MySQL 프로그램들이 런타임 때 설정할 수 있는 내부 변수들을 가지고 있다. 프로그램 변수들은 전체 이름 옵션에 값을 설정하는 것과 같은 방식으로 설정된다. 예를 들면, mysql은 max_allowed_packet 이라는 변수를 가지고 있는데, 이 변수는 통신 버퍼의 최대 크기를 제어한다. max_allowed_packet 변수를 16MB로 설정하기 위해서는, 아래의 명령어 중에 하나를 사용한다:



shell> mysql --max_allowed_packet=16777216
shell> mysql --max_allowed_packet=16M


첫 번째 명령어는 값을 바이트로 지정한다. 두 번째 명령어는 메가 바이트로 지정한다. 숫자 값을 가지는 변수에 대해서는, 접미사 K, M, 또는 G (대소 문자 상관 없음)를 사용해서 1024, 10242 또는 10243 승수를 표시할 수 있다.

옵션 파일에서, 변수 설정은 대시를 앞에lowed_packet=16777216 또는: [mysql] max_allowed_packet=16M



아래의 옵션 그룹들은 모두 동일한 것들이다. 양쪽 모두 서버의 키 버퍼를 512MB로 설정한다:



[mysqld]
key_buffer_size=512M

[mysqld]
key-buffer-size=512M


Note: MySQL 4.0.2 이전에는, 프로그램 변수를 설정할 수 있는 유일한 신텍스가 --set-variable=option=value (또는 옵션 파일에서는, set-variable=option=value) 밖에 없었다. 이 신텍스는 여전히 사용 가능하지만, 4.0.2 이후에는 그다지 사용되지 않는다.