설치
sudo apt update
sudo apt install mysql-server
실행
sudo systemctl start mysql
서버 재부팅 시 mysql 자동 시작 설정
sudo systemctl enable mysql
포트 오픈
mysql의 기본 포트는 3306
- 보안 그룹에서 3306 포트 오픈
- aws같은 클라우드 환경에서 보안 그룹은 VPC 수준에서 트래픽을 제어하므로 해당 EC2 인스턴스에 도달하기 전부터 외부 트래픽을 필터링
- ufw 같은 로컬 방화벽이 설정되어 있지 않아도 외부로부터의 접근은 보안 그룹 설정에 의해 차단
config 설정
외부 접속 허용
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
bind-address = 0.0.0.0
- 기본 설정인 127.0.0.1 localhost에서 모든 접속을 허용하는 0.0.0.0으로 수정
서비스 재시작
sudo systemctl restart mysql
- config 파일 수정 후 반영을 위해 재시작
계정 관리
root 계정
- root는 mysql 서버에서 모든 권한을 가진 최고 관리자 계정
- 따라서 외부에서는 접속을 못하도록 설정
- ubuntu에 설치된 mysql은 기본적으로 로컬 접속만 가능하며 비밀번호 대신 운영 체제 사용자 인증(auth_socket)을 사용
로그인
sudo mysql -u root
root 사용자 검색
select user,host,plugin from mysql.user where user ='root';
+------+-----------+-------------+
| user | host | plugin |
+------+-----------+-------------+
| root | localhost | auth_socket |
+------+-----------+-------------+
- host는 localhost이므로 외부 접속이 불가
- plugin을 보면 auth_socket 방식으로 운영체제에서 사용자 인증
외부에서 연결 가능한 admin 계정 생성
CREATE USER '생성할계정이름'@'%' IDENTIFIED BY '비밀번호';
권한 부여
GRANT ALL PRIVILEGES ON *.* to '생성된계정이름'@'%';
권한 적용
FLUSH PRIVILEGES;
애플리케이션 전용 계정 생성
사용하는 데이터베이스에 대해 필요한 권한만 부여하여 사용
mysql 종료
exit
'database' 카테고리의 다른 글
MySQL Error [1248]: Every derived table must have its own alias (0) | 2024.03.16 |
---|---|
MySQL Error [1093]: You can't specify target table 테이블명 for update in FROM clause (0) | 2024.03.16 |