본 시리즈는 작성자의 이해와 경험을 바탕으로 실습 위주의 설명을 기반으로 작성되었습니다.
실습 위주의 이해를 목표로 하기 때문에 다소 과장이 많고 생략된 부분이 많을 수 있습니다.
따라서, 이론적으로 미흡한 부분이 있을 수 있는 점에 대해 유의하시기 바랍니다.
또한, 본 시리즈는 ChatGPT의 도움을 받아 작성되었습니다.
수 차례의 질문을 통해 도출된 여러가지 다양한 방식의 코드를 종합하여
작성자의 이해와 경험을 바탕으로 가장 정석으로 생각되는 코드를 재정립하였습니다.
root
비밀번호 변경새 계정
추가 및 외부접속 허용Shell Script
를 사용하여 자동화install_mysql.sh
#!/bin/bash
# 변수명 설정
ROOT_PASSWORD='your_root_password'
NEW_USERNAME='your_new_mysql_username'
NEW_PASSWORD='your_new_mysql_password'
# 방화벽 설정
if sudo ufw status | grep -qw inactive; then
echo "방화벽이 비활성화되어 있습니다. 방화벽을 활성화합니다."
sudo ufw enable
fi
sudo ufw allow 3306
# MySQL 설치
echo "MySQL 설치를 시작합니다..."
sudo apt-get update
sudo apt-get install -y mysql-server
# MySQL 서비스 시작
sudo systemctl start mysql
sudo systemctl enable mysql
# 루트 비밀번호 설정 및 보안 설치 실행
sudo mysql -e "ALTER USER 'root'@'localhost' IDENTIFIED BY '${ROOT_PASSWORD}';"
sudo mysql -e "FLUSH PRIVILEGES;"
# 사용자 추가 스크립트
sudo mysql -e "CREATE USER '${NEW_USERNAME}'@'%' IDENTIFIED BY '${NEW_PASSWORD}';"
sudo mysql -e "GRANT ALL PRIVILEGES ON *.* TO '${NEW_USERNAME}'@'%' WITH GRANT OPTION;"
sudo mysql -e "FLUSH PRIVILEGES;"
# MySQL 설정 파일에서 bind-address 값을 0.0.0.0으로 변경하여 어느 주소에서든 접근 가능하도록 설정
sudo sed -i '/bind-address/s/^#//g' /etc/mysql/mysql.conf.d/mysqld.cnf
sudo sed -i 's/127.0.0.1/0.0.0.0/g' /etc/mysql/mysql.conf.d/mysqld.cnf
# MySQL 서비스 재시작
sudo systemctl restart mysql
echo "MySQL 설치 및 사용자 추가가 완료되었습니다."
%
권한: 모든 IP 접근 허용, MySQL Workbench 등 외부접속이 필요한 경우 사용localhost
권한: localhost
IP 접근 허용,root
계정 등 외부접속으로부터 보안상 보호해야할 경우 사용$ sudo chmod +x install_mysql.sh
$ ./install_mysql.sh
Shell Script
를 사용하여 자동화uninstall_mysql.sh
#!/bin/bash
# 사용자에게 MySQL 삭제 확인 메시지 표시
echo "MySQL 클린 삭제를 시작합니다. 모든 MySQL 데이터가 제거됩니다."
read -rp "정말로 MySQL을 클린 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다. (y/n): " confirm
if [[ $confirm == [yY] || $confirm == [yY][eE][sS] ]]; then
echo "MySQL 클린 삭제를 시작합니다..."
# MySQL 서비스 중지
sudo systemctl stop mysql
# MySQL 패키지 및 관련 패키지 제거
sudo apt-get remove --purge -y mysql-server mysql-client mysql-common mysql-server-core-* mysql-c> sudo apt-get autoremove -y
sudo apt-get autoclean -y
# MySQL 설정 파일 및 데이터베이스 디렉토리 삭제
sudo rm -rf /etc/mysql /var/lib/mysql
# MySQL 로그 파일 삭제
sudo rm -rf /var/log/mysql
# MySQL 사용자 및 그룹 삭제 (선택적)
sudo deluser mysql
sudo delgroup mysql
echo "MySQL이 시스템에서 완전히 제거되었습니다."
else
echo "MySQL 클린 삭제가 취소되었습니다."
$ sudo chmod +x uninstall_mysql.sh
$ ./uninstall_mysql.sh