기술블로그

📌 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에서 끄기

  1. MySQL Workbench 실행 후, 연결된 데이터베이스에 접속합니다.
  2. Edit 메뉴에서 Preferences를 클릭합니다.
  3. SQL Editor 탭으로 이동합니다.
  4. Safe Updates 체크박스를 해제합니다.
  5. 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 서버가 재시작된 후에도 적용됩니다.

  1. MySQL 설정 파일(my.cnf 또는 my.ini)을 편집기로 엽니다.
    • 리눅스: /etc/mysql/my.cnf 또는 /etc/my.cnf
    • 윈도우: C:\ProgramData\MySQL\MySQL Server X.Y\my.ini (X.Y는 MySQL 버전)
  2. [mysqld] 섹션 아래에 다음 줄을 추가합니다:
  3. ini 
     
  4. 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 쿼리를 실행할 수 있지만, 그만큼 실수로 데이터를 삭제하거나 업데이트할 위험이 커지므로 신중하게 쿼리를 작성하는 습관이 중요합니다.