이전 포스팅에서 AWS EC2에 우분투를 사용하는 인스턴스를 생성하고 Putty를 통해 접속하는것 까지 진행하였다.
이번엔 우분투에 MySQL을 설치하고 유저 생성과 권한 설정을 해본것에 대해 정리하려고 한다.
먼저 PuTTY로 AWS EC2 인스턴스에 접속해준다.
apt-get은 데비안(Debian)계열의 리눅스에서 쓰이는 패키지 관리 도구이고, apt는 apt-get에서 필요한 것만 골라 만든 툴이다.
apt는 패키지 설치 시 프로그래스바를 보여주고 좀 더 사용자 친화적이지만 제한된 기능을 가지고있다는게 마음에 걸려 그냥 apt-get을 사용하기로 했다.
먼저 apt-get을 업데이트 해주고 난 뒤에 mysql을 설치해야한다. 그리고 apt-get은 관리자 권한으로 실행해주어야 한다.
$ sudo apt-get update
$ sudo apt-get install mysql-server
/etc/mysql/mysql.conf.d 디렉토리에 있는 mysqld.cnf 파일을 수정해서
bind-address 값을 0.0.0.0으로 바꾸면 모든 접근을 허용하는것이고 특정 IP값으로 지정할 수도 있다.
$ cd /etc/mysql/mysql.conf.d
$ vi mysqld.cnf
$ mysql -u root -p
root 계정으로 접속을 해준다. MySQL 5.7 이후 버전에서는 root 사용자는 auth_socket 플러그인으로 로그인되는게 기본설정이다. 따라서 비밀번호로 로그인하도록 바꾸기위해서는 플러그인 설정을 변경해주면 된다.
mysql> alter user 'root'@'localhost' identified with mysql_native_password by '비밀번호';
mysql> flush privileges; // 사용자 변경사항 적용
mysql> select user, authentication_string, plugin, host from mysql.user;
이제 비밀번호를 입력해야 root 사용자로 접속할 수 있다.
해당 쿼리를 통해 유저를 생성하고 권한을 부여할 수 있다.
mysql> create user '유저이름'@'%' identified by '비밀번호';
mysql> grant all privileges on *.* to '유저이름'@'%' with grant option;
유저이름 뒤에 '%'는 모든 호스트를 허용한다는 뜻이다. 이를 통해 외부 접속을 허용할 유저를 생성하게 된다. 로컬 호스트만 허용할 경우는 'localhost'를 입력한다.
MySQL Workbench를 통해 테스트 접속을 해보았다.
처음에 접속이 되지 않아서 mysql을 재시작해주었더니 정상적으로 접속이 되었다.
$ sudo systemctl restart mysql