NAS 셸에서 루트로 MySQL에 들어갑니다.

 
mysql -u root -p

접속 후, 현재 계정 상태도 한 번 볼 수 있고:

 
SELECT user, host FROM mysql.user WHERE user = 'aipost.4men.kr';

이제 도커 컨테이너에서도 쓰일 수 있게 계정을 하나 더 열어줍니다.

방법 A) 그냥 내부 어디서나 접속 허용 (%) – 제일 간단

 
GRANT ALL PRIVILEGES ON aipost_db.* TO 'aipost.4men.kr'@'%' IDENTIFIED BY '지금 쓰는_비밀번호'; FLUSH PRIVILEGES;

aipost_db.* → DB 이름이 다르면 바꿔주세요.
비밀번호는 지금 PHP와 n8n에서 쓰는 그 비번 그대로.

이렇게 하면:

  • aipost.4men.kr@localhost

  • aipost.4men.kr@192.168.0.10

  • aipost.4men.kr@172.17.0.X (도커 컨테이너)

전부 허용됩니다.

방법 B) Docker 브리지 대역만 허용하고 싶으면

 
GRANT ALL PRIVILEGES ON aipost_db.* TO 'aipost.4men.kr'@'172.17.0.%' IDENTIFIED BY '지금 쓰는_비밀번호'; FLUSH PRIVILEGES;

3. 그 다음 n8n에서 확인

지금 쓰고 계신 n8n MySQL 크리덴셜을 그대로 유지하되, 아래만 다시 체크하세요.

  • Host: 192.168.0.10

  • Database: aipost_db

  • User: aipost.4men.kr

  • Password: 위에서 GRANT에 쓴 비밀번호

  • Port: 3306

  • SSL / SSH 터널 옵션: 모두 끔

그리고 Retry 눌러보면 이제는 붙어야 합니다.


4. 혹시 또 안 붙으면 바로 볼 것 1개

추가로 한 번 더 확실히 보려면:

 
docker exec -it n8n sh # 컨테이너 안에서 (mariadb-client 설치 후) mysql -h 192.168.0.10 -P 3306 -u 'aipost.4men.kr' -p

여기서 접속 OK인데 n8n만 실패한다 → n8n 설정 문제
여기서도 Access denied for user 'aipost.4men.kr'@'172.17.0.X' 가 뜬다 → 위 GRANT가 제대로 안 먹은 것.

하지만 지금 상태에선 거의 확실하게
aipost.4men.kr@'%' 또는 @'172.17.0.%' 하나만 추가하면 n8n에서도 바로 붙을 거예요.

이 에러는 DB 문제가 아니라 n8n 워크플로우 내부 JSON 문제가에요.


1. 에러 의미부터

Unrecognized node type: n8n-nodes-base.mysql
= “워크플로우에 n8n-nodes-base.mysql이라는 타입의 노드가 있는데,
내가 가진 노드 목록에 그런 타입은 없다”는 뜻입니다.

n8n에서 MySQL 노드의 정식 타입 이름은:

 
n8n-nodes-base.mySql // S가 대문자

인데 지금 워크플로우에는

 
n8n-nodes-base.mysql // 전부 소문자

로 들어가 있어서 런타임이 못 알아보고 죽는 거예요.
(타입 이름은 대소문자까지 완전 동일해야 합니다.)

이건 보통:

  • 예전에 다른 데서 복붙한 JSON을 가져왔거나

  • 수동으로 JSON을 고쳤거나

  • 아주 옛날/다른 버전에서 만든 워크플로우를 가져왔을 때 생깁니다.


2. 제일 간단한 해결 방법 – 노드 지우고 다시 만들기

UI에서 바로 할 수 있는 방법이에요.

  1. 지금 에러 나는 MySQL 노드를 워크플로우 캔버스에서 삭제.

  2. 왼쪽 노드 목록에서 다시 MySQL 노드를 드래그해서 가져오기.

  3. 방금 만든 MySQL Credential (MySQL account) 을 그 노드에 선택해서 연결.

  4. 다시 Execute Step 눌러보기.

새로 만든 노드는 내부적으로 자동으로 n8n-nodes-base.mySql 타입으로 들어가서
이제 “Unrecognized node type” 에러는 없어져야 합니다.


3. JSON으로 직접 고치는 방법(조금 더 하드코어)

혹시 같은 워크플로우에 MySQL 노드가 여러 개라면 한 번에 고치는 것도 가능해요.

  1. 워크플로우 편집 화면에서
    오른쪽 위 메뉴(…) → “JSON 보기” / “View as JSON” 같은 버튼 클릭.

  2. JSON에서 n8n-nodes-base.mysql 로 검색.

  3. 모두 다음처럼 수정:

     
    "type": "n8n-nodes-base.mySql"
  4. 저장(Save) 후 다시 실행.

이렇게 하면 옛날에 잘못 들어간 타입명이 모두 정상화됩니다.


4. 정리

  • MySQL 연결 설정은 이미 성공 ✅

  • 현재 에러는 노드 타입 오타(대소문자) 때문에 나는 거고,

  • 해결책은:

    • MySQL 노드 삭제 → 다시 추가해서 Credential만 선택하거나

    • JSON에서 "n8n-nodes-base.mysql""n8n-nodes-base.mySql" 로 수정

이렇게 한 번 수정해 보시고,
그래도 다른 에러가 새로 뜨면 그 메시지 그대로 알려주면
그다음부터는 실제 쿼리 작성/결과 받아서 다음 노드로 넘기는 부분까지 이어서 같이 짜볼게요.