본문으로 바로가기







우분투 서버에 자바와 톰캣 설치 이후 이번에는 MySQL을 설치할 것이다.







1. MySQL 설치





먼저 명령어를 입력하여 설치 가능한 MySQL 버전을 확인한다. 여기에서는 5.7 버전을 설치할 것이다.


 # MySQL 버전을 확인
 sudo apt-cache search mysql-server



다음으로 MySQL 설치 명령어를 실행한다.


 # MySQL 5.7 설치
 sudo apt-get install mysql-server-5.7






설치 진행 도중 MySQL의 root(최상위 계정) 계정의 비밀번호를 입력하는 부분이 나온다. 적당한 비밀번호를 입력하고 엔터를 누른다.





다음은 비밀번호 확인이다. 방금 전 입력한 root 계정 비밀번호를 입력한다.





설치가 끝났으면 MySQL이 정상적으로 설치되었는지 확인해 본다.


 # MySQL 5.7 설치확인
 /etc/init.d/mysql status






su - 를 입력하여 우분투 서버의 root 계정으로 로그인한다. 그리고 명령어를 실행하면 IP 주소와 MySQL의 포트가 나온다.


 # 우분투 root 계정으로 접속
 su -
 
 # MySQL 5.7 설치확인
 netstat -ntlp | grep mysqld






명령어를 입력하여 MySQL의 Database를 조회해 본다. 여기까지 되었다면 정상적으로 설치된 것이다.


 # MySQL root 계정 접속, 데이터베이스 조회
 mysql -uroot --e'show databases'





2.  MySQL 한글 설정



MySQL은 기본 언어셋이 latin1로 되어있다. latin1로 되어있을 경우 한글 입력시 깨지는 문제가 발생한다. 그렇기 때문에 설치 후에는 반드시 한글 설정을 해주어야 한다.





명령어를 실행하여 MySQL의 설정 파일이 있는 곳으로 이동한다.


 # 설정 파일이 있는 곳으로 이동 
 cd /etc/mysql/conf.d






먼저 ls를 입력하여 해당 폴더에 어떤 파일들이 있는지 보자. 2개의 파일이 있는데 한글 설정에 사용할 파일은 mysql.cnf 이다. 명령어를 입력하여 mysql.cnf 파일을 연다.


 # 파일 목록보기
 ls
 
 # mysql.cnf 파일편집 
 sudo nano mysql.cnf






mysql.cnf 파일을 보면 [mysql] 이라고 입력되어 있다. 입력된 내용을 지운다.





다음으로 설정 내용을 똑같이 입력해 준다. 입력 후 Ctrl+X → Y 입력 → 엔터 키를 눌러 저장한다.


 [mysqld]
 datadir=/var/lib/mysql
 socket=/var/lib/mysql/mysql.sock
 user=mysql
 character-set-server=utf8
 collation-server=utf8_general_ci
 init_connect = set collation_connection = utf8_general_ci
 init_connect = set names utf8
 
 [mysql]
 default-character-set=utf8
 
 [mysqld_safe]
 log-error=/var/log/mysqld.log
 pid-file=/var/run/mysqld/mysqld.pid
 default-character-set=utf8
 
 [client]
 default-character-set=utf8
 
 [mysqldump]
 default-character-set=utf8






설정이 끝났으면 명령어를 실행하여 MySQL을 재시작한다.


 # MySQL 재시작
 sudo /etc/init.d/mysql restart






설정이 반영되었는지 확인을 해보자. 명령어를 실행하여 MySQL root 계정으로 로그인한다.


 # MySQL root 계정 로그인
 mysql -uroot -p






MySQL에서 status를 입력한다. 그러면 위에 표시된 부분이 utf8로 변경되어 있다면 정상적으로 설정이 반영된 것이다.




3. MySQL 사용자 계정 생성 및 외부접속 설정



MySQL을 설치하면 별도의 사용자 계정이 없는 상태이다. 그렇기에 사용할 사용자 계정을 따로 만들어 준다.





먼저 명령어를 실행하여 MySQL root 계정으로 접속한다.


 # MySQL root 계정 로그인
 mysql -uroot -p






