2026, 새로운 도약을 시작합니다.

MySQL 8.0 이상 버전에서의 그누보드 비밀번호 검증 코드

· 2년 전 · 2117 · 4

카페 24에서 운영중이던 홈페이지를 수정사항이 생겨 로컬로 개발환경을 세팅해서 (php, db) 로그인을 해보려 했으나 로그인이 되질 않더라구요.

원인을 찾아보니 그누보드의 lib/common.lib.php 파일에서 비밀번호 검증 할때 쓰이는 코드 중 mysql 8.0 버전 이상에서는 사라진 mysql 함수가 있었습니다.

1890025293_1688107870.1125.png

위의 password(..) 함수가 더이상 존재하지 않고 대신에 SHA2() 함수를 사용하라고 스택오버플로우에서 얘기하더라구요

출처) https://stackoverflow.com/questions/52320576/in-mysql-server-8-0-the-password-function-not-working

그래서 해당 함수를 아래와 같이 바꿨습니다.

1890025293_1688108005.8052.png

기존의 password와 유사하게 문자열로부터 해쉬값을 생성하는 함수로 변경하고

DB 상에서는 phpmyadmin 에서 UPDATE 문을 사용해 수동으로 검증 코드에 맞게 mb_password 값을 변경해 주었습니다.

UPDATE g5_member SET mb_password = CONCAT('*', UPPER(SHA1(UNHEX(SHA1($value))))) WHERE mb_id = 'admin';

단, 저는 로컬에서 admin 계정만 이런식으로 임시방편으로 로그인이 가능하게 만든 것이고 이미 많은 수의 유저들이 사용하는 운영중인 홈페이지에서 mysql 8.0 으로 버전업에 사용하기엔 부적절한 방법 같습니다.

|

댓글 4개

php 코드로 구현할 수도 있습니다.

password (4.1 이후 41자리): https://stackoverflow.com/a/27282287

old_password (4.0이하 버전 16자리): https://onlinephp.io/code/a7a66c7e4b79b52aaa9f948fc8b8f23fe2644492
사실.. 둘다 쓰면 안되고 pbkdf2 써야 해요.
@라엘 저게 의도적으로 사용하기보다는 (사이트에 따라) 그누보드에서 여전히 사용되는 함수입니다.

PASSWORD() 함수가 사용되던 시절에 생성된 암호가 여전히 DB에 저장되어있을 때죠.
github에 이슈로 등록해뒀습니다.
https://github.com/gnuboard/gnuboard5/issues/247

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

그누보드5 팁자료실

번호 제목 글쓴이 날짜 조회
공지 3년 전 조회 4,598
2741 3일 전 조회 112
2740 4일 전 조회 104
2739 1주 전 조회 209
2738 1주 전 조회 217
2737 1주 전 조회 181
2736 1주 전 조회 280
2735 3주 전 조회 281
2734 3주 전 조회 263
2733 1개월 전 조회 265
2732 1개월 전 조회 301
2731 1개월 전 조회 267
2730 1개월 전 조회 226
2729 1개월 전 조회 356
2728 1개월 전 조회 245
2727 1개월 전 조회 422
2726 1개월 전 조회 256
2725 1개월 전 조회 330
2724 1개월 전 조회 360
2723 1개월 전 조회 267
2722 1개월 전 조회 300
2721 1개월 전 조회 211
2720 2개월 전 조회 304
2719 2개월 전 조회 307
2718 2개월 전 조회 202
2717 2개월 전 조회 336
2716 2개월 전 조회 202
2715 2개월 전 조회 312
2714 2개월 전 조회 273
2713 2개월 전 조회 376
2712 2개월 전 조회 289
🐛 버그신고