공부하고 기록하는, 경제학과 출신 개발자의 노트

프로그래밍/이것저것_개발일지

Ubuntu 인스턴스에 MySQL 올리기

inspirit941 2020. 11. 4. 12:12
반응형

Ubuntu 16.04에 Mysql 5.7 / 8.0.22를 설치하면서 구글링했던 내용들 정리

 

Mysql 설치하기

  • mysql-client : 데이터베이스에 연결하고, CLI로 mysql 명령어를 실행하기 위한 프로그램
  • mysql-server : 데이터베이스를 host, 관리하기 위한 프로그램.

일반적으로 둘 다 필요한 경우가 많음.

sudo apt-get update
sudo apt-get install mysql-server mysql-client

cf. mysql 버전 8을 설치하고 싶은데, sudo apt-get으로 실행하면 5.7이 설치되는 경우

# 실행중인 mysql 프로세스를 종료한 뒤
sudo apt-get remove --purge mysql*
sudo apt-get autoremove
sudo apt-get autoclean

# mysql 8 repository를 wget으로 다운받는다.
wget https://dev.mysql.com/get/mysql-apt-config_0.8.10-1_all.deb

# 다운받은 repository package를 설치한다.
sudo dpkg -i mysql-apt-config_0.8.10-1_all.deb

# 프로그램 설치
sudo apt update
sudo apt install mysql-server mysql-client

# mysql 접속
sudo mysql -u root -p

참고자료

https://stackoverflow.com/questions/6962890/what-is-the-difference-between-mysql-server-and-mysql-client
https://websiteforstudents.com/install-mysql-8-0-on-ubuntu-16-04-17-10-18-04/
https://dev.mysql.com/doc/mysql-apt-repo-quick-guide/en/#repo-qg-apt-upgrading


Mysql 설정 변경하기

아래 설정들을 적용했다면, mysql 프로세스를 재시작해야 한다.
내 경우에는 sudo /etc/init.d/mysql restart 명령어를 사용했다.

 

  1. 외부에서 접근 가능하도록 bind address / port 변경하기

구글링해본 결과, 어느 파일을 수정해야 하는지는 조금씩 의견이 달랐다.

내 경우는 mysqld.cnf 파일이었다.

cd /etc/mysql/mysql.conf.d
sudo vim mysqld.cnf

mysqld.cnf 파일에서

bind-address = 0.0.0.0 # 어디서도 접근 가능하도록 개방
port = 3306 # 포트번호를 변경하고 싶읖 경우 여기를 변경한다

 

  1. 한글깨짐 현상 해결하기

mysql 8 버전이면 기본적으로 utf8mb4가 인코딩으로 설정되어 있어서 큰 문제는 없지만,

5.7 버전은 기본 인코딩이 latin1로 되어 있다.

 

mysqld.cnf에서

[mysqld]
character-set-server = utf8
collation-server = utf8_general_ci

필드를 추가하거나,

mysql에 로그인한 다음 set character set utf8로 설정을 변경해준다.

mysql에서 status 명령어 입력 시 아래처럼 나오면 데이터베이스 인코딩은 잘 된 것.

...
Connection:        Localhost via UNIX socket
Server characterset:    utf8mb4
Db     characterset:    utf8mb4
Client characterset:    utf8mb4
Conn.  characterset:    utf8mb4
...

cf. Mysql의 utf8은 3 Byte 인코딩만 지원하므로, 4바이트 인코딩을 지원하기 위해서는 ut8mb4 설정을 적용해야 한다고 함. 한글은 3Byte이므로 utf8로도 큰 무리가 없지만, 다양한 언어를 저장해야 할 경우 utf8mb4를 사용하는 게 좋다.

 

cf. Mysql 5 버전의 경우, utf8로 한글 인코딩 설정을 해도 insert할 경우 데이터가 깨져 들어간다는 현상이 있다. 이 경우 인코딩을 euc-kr로 설정하면 해결된다고 함.

 

참고자료

 

askubuntu.com/questions/82374/how-do-i-start-stop-mysql-server

 

https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-reference-charsets.html
https://stackoverflow.com/questions/10957238/incorrect-string-value-when-trying-to-insert-utf-8-into-mysql-via-jdbc
https://hhyeok1026.tistory.com/7
https://complainforyou.tistory.com/entry/mysql-ERROR-1366-HY000-Incorrect-string-value
https://dejavuqa.tistory.com/380
https://galid1.tistory.com/678
https://hongsii.github.io/2017/10/15/mysql-%ED%95%9C%EA%B8%80-%EA%B9%A8%EC%A7%90-%EB%AC%B8%EC%A0%9C/
https://dogcowking.tistory.com/311
https://postitforhooney.tistory.com/entry/DBMariaDBMysql-Mysql-%EC%96%B8%EC%96%B4%EC%84%A4%EC%A0%95%EC%9C%BC%EB%A1%9C-%EC%9D%B8%ED%95%9C-%EB%AC%B8%EC%A0%9C-%EA%B7%B8%EB%A6%AC%EA%B3%A0-%ED%95%B4%EA%B2%B0

 

 

skylit.tistory.com/255?category=626754

반응형