본문 바로가기
Database

Ubuntu MySQL 8.0 설치

by WhoamixZerOne 2023. 8. 26.

 

✔ 패키지 업데이트 & 업그레이드

$ sudo apt(or apt-get) update
$ sudo apt(or apt-get) upgrade

 

✔ MySQL Server Install

$ sudo apt(or apt-get) install -y mysql-server

 

 

✔ MySQL Secure

$ sudo mysql_secure_installation

  • VALIDATE PASSWORD COMPONENT을 사용해 암호의 강도 설정을 할 수 있다.
    • 복잡한 비밀번호 설정은 "y" | "Y"
    • 단순한 비밀번호 설정은 "아무 키"

  • MySQL을 설치하면 자동으로 생성되는 익명의 유저가 있다.
    • 익명의 유저 계정을 삭제는 "y" | "Y"
    • 삭제하지 않으려면 "아무 키"

  • 다른 게스트들이 원격 접속으로 root 계정에 접근하는 것을 허용할지 확인
    • 원격으로 root 계정의 접근을 허락하지 않으면 "y" | "Y"
    • root 계정 접근을 허락하면 "아무 키"

  • "test" 데이터베이스 삭제 여부
    • "test" 데이터베이스 삭제를 원하면 "y" | "Y"
    • 삭제를 원하지 않으면 "아무 키"

  • 권한을 부여하는 테이블을 다시 로딩할 건지 여부
    • 지금 로딩을 원하면 "y" | "Y"
    • 로딩을 원하지 않으면 "아무 키"

✔ MySQL 접속

$ mysql -u root -p
Enter password:

 

✔ root 계정 초기 패스워드

운영체제에 따라 root 계정 초기 패스워드 지정이 다르게 나온다.

윈도우 경우 설치하면서 지정할 수 있고, RPM 패키지를 사용하여 설치하면 서버 오류 로그에 기록된다고 한다.

자세한 내용은 아래 MySQL 공식 문서 참조
Securing the Initial MySQL Account

초기 패스워드를 파일에서 찾지 못해서 아래의 방법으로 대신해서 비밀 번호를 변경했다.

$ sudo systemctl stop mysql
  • 가장 먼저 MySQL 서버를 정지
$ sudo mysqld_safe --skip-grant-tables &
  • mysql를 안전모드(윈도우의 안전모드 같은)로 인증 생략 옵션으로 실행
  • 실행이 유지된 채로 다른 터미널에서 다음 명령어를 수행
$ mysql -u root
  • root 계정으로 mysqld_safe에 접근
mysql> FLUSH PRIVILEGES;
  • grant reload 권한 재시작
mysql> ALTER USER 'root'@'localhost'identified by '계정password';
mysql> flush privileges;
  • 비밀번호를 변경해 주고, 권한 적용

전부 "Query OK, 0 rows affected"으로 성공했으면 mysql을 빠져나온다.

$ sudo kill -9 $(pgrep mysql)
$ sudo systemctl start mysql
$ mysql -u root -p
Enter password:
  • 실행 중인 mysq 서버를 kill 명령어로 종료
  • mysql 서버 시작
  • mysql 접속, 변경한 비밀번호로 접속이 잘 되는지 확인

 

✔ 계정 생성 및 권한 부여

$ create user 계정ID@'%'identified by '계정password';
$ grant all privileges on DB명.* to 계정ID'%' with grant option;
$ flush priviileges;
  • "%"는 모든 IP를 허용
  • "DB명.*" 대신 "*.*" 사용 시 모든 데이터베이스 접근 허용
    • grant all privileges on *.* to 계정ID'%' with grant option;
  • MySQL 8.0부터는 권한을 부여할 때 "with grant option"을 입력해줘야 한다

 

✔ MySQL 패키지 삭제

$ sudo apt(or apt-get) remove --purge mysql*
  • mysql 관련 패키지들 삭제

 

$ dpkg -l | grep mysql
$ sudo apt(or apt-get) remove --purge -y "패키지명"
  • sudo apt remove --purge mysql* 명령으로 안될 시 위의 명령어로 삭제
    • dpkg -l | grep mysql 명령으로 mysql 관련 파일들 리스트 확인
    • sudo apt remove --purge "패키지명" 파일들 리스트에서 해당 이름들을 패키지명에 적어준다

 

$ sudo rm -rf /etc/mysql /var/lib/mysql /var/log/mysql
$ sudo rm -rf /var/lib/dpkg/info/*
$ sudo apt(or apt-get) autoremove
$ sudo apt(or apt-get) autoclean
  • 남은 다른 폴더 등 삭제

 

 

🔗 Reference

댓글