요번에는 Mariadb 설치 후 외부접속을 설정하는 방법을 알아보겠습니다.
일단 전 가상머신을 사용하며 ubuntu 18.04를 설치했습니다.
Centos도 많이 사용하긴 하지만 전 그냥 지금 ios가 있던 우분투를 사용합니다.
설치는 알아서 하시면 됩니다.
MariaDB는 무료니까 그리고 Mysql과 같은 환경(?)이니까 사용하겠습니다.
Mysql사용자도 활용 가능합니다.
sudo apt-get install -y mariadb-server
우분투(데비안 계열)의 경우 위와 같은 명령어로 설치가 가능합니다.
페도라 계열에선 yum이란 명령어를 쓰죠
MariaDB설치 후 mysql 명령어가 생겼다면 설치가 완료된것입니다.
일단 root의 비밀번호를 설정해주겠습니다.
sudo mysqladmin password 비밀번호
sudo 명령어 없이는 root 비밀번호를 입력하여도 db에 접속이 안됩니다.
myslq에 접속해줍니다 sudo 명령어로 접속시 가능합니다.
select user, host, password, plugin from mysql.user;
위와 같은 화면이 나오면 됩니다. 만약에 password가 빈칸이라면 비밀번호 설정이 안된겁니다.
우리가 원하는 비밀번호로 root 사용자를 사용하려면 plugin이 mysql_native_password로 변경되어야합니다.
UPDATE mysql.user SET plugin='mysql_native_password', password=PASSWORD('1111') WHERE user='root';
위의 명령어를 실행하면 됩니다. 위는 plugin과 password를 변경하는 sql문입니다.
설정비밀번호는 1111위치에 원하는 비밀번호로 변경하시면 됩니다.
이제 바뀐 부분을 적용시켜 줘야 합니다.
flush privileges;
위의 명령어로 바뀐 부분을 적용해줍니다.
이제 sudo 명령어 없이 mysql접속이 가능한지 확인하시면 됩니다.
전 잘 됩니다. 다들 확인 해보시면됩니다.
show variables like 'c%';
위의 명령어로 MariaDB의 기본 Character set을 확인 가능합니다.
utf8mb4로 세팅될걸 보니 더 수정할건 없을것 같습니다.
UTF-8과 utf8mb4의 다른점은 찾아보시면 됩니다.
utf8mb4는 이모지(이모티콘)를 지원하며 utf8은 에러가 난다네요.
이제 드디어 외부에서 접속이 가능한 아이디를 만들어보겠습니다.
일단 외부에서 접속 가능한 아이디를 만들어줍니다.
INSERT INTO mysql.user (user,host,password) VALUES ('root','%',PASSWORD('1111'));
create user 'root'@'%' identified by '1111';
위의 query문중 하나만 입력하시면 됩니다.
user는 접속 id입니다
host는 접속할 ip입니다. %로 설정시 모든 아이피 접속이 가능합니다. 특정 ip, c Class로 사용이 가능하다고 합니다.
password는 비밀번호 입니다. create user 사용시 위의 query와 비교하시면 됩니다.
이제 권한을 줘야겠죠 권한을 주겠습니다.
GRANT ALL PRIVILEGES on *.* to 'root'@'%';
ALL |
[SELECT, INSERT, UPDATE, DELETE] 4개중 원하는 권한 설정 가능 모든 권한 ALL로 입력 |
*.* | DB이름 * Table이름 |
root | 사용자 id |
% | 접속 주소 |
위의 설명을 참고하시면 됩니다.
FLUSH PRIVILEGES;
유저 및 권한 설정 후에 반드시 적용을 해야 적용이 됩니다. 위처럼 입력하시면 됩니다.
모든 권한을 있는 계정을 외부에 공계하는건 위험하겠죠?
위의 내용을 참고하여 디비 생성 후 각 권한에 맞는 사용자 계정을 주시면 됩니다.
이제 원격에서 접속을 해보겠습니다!
접속 하려는데 오류가 났습니다. conf파일을 뒤져보다 문제를 찾았습니다...
sudo grep -ir 'bind-address' /etc/mysql/
위의 명령어는 원하는 텍스트가 있는 문서를 찾는 명령어입니다.
위와 같이 bind-address라는 config가 있네요 이부분을 주석해주셔야 외부에서 접속이 가능합니다.
위와 같이 bind-address의 내용을 주석처리 하고 저장 후 서비스를 재시작 해줍니다.
이제 접속을 해봅시다. 혹시나 그래도 안된다면
plugin이 빈값이라면 위에서 설정해줬던 plugin에 mysql_native_password를 넣어줍시다.
update mysql.user set plugin='mysql_native_password' where user='root';
위에 query문을 입력하면 user가 root인 row에 plugin을 mysql_natevie_password로 전체 변경합니다.
다시 확인!
위와 같이 외부에서 접속했을때 정상 동작합니다. 굳
(제가 쓰는 툴은 하이디sql입니다.)
WRITTEN BY