설정

언어 설정

  • 기본적으로 latin1로 되어있는것을 utf8로 수정
    • 한글이 깨질 수 있다.
  • /etc/mysql/my.cnf파일 수정
    • !include ~라 이미 적혀있는것 하단에 붙여야 한다.
    • 아래의 내용으로 그대로 붙여넣으면된다([client]라고 적힌거포함)
[client] 
default-character-set = utf8 

[mysqld] 
init_connect="SET NAMES utf8" 
character-set-server = utf8 
collation-server = utf8_general_ci 

[mysqldump] default-character-set = utf8 

[mysql] default-character-set = utf8

외부연결 설정

  • vi /etc/mysql/mysql.conf.d/mysqld.cnf
    • bind-address = 127.0.0.1bind-address = 0.0.0.0으로 외부 연결 가능하게 설정
  • 추가적으로 포트포워딩도 확인(3306번)

설정 적용

  • mysql 재시작
    • service mysql restart
  • 확인
    • mysql 접속하여 status입력
    • character_set이 전부 utf8으로 되어있으면 적용완료

사용자

  • 사용자를 추가하고 권한을 부여 가능
    • 권한을 이용하여 특정 외부와 내부에서 접근을 분리하고, 내부적으로는 특정 데이터베이스 접근만 가능하게 하여 관리한다.
  • mysql 접속후 use mysql로 시작

사용자 추가

  • create user '[id]'@'[host]' identified by '[비번]';
    • host는 어디서 접근하냐를 설정
      • localhost는 내부에서만 접근
      • %는 외부에서도 접근 가능(어디서든 접근)

사용자 확인

  • select user,host from user;
    • mysql 데이터베이스의 user테이블을 확인

사용자 삭제

  • drop user 'id'@'host';

사용자 권한 부여

  • 만든 사용자는 특정 database만 접근가능하도록 설정 가능
  • grant [권한정도] privileges on [데이터베이스명].[테이블명] to '[id]'@'[host]';
    • 권한정도
      • all 모든 권한 사용
      • SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX,ALTER 과같은 특정 권한 지정가능
        • 여러개 적용시 쉼표로 쭉 써주면 된다.

사용자 권한 삭제

  • revoke [권한정도] on [데이터베이스명].[테이블명] from '[id]'@'[host]';
    • 권한정도
      • all은 모든 권한 삭제
      • SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX,ALTER과 같은 특정 권한 삭제 가능

사용자 권한 확인

  • show grants for '[id]'@'[host]';
    • 해당 아이디와 호스트를 가진 유저의 권한 확인

변경사항 적용

  • flush privileges;

참고

  • https://docs.oracle.com/en/database/oracle/oracle-database/18/sqlrf/GRANT.html#GUID-20B4E2C0-A7F8-4BC8-A5E8-BE61BDC41AC3
  • https://webdir.tistory.com/217
  • https://nesoy.github.io/articles/2017-05/mysql-UTF8

  • https://nickjoit.tistory.com/144
  • https://damduc.tistory.com/4