Ghost 태그 수정하기
Ghost 에서 Tag를 수정하는 메뉴가 없어 MySQL 데이터베이스에 접속하여 태그를 수정하는 방법을 소개한다.
Ghost 는 Ghost 일까? ghost 일까?
Ghost 블로그 로고 이미지는 ghost 로 소문자로 표시하고 있고 사이트에서는 Ghost로 표기하고 있다. 도대체 뭐가 맞는걸까?

블로그에 Ghost에 관련된 글을 작성하면서 모두 ghost로 작성했는데, 브랜드 이름은 Ghost인것을 확인하고 포스팅 했던 글에서 ghost를 모두 찾아서 Ghost 로 변경하는 작업을 했다.

그런데 문제를 하나 발견했다. 내가 작성한 글은 에디터에서 글을 수정하면 되는데, 포스팅에 Tag로 등록했던 단어는 수정이 되지 않는것이다.
Ghost의 Dashboard 에서 Tag를 관리하는 메뉴로 들어가 보았지만 역시나 태그 수정기능은 없었다.
나는 태그를 외부에 노출될 때 ghost가 아닌 Ghost로 출력하고 싶은데 이미 한번 생성된 태그의 이름을 수정할 수 없는것이다. SLUG야 어차피 URL 로 사용하기 때문에 모두 소문자로 저장되지만 외부에서 노출되는 태그는 Ghost로 출력하고 싶었다.
그래서 Ghost의 데이터베이스인 MySQL 에 접속해서 직접 고치기로 한다.
SSH 클라이언트로 서버에 접속한 뒤 MySQL로 접속한다. 이 블로그를 통해서 Amazon Lightsail 과 iPad 에서 Termius 앱으로 SSH 접속하는 방법을 소개했으니 필요하면 앞의 포스팅을 참조하면 된다.
mysql -u root -p
현재 MySQL 에서 사용중인 데이터베이스 목록을 살펴보자
show databases;

Ghost를 설치할 때 ghost-cli 로 설치 했다면 설치하는 과정에서 database 이름을 지정하는 프롬프트가 나왔을것인데 그 때 입력한 데이터베이스가 보일 것이다. MySQL 에서 데이터베이스를 사용할 때는 use 명령어를 사용한다.
use blog_sungkwang_dev_prod

이제 Ghost 에서 사용하는 테이블을 모두 살펴보자. 데이터베이스 내부의 모든 테이블을 조회하기 위해서 다음 명령어를 사용한다.
show tables;

Ghost 에서 정말 많은 테이블을 사용하고 있다는 것을 확인할 수 있다. 여기서 우리는 태그에 관련된 테이블 tags 테이블을 살펴볼 것이다. 테이블의 데이터를 조회하기 위해서 우리는 select 문을 사용하여 살펴볼 것이다.
select * from tags;
복잡하고 긴 컴럼명과 데이터 때문에 작은 화면에 모두 출력하면 아래 이미지처럼 필요한 데이터를 살펴보기 어렵게 된다.

우선 tags 테이블의 구조를 살펴보자.
desc tags;
테이블 스키마를 보고 우리가 필요한 컬럼만 확인하면 된다. Ghost에서 태그의 이름은 tags테이블의 name 으로 슬러그는 slug 컬럼에 저장된다.

태그 테이블의 name과 slug만 다시 조회해보자.
select name, slug from tags;
이제 잘 볼 수 있게 데이터가 출력된다. 그리고 내가 수정하고 싶어하는 ghost 태그도 보인다.

이제 ghost 태그 이름을 Ghost 로 업데이트 한다.
update tags set name='Ghost' where slug='ghost';
tags 테이블의 데이터를 업데이트 한 후 테이블을 조회하면 아래와 같이 Ghost로 이름이 변경된 것을 확인할 수 있다.

테이블의 내용이 정상적으로 확인되었으면 데이터베이스에 완전히 반영하기 위해서 commit 명령어를 입력하고 종료하면 된다.
commit;

데이터베이스 데이터를 수정했으니 다시 Ghost Dashboard 를 살펴보면 반영된 사실을 확인할 수 있다.

에디터에서 태그를 입력하는 부분을 살펴보면 태그가 수정되어 있는것을 확인할 수 있다.

사용자들이 블로그 태그를 검색해서 확인할 수 있는 https://blog.sungkwang.dev/tag/ghost 로 접근해보면 태그 이름이 Ghost로 적용된 것을 확인할 수 있다.

질문 및 의견을 남겨주세요 >