DB 포트 변경
기본 DB 포트가 아닌, 다른 포트로 변경하는게 보안상 더 안전하다.
(포트 변경 후, 외부에서 포트로 접속 하려면 해당 포트 방화벽에서 열어주어야 함)
1. 서버 접속 후 db 설정파일 열기
vi /etc/my.cnf.d/server.cnf
2. 다음 설정 파일에서 [mysql] 섹션 바로 아래에 port 변경
[mysqld]
port=바꿀 포트 번호
3. 포트번호 변경 후 저장하고 mariadb 재기동
systemctl restart mariadb
4. mariadb 실행중 포트 확인
netstat -tnlp
DB 루트 패스워드 변경
기본 루트 패스워드 쓰지 말고, 복잡한 패스워드로 바꾼다.
1. DB 접속
mysql -u root -p
2. 패스워드 업데이트
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_secure_password');
3. 권한 flush
FLUSH PRIVILEGES;
4. 패스워드 포맷 확인
USE mysql; SELECT Host, User, Password FROM user WHERE User = 'root';
사용자 계정 생성 & 권한 설정
root계정은 외부 접속 못하게 한다. 사용자 계정도 가급적 내부 접속만 허용하게 한다.
1. 사용자 생성
# create user '계정'@'접속위치' identified by '패스워드';
ex) create user 'test'@'127.0.0.1' identified by 'Password'; -- 내부접속만 허용
ex) create user 'test2'@'%' identified by 'Password'; -- 외부접속 허용
2. 권한 주기
전체 권한 부여 (접속 위치에 %는 쓰지 말도록 하자. 가급적 localhost만 쓰거나, ip를 특정하는 것이 좋다.)
grant all privileges on DB이름.테이블 to '계정'@'접속위치';
ex) grant all privileges on testDB.* to 'test2'@'%';
ex) grant all privileges on testDB.* to 'test2'@'localhost';
usage (삭제하면 로그인조차 안됨) 권한 부여, 삭제
usage 권한 부여
mysql> GRANT USAGE ON *.* TO USER_NAME@HOST IDENTIFIED BY 'USER_NAME';
usage 권한 삭제
mysql> REVOKE USAGE ON *.* FROM USER_NAME@HOST;
3. 권한 적용
flush privileges;
4. 권한 확인
show grants for '계정'@'접속위치';
외부접속 허용제거
가급적 모든 아이디의 외부 접속을 막고, 꼭 필요하다면 아이피를 특정하여 외부 접속을 허용한다.
% 모든아이피 허용제거
mysql> DELETE FROM mysql.user WHERE Host=’%’ AND User=’아이디’;
특정ip허용 제거
mysql> DELETE FROM mysql.user WHERE Host=’111.111.111.111′ AND User=’아이디’;
설정적용
mysql> FLUSH privileges;
사용자 확인
select host, user, password from mysql.user;
DB 백업/복구, 자동백업(crontab)
해킹을 대비하여, 매일 DB 백업을 하도록 설정한다.
- crontab에 db 백업 스크립트 등록하여, 자동으로 백업하도록 설정
- 백업 파일이 쌓이면 디스크 full 날 수 있으므로, 특정 주기로 예전 백업은 삭제하도록 설정
https://foxydog.tistory.com/94
참고
https://tipland.tistory.com/47
https://da-new.tistory.com/237
https://blog.servis.co.kr/index.php/2019/06/28/mysql-not-allowed-to-connect/
'DB' 카테고리의 다른 글
[MariaDB] root 패스워드 리셋 방법 (0) | 2023.07.19 |
---|---|
[DB] MariaDB 인코딩 (0) | 2023.02.10 |
[SQLite] SQLite DB 한계 (0) | 2022.04.03 |
[InnoDB] cannot allocate memory for the buffer pool 에러 (0) | 2022.03.22 |
데이터베이스(DB) vs. 데이터베이스 관리 시스템(DBMS) (0) | 2021.12.20 |