우리가 사용할 데이터베이스를 만들 것이다. 명령어를 실행하여 데이터베이스를 만든다. 그리고 show databases를 입력하여 데이터베이스를 조회해보자. 그러면 방금 생성한 데이터베이스가 있을 것이다.


 -- 데이터베이스 생성
 create database 데이터베이스 이름;
 
 -- 데이터베이스 조회
 show databases;






이제 계정을 만들 것이다. MySQL 5.7 이상은 Create User 구문을 사용해서 계정을 만든다.


 -- 사용자 계정 생성
 create user '아이디'@호스트 identified by '비밀번호';
 
 -- 로컬 접속계정 생성
 create user '아이디'@localhost identified by '비밀번호';
 
 -- 모든 IP로 접속가능한 계정 생성
 create user '아이디'@'%' identified by '비밀번호';






다음으로 새로 생성한 계정에 권한을 부여한다.


 -- 사용자 권한 설정
 GRANT ALL PRIVILEGES ON 데이터베이스명.테이블명 TO '아이디'@'호스트' IDENTIFIED BY '비밀번호';
 
 -- 모든 데이터베이스, 모든 테이블, 모든 IP 접속 허용
 GRANT ALL PRIVILEGES ON *.* TO '아이디'@'%' IDENTIFIED BY '비밀번호';
 
 -- 특정 데이터베이스, 모든 테이블  모든 IP 접속 허용
 -- ex) test 라는 데이터베에스의 모든 테이블, 모든 IP 접속하도록 권한부여
 GRANT ALL PRIVILEGES ON test.* TO '아이디'@'%' IDENTIFIED BY '비밀번호';
 
 -- 모든 데이터베이스, 모든 테이블, 특정 대역 IP 접속 허용
 -- ex) 192.168 로 시작하는 IP에 대해 접속하도록 권한 부여
 GRANT ALL PRIVILEGES ON *.* TO '아이디'@'192.168.%' IDENTIFIED BY '비밀번호';
 
 -- 모든 데이터베이스, 모든 테이블, 특정 IP만 접속 허용
 -- ex) 192.168.22.33 IP에 대해 접속하도록 권한 부여
 GRANT ALL PRIVILEGES ON *.* TO '아이디'@'192.168.22.33' IDENTIFIED BY '비밀번호';
 
 -- 모든 데이터베이스, 모든 테이블, 로컬에서만 
 GRANT ALL PRIVILEGES ON *.* TO '아이디'@localhost IDENTIFIED BY '비밀번호'






다음으로 변경된 권한을 반영한다.


 -- 권한 적용
 flush privileges;






생성한 사용자 계정을 조회해 보자 먼저 mysql 데이터베이스를 선택하여 user 테이블을 조회한다. 조회 결과를 보면 방금 생성한 계정과 접속 가능한 host가 나온다.


 -- mysql 데이터베이스 선택
 use mysql;
 
 --  user 테이블 
 select host, user from user;






다음으로 외부에서 접속이 가능하도록 우분투 방화벽에서 MySQL 포트를 허용한다.


 # MySQL 포트 외부접속 허용
 sudo ufw allow (MySQL 포트번호)/tcp






마지막으로 LISTEN IP 대역을 변경한다. 명령어를 입력하여 해당 경로로 이동한다.


 cd /etc/mysql/mysql.conf.d






거기서 mysqld.cnf 파일을 연다.


 # mysqld.cnf 파일편집
 sudo nano mysqld.cnf






mysqld.cnf  파일으의 모습이다.





아래로 내리다 보면 bind-address 라는 부분이 있다. 





bind-address 앞에 # 을 추가한다. 그리고 Ctrl+X → Y 입력 → 엔터 키를 눌러 저장한다.





다음으로 MySQL을 재시작한다.


 # mysqld 재시작
 sudo /etc/init.d/mysql restart






설정이 끝났으므로 외부접속 테스트를 해보자. SQLyog를 실행하여 위의 내용을 입력한다.







정상적으로 접속이 되면 위처럼 나타난다. 







RSS구독 링크추가 트위터 이메일 구독