MySQL의 주요 변화
2021년 MySQL을 5.7에서 8.0으로 업그레이드했습니다. 성능 개선도 있었지만, 몇 가지 문제가 발생했습니다.
주요 변화 및 주의사항
1. 기본 인증 플러그인 변경
-- MySQL 5.7: mysql_native_password
-- MySQL 8.0: caching_sha2_password (기본값)
-- PHP 연결 문제가 생길 수 있으므로 PHP 버전 확인
// PHP 7.2 이상에서만 caching_sha2_password 지원
-- 필요시 사용자 플러그인 변경
ALTER USER 'user'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
2. 예약어 사용 금지
MySQL 8.0에서는 더 많은 예약어가 추가되었습니다. 칼럼명으로 예약어를 사용하면 에러가 발생합니다.
3. 그룹 함수의 엄격성
-- MySQL 5.7에서 작동하는 쿼리
SELECT user_id, name, SUM(amount) FROM orders GROUP BY user_id;
-- MySQL 8.0에서는 에러
-- ONLY_FULL_GROUP_BY 모드 때문
-- 수정 방법
SELECT user_id, MAX(name), SUM(amount) FROM orders GROUP BY user_id;
4. 윈도우 함수
MySQL 8.0은 윈도우 함수를 지원합니다. 이를 활용하면 복잡한 쿼리를 간단히 할 수 있습니다.