기술블로그
📌 MySQL Safe Update Mode란? 활성화, 비활성화
Chansman
2025. 3. 25. 16:31
ChatGPT의 말:
MySQL에서 **Safe Update Mode**를 비활성화하는 방법은 MySQL Workbench 또는 MySQL 클라이언트에서 설정을 변경하여 **UPDATE**나 DELETE 쿼리를 보다 자유롭게 실행할 수 있도록 하는 것입니다.
Safe Update Mode란?
Safe Update Mode는 기본적으로 UPDATE 또는 DELETE 쿼리를 실행할 때 WHERE 조건을 컬럼에 인덱스가 설정되지 않은 컬럼에서 사용하거나, 조건 없이 전체 데이터를 삭제하는 것을 방지합니다. 이를 통해 실수로 데이터가 손실되는 것을 예방합니다.
Safe Update Mode 끄는 방법
방법 1: MySQL Workbench에서 끄기
- MySQL Workbench 실행 후, 연결된 데이터베이스에 접속합니다.
- Edit 메뉴에서 Preferences를 클릭합니다.
- SQL Editor 탭으로 이동합니다.
- Safe Updates 체크박스를 해제합니다.
- Reconnect를 클릭하여 변경 사항을 반영합니다.
방법 2: 세션 단위로 Safe Update Mode 끄기 (MySQL CLI)
MySQL 세션에서 **Safe Update Mode**를 일시적으로 끄는 방법은 다음과 같습니다:
SET SQL_SAFE_UPDATES = 0;
- 이 명령을 실행하면 현재 세션에서만 Safe Update Mode가 비활성화됩니다. MySQL Workbench나 클라이언트에서 새로 연결할 경우, 설정이 초기화됩니다.
예시)
SET SQL_SAFE_UPDATES = 0;
DELETE b1
FROM books b1
JOIN books b2
ON b1.title = b2.title
AND b1.bookID > b2.bookID;
-- 끝나면 다시 켜고 싶다면
SET SQL_SAFE_UPDATES = 1;
방법 3: 영구적으로 Safe Update Mode 끄기 (my.cnf 수정)
MySQL 서버를 영구적으로 설정하려면 MySQL 설정 파일(my.cnf 또는 my.ini)을 수정해야 합니다. 이 방법은 MySQL 서버가 재시작된 후에도 적용됩니다.
- MySQL 설정 파일(my.cnf 또는 my.ini)을 편집기로 엽니다.
- 리눅스: /etc/mysql/my.cnf 또는 /etc/my.cnf
- 윈도우: C:\ProgramData\MySQL\MySQL Server X.Y\my.ini (X.Y는 MySQL 버전)
- [mysqld] 섹션 아래에 다음 줄을 추가합니다:
-
ini
- MySQL 서버 재시작:
- 리눅스: sudo systemctl restart mysql 또는 sudo service mysql restart
- 윈도우: MySQL 서비스를 재시작
sql_mode=NO_AUTO_VALUE_ON_ZERO,STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION
주의사항
- **Safe Update Mode**를 비활성화하면 실수로 데이터를 잘못 삭제하거나 업데이트할 가능성이 커집니다. 그러므로 데이터베이스에서 DELETE나 UPDATE 쿼리를 실행할 때 항상 조건을 신중하게 설정해야 합니다.
- WHERE 절이 없는 DELETE 또는 UPDATE 쿼리는 전체 데이터를 변경하거나 삭제할 수 있으므로 항상 조건을 명확히 지정해야 합니다.
결론
Safe Update Mode를 비활성화하면, 보다 자유롭게 **UPDATE**나 DELETE 쿼리를 실행할 수 있지만, 그만큼 실수로 데이터를 삭제하거나 업데이트할 위험이 커지므로 신중하게 쿼리를 작성하는 습관이 중요합니다.