Ubuntu 22.04 서버에 MySQL을 설치하고, 새로운 데이터베이스를 생성하며, 계정에 적절한 권한을 설정하는 방법을 안내합니다. 또한 외부 접속을 허용하는 방법도 추가로 설명하겠습니다.
1단계: 시스템 업데이트
먼저, 시스템 패키지를 최신 상태로 업데이트합니다. 터미널을 열고 다음 명령어를 입력하세요:
sudo apt update sudo apt upgrade -y
2단계: MySQL 설치
MySQL 서버를 설치합니다. 터미널에 다음 명령어를 입력하세요:
sudo apt install -y mysql-server
설치가 완료되면 MySQL 서비스가 자동으로 시작됩니다.
3단계: MySQL 접속 및 root 비밀번호 설정
root로 접속 한 뒤 비밀번호 초기화를 해 줍니다.
sudo mysql -u root -p
위 명령어를 입력하는 경우 “Enter password” 라고 나오는데 이때는 enter를 쳐주면 됩니다. 엔터를 입력하면 mysql에 접속됩니다.
4단계: MySQL 보안 설정
MySQL의 기본 보안 설정을 강화하기 위해 mysql_secure_installation
스크립트를 실행합니다. 터미널에 다음 명령어를 입력하세요:
sudo mysql_secure_installation
프롬프트에 따라 설정을 진행합니다.
- VALIDATE PASSWORD PLUGIN 설정: 비밀번호 강도를 설정합니다.
- 익명 사용자 삭제: 익명 사용자를 삭제합니다.
- 원격 루트 로그인 비활성화: root 계정의 원격 로그인을 비활성화합니다.
- 테스트 데이터베이스 삭제: 기본으로 생성된 테스트 데이터베이스를 삭제합니다.
- 권한 테이블 다시 로드: 권한 테이블을 다시 로드하여 변경 사항을 적용합니다.
5단계: 새로운 데이터베이스 생성
MySQL 셸에서 새로운 데이터베이스를 생성합니다. 예를 들어, exampledb
라는 이름의 데이터베이스를 생성하려면 다음 명령어를 입력하세요:
CREATE DATABASE exampledb;
MySQL 8 부터는 기본 character set 과 collation 이 utf8mb4과 utf8mb4_0900_ai_ci이므로 별도 설정이 필요 없습니다. MySQL 의 default character set 은 MySQL 의 설정 파일에 별도로 설정할 수 있습니다.
6단계: 새로운 사용자 생성 및 권한 부여
새로운 사용자를 생성하고 데이터베이스에 대한 권한을 부여합니다. 예를 들어, exampleuser
라는 사용자를 생성하고 exampledb
데이터베이스에 대한 모든 권한을 부여하려면 다음 명령어를 입력하세요:
CREATE USER 'exampleuser'@'localhost' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON exampledb.* TO 'exampleuser'@'localhost'; FLUSH PRIVILEGES;
7단계: 외부 접속 허용
MySQL이 외부 접속을 허용하도록 설정을 변경합니다. 먼저 MySQL 설정 파일을 엽니다:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
mysqld.cnf
파일에서 bind-address와 mysqlx-bind-address
항목을 찾습니다. 기본값은 127.0.0.1
로 설정되어 있을 것입니다. 이를 주석 처리하거나, 서버의 외부 IP 주소 또는 0.0.0.0
으로 변경합니다:
#bind-address = 127.0.0.1 #mysqlx-bind-address = 127.0.0.1 bind-address = 0.0.0.0 mysqlx-bind-address = 0.0.0.0
파일을 저장하고 닫습니다. 변경 사항을 적용하려면 MySQL 서비스를 다시 시작합니다:
sudo systemctl restart mysql
8단계: 방화벽 설정
외부 접속을 허용하기 위해 MySQL 포트(기본적으로 3306)를 방화벽에서 열어야 합니다. 다음 명령어를 입력하여 방화벽 규칙을 추가합니다:
sudo ufw allow 3306/tcp sudo ufw reload
9단계: 외부 접속용 사용자 권한 설정
외부에서 MySQL에 접속할 수 있는 사용자를 생성하고 권한을 부여합니다. MySQL 셸에서 다음 명령어를 입력하세요:
CREATE USER 'exampleuser'@'%' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON exampledb.* TO 'exampleuser'@'%'; FLUSH PRIVILEGES;
여기서 %
는 모든 IP 주소에서 접속을 허용함을 의미합니다.