강좌
클라우드/리눅스에 관한 강좌입니다.
데이터베이스 분류

MySQL강좌5편: MYSQL 일반사용자를 위한 명령어 PATH설정하기

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

MySQL강좌5: MYSQL 일반사용자를 위한 명령어 PATH설정하기

 

리눅스 쉘상태에서 mysql이라는 MYSQL클라이언트를 이용하여 MYSQL에 접속하려고 할 때에 mysql의 경로가 올바르지않다라는 에러메시지와 함께 실행되지 않는 경우가 있다. 흔히 리눅스서버에 MYSQL을 소스컴파일하여 설치하고 호스팅서버로 사용하고있는 경우,  서비스 초기에 이런 문제가 종종 발생할 수 있다.

 

예를들어 sspark이라는 계정사용자가 리눅스 쉘상태에서 MYSQL로 접속하기 위하여 아래와 같이 “mysql -u root -p sspark”이라는 명령어를 사용했을 때의 예이다.

 

[sspark@sulinux ~]$pwd

/home/sspark

[sspark@sulinux ~]$

[sspark@sulinux ~]$id

uid=500(sspark) gid=500(sspark) groups=500(sspark)

[sspark@sulinux ~]$

[sspark@sulinux ~]$mysql -u sspark -p sspark_db

-bash: mysql: command not found

[sspark@sulinux ~]$

 

위의 경우 mysql클라이언트 명령어의 패스(PATH)가 잡혀있지 않았으므로 위와같이 “command not found”라는 에러메시지와 함께 실행되지 않은 것이다. 물론 위와 같은 경우 MYSQL의 클라이언트인 mysql의 위치를 알고있다면 다음과 같이 절대경로를 이용하여 접속을 할 수 있을 것이다.

 

[sspark@sulinux ~]$/usr/local/mysql/bin/mysql -u sspark -p sspark_db

Enter password: ********

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 16

Server version: 5.1.32 Source distribution

 

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

 

mysql>

mysql> exit

Bye

[sspark@sulinux ~]$

 

하지만 일반사용자의 경우에는 MYSQL이 설치되어있는 위치를 정확하게 알고있지 못하는 경우가 많고 또한 알고있다 하더라도 위와같이 절대경로를 모두 지정하여 실행한다는 것은  여간 귀찮은 일이 아닐 수 없을 것이다. 따라서 절대경로 지정없이 “mysql -u sspark -p sspark”과 같이 바로 사용할 수 있는 환경을 제공하는 것이 서버관리자의 역할이라고 할 수 있다.

 

결론부터 말하자면 mysql의 명령어 경로(PATH)를 일반사용자들이 사용할 수 있도록 설정해야한다는 것이다. 이를 해결하는 방법에는 두가지 방법이 있다.

 

첫번째 방법 : mysql 심볼릭 링크파일을 사용하는 방법

 

가장 간단하고 많이 사용되고있는 간편한 방법이다. 즉 일반사용자들에게는 기본적으로 /usr/bin이라는 서버 실행명령어들의 경로가 설정되어있다. 따라서 /usr/bin/디렉토리에 mysql이라는 링크파일을 하나 만들어서 이 링크파일이 /usr/local/mysql/bin/mysql에 연결되어 있도록 생성하면 이런 문제는 간단히 해결된다.

 

아래에서는 /usr/bin/ 디렉토리에 심볼릭 링크파일을 생성한 실제 예를 보인 것이다. 이 디렉토리(/usr/bin/)는 일반사용자들의 서버관련 명령어를 사용하는 기본 경로(PATH)이기 때문에 이 디렉토리 내에 있는 명령어들은 절대경로 지정없이 어디서든 바로 실행이 가능하도록 되어있다.

 

[root@sulinux bin]#ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql

[root@sulinux bin]#

[root@sulinux bin]#ls -l /usr/bin/mysql

lrwxrwxrwx 1 root root 26  4 28 06:49 /usr/bin/mysql -> /usr/local/mysql/bin/mysql

[root@sulinux bin]#

 

