본문 바로가기
데이터베이스/mysql

[Mysql] 우분투에 mysql8 설치+계정생성+외부접속

by 아크투어 2023. 3. 31.
반응형

1. 개요

  • ubuntu20.04 또는 22.04 서버에 mysql8버전을 설치해보자.
  • MySQL 8은 대중적인 오픈 소스 관계형 데이터베이스 관리 시스템인 MySQL의 최신 버전입니다. 2018년 4월에 출시되었으며 이전 버전에 비해 몇 가지 새로운 기능과 개선 사항이 포함되어 있습니다.

 

 

2. Mysql5 vs Mysql8

  • MySQL 8에는 MySQL 5에 비해 몇 가지 향상된 기능과 새로운 기능이 포함되어 있습니다. MySQL 5와 MySQL 8의 주요 차이점은 다음과 같습니다.
  1. JSON 지원: MySQL 8은 JSON 데이터 유형에 대한 기본 지원을 포함하고 JSON 데이터 작업을 위한 기능을 제공합니다. MySQL 5에는 이 기능이 포함되어 있지 않습니다.
  2. 창 함수: MySQL 8에는 개발자가 현재 행과 관련된 일련의 행에 대해 복잡한 분석 쿼리를 수행할 수 있는 창 함수에 대한 지원이 포함되어 있습니다. MySQL 5에는 이 기능이 포함되어 있지 않습니다.
  3. 향상된 보안: MySQL 8에는 암호 정책 적용과 같은 향상된 보안 기능과 연결에 SSL(Secure Socket Layer) 암호화를 사용하는 기능이 포함되어 있습니다. MySQL 5에는 이러한 기능이 포함되어 있지 않습니다.
  4. Atomic DDL(Atomic Data Definition Statements): MySQL 8을 사용하면 전체 데이터베이스를 잠그지 않고도 데이터베이스 스키마를 변경할 수 있으므로 유지 관리를 위한 다운타임이 줄어듭니다. MySQL 5에는 이 기능이 포함되어 있지 않습니다.
  5. 성능 개선: MySQL 8에는 InnoDB 스토리지 엔진에 대한 개선 사항과 더 빨라진 쿼리 실행 시간이 포함되어 있습니다. MySQL 5는 비교할 때 성능이 좋지 않을 수 있습니다.
  6. 그룹화 세트: MySQL 8은 GROUPING SETS에 대한 지원을 도입하여 SQL 쿼리에서 보다 복잡한 GROUP BY 절을 허용합니다.
  7. 문자 집합 지원: MySQL 8은 기본적으로 utf8mb4 지원을 포함하여 추가 문자 집합 지원을 제공합니다.

 

 

3. Mysql 설치하기

  • 아래쉘을 따라해보자.
# 패키지 업데이트
$ sudo apt-get update


# 최신mysql설치
$ sudo apt-get install mysql-server


# 설치된 버전확인
$ sudo mysql --version


# root 계정으로 접속하기
$ sudo mysql -u root -p$

 

  • sudo mysql -u root -p 입력하면 비밀번호 입력화면이 나온다. 처음에는 그냥 Enter입력후 접속한다.

mysql root 접속

 

4. 계정생성 및 권한부여

  • 아래내용대로 따라해보자.
  • MySql 8.0이상은 패스워드 규칙이 caching_sha2_password authentication 이다.
  • caching_sha2_password 은 sha256_password와 동일하나 서버 캐싱을 이용한다.
  • caching_sha2_password 를 사용하려면 SSL을 사용하거 RSA 보안을 적용한 비밀번호 연결이 필요하다
  • 그래서 mysql_native_password를 사용하자.
# mysql 데이터베이스
mysql > use mysql

# root계정 비밀번호
mysql >  alter user 'root'@'localhost' identified with mysql_native_password by 'root123!';

# arckwon 계정생성
mysql > create user 'arckwon'@'%' identified by 'arckwon123!';

# root권한부여
mysql > grant all privileges on *.* to arckwon@'%' with grant option;

# 비밀번호 mysql_native_password 설정
mysql > alter user 'arckwon'@'%' identified with mysql_native_password by 'arckwon123!';

# 변경내역적용
$ flush privileges;

 

  • 계정마다 alert 명령어로 mysql_native_password를 적용해도되고 아래처럼 전역으로 설정해도 된다.
[mysqld]
default_authentication_plugin=mysql_native_password

 

 

5. 외부접속설정

  • mysqld.cnf 수정
# mysqld.cnf 접속
$ sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf

# bind-address 설정
# 기존 127.0.0.1 에서 0.0.0.0 으로변경
$ bind-address = 0.0.0.0

 

  • 방화벽 기본포트 3306 OPEN
# 방화벽 설정
$ sudo ufw allow out 3306/tcp
$ sudo ufw allow in 3306/tcp

# 재시작
$ sudo service mysql restart

 

 

6. 실행/종료 명령어

  • 아래와 같다.
sudo service mysql start
sudo service mysql restart
sudo service mysql stop
sudo service mysql status

 

 

7. 접속확인

  • 개인적으로는 워크브렌치말고 sqlyog를 사용한다.

mysql 접속

 

반응형

'데이터베이스 > mysql' 카테고리의 다른 글

[Mysql] 함수(function) 생성예제 및 실행권한  (0) 2023.04.06