MySQL강좌5편: MYSQL 일반사용자를 위한 명령어 PATH설정하기
작성자 정보
- 관리자 작성
- 작성일
컨텐츠 정보
- 2,743 조회
- 0 추천
- 목록
본문
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/디렉토리에 존재하는 모든 유틸리티가 동일하게 적용된다는 의미이다.
관련자료
-
이전
-
다음