위의 예는 ln이라는 명령어를 사용하여 /usr/local/mysql/bin/mysql로 링크된 /usr/bin/mysql파일을 생성한 것이다.  그리고 ls로 생성된 링크파일을 확인하였다.

 

이런 설정이 되어있다면 이제부터는 일반사용자들도 어디서든 mysql 실행이 가능하게 된다. 아래의 예는 앞에서 실패했던 sspark일반사용자의 mysql사용 예를 보인 것이다.

 

[sspark@sulinux ~]$pwd

/home/sspark

[sspark@sulinux ~]$

[sspark@sulinux ~]$id

uid=500(sspark) gid=500(sspark) groups=500(sspark)

[sspark@sulinux ~]$

[sspark@sulinux ~]$mysql -u sspark -p sspark_db

Enter password: ********

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 17

Server version: 5.1.32 Source distribution

 

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

 

mysql>

mysql> exit

Bye

[sspark@sulinux ~]$

 

참고로 mysql과 함께 mysqldump라는 명령어로 이와 같은 방법으로 링크파일을 생성하면 일반사용자의 MYSQL 데이터백업시에 매우 유용하게 사용할 수 있다.

 

 

두번째 방법 : 계정생성시 mysql절대경로를 PATH에 추가되도록 설정하는 방법

 

여기서 설명하는 두번째 방법은 리눅스서버 설치직후에 설정하실 것을 적극 권장한다. 설치하고 사용하는 도중에 이 설정을 하면 기존의 사용자들에게는 이 설정이 적용되지 않기 때문이다.

 

두번째 방법은 일반사용자의 계정을 생성할 때에 /usr/local/mysql/bin/ 디렉토리의 경로를 기본 PATH로 설정되도록하는 것이다. 앞의 방법보다는 다소 어렵다고는 할 수 있으나 한번 설정해두면 새로 생성되는 모든 사용자들에게 적용이 되므로 설정 이후에 신경쓸 일이 없다는 것이 큰 장점이 될 수 있다. 또한 mysql외에 mysqldump등과 같은 명령어도 동일하게 적용되므로 더욱 편리하다고 할 수 있다.

 

useradd명령어로 일반사용자 계정을 생성하면 생성된 일반 계정사용자의 홈 디렉토리에는 /etc/skel/에 존재하는 파일들이 모두 초기환경설정을 위해서 복사된다. 이때 .bash_profile이라는 파일도 함께 복사가 되는데 이 파일은 초기 일반사용자들의 명령어 사용 경로(PATH)가 설정되어있다. 이 경로에 mysql을 실행시킬 수 있는 경로를 추가 설정해 두는 것이다.  이렇게 설정해 두면 이후 생성되는 모든 사용자들에게 .bash_profile내의 PATH(경로)가 적용되므로 mysql사용을 절대경로 지정없이 어디서든 사용할 수 있게 될 것이다.

아래의 예는 /etc/skel/.bash_profile 파일에 “/usr/local/mysql/bin”경로를 추가로 설정한 후의 파일 내용이다.

 

[root@sulinux skel]#cat /etc/skel/.bash_profile

# .bash_profile

 

# Get the aliases and functions

if [ -f ~/.bashrc ]; then

        . ~/.bashrc

fi

 

# User specific environment and startup programs

 

PATH=$PATH:$HOME/bin

PATH1=$PATH:/usr/local/mysql/bin

 

unset USERNAME

. /usr/local/etc/jfbterm_profile

 

export PATH PATH1

[root@sulinux skel]#

 

이렇게 설정해두면 새로운 사용자를 생성할 때마다 사용자에게 mysql의 실행경로가 PATH에 추가되어있으므로 절대경로 지정없이 바로 사용이 가능하다. 그리고 앞서 설명한 바와같이 mysql뿐아니라 mysqldump등과 같은 백업유틸리티도 모두 적용된다. /usr/local/mysql/bin/디렉토리에 존재하는 모든 유틸리티가 동일하게 적용된다는 의미이다.

 

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,037 명
  • 현재 강좌수 :  35,810 개
  • 현재 접속자 :  97 명