Ghost was able to start, but errored during boot with: Access denied for user 'root'@'localhost' (using password: YES) - 디지털 오션 고스트 블로그 설치시 mysql 권한 에러

Digital Ocean에 고스트 원클릭 설치시에 발생할 수 있는 MySQL 'root'@'localhost' 권한 문제에 대한 해결책

Ghost was able to start, but errored during boot with: Access denied for user 'root'@'localhost' (using password: YES) - 디지털 오션 고스트 블로그 설치시 mysql 권한 에러
Photo by Mailchimp / Unsplash

고스트 블로그 첫글

고스트 블로그를 설치하고 가장 먼저 쓰는 글이 Trouble Shooting에 대한 글이 될 줄은 몰랐습니다 ㅎㅎ

디지털 오션 원클릭 설치

일단 공식사이트에서 위와같이 원클릭 설치를 지원한다면서 소개하는 것이 디지털 오션입니다. 설치를 한 번에 해주기때문에, Ghost pro보다는 저렴한 가격에 고스트를 활용하고 싶어서 이용해봤는데 설치과정이 순탄치 않았습니다.

처음에는 메모리 부족으로 설치가 진행되지 않았는데, 디지털 오션 콘솔 재접속후에 다시 설치가 자동으로 진행 될때는 무사히 넘어갔습니다.

MySQL 8.0 권한 문제

MySQL이 8.0에 들어서면서 권한에 대한 부분이 좀 까다로워졌는데, Root 권한으로 뭔가 하는 걸 제한하는 경향이 있는 것 같습니다.

일단 MySQL 접속부터가 어려운 상황이었는데 아래 포스팅을 참고해서 작업을 진행했습니다.

Reset MySQL root password in Ubuntu 20.04 for Ghost 👻 — Digital Ocean
If you want to make your environment on Digital Ocean extra secure and resilient, improving MySQL will be your go to. Follow these steps to start !

mysql -u root -p
mysql에 root 아이디로 접속합니다. 처음에 ghost가 설치될때 알려준 password를 입력합니다.
sudo nano /root/.digitalocean_password
패스워드가 기억나지 않는다면, 위의 경로를 통해서 확인할 수 있습니다.

여기서 재미있는 점은 디지털오션에서 초기에서 자동으로 세팅된 MySQL 패스워드를 가져다가 입력을 해도 로그인이 되지 않는다는 점입니다.

MySQL 권한 얻기

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
루트 권한으로 mysql 설정 파일을 편집합니다
...
[mysqld]
user = mysql
skip-grant-tables
...
skip-grant-tables 라는 부분을 추가해서 권한에 대한 부분을 무시하고 접속할 수 있도록 임시로 설정해줍니다. 모든 작업이 끝난 후 저는 이 부분을 다시 지워줬습니다.
service mysql restart
설정값이 적용되도록 mysql을 재부팅해줍니다
mysql -u root -p
이제 mysql에 접속해보면 제대로 접속이 될 겁니다.
flush privileges;
권한에 대해 혹시 남아있을지 모를 캐시를 지워주기 위해 실행해줍니다.
ALTER USER 'root'@'localhost' IDENTIFIED BY '새로운패스워드';
'root'@'localhost'에 새로운 패스워드를 지정해줍니다.
quit;
query ok가 확인되면, 이제 mysql 에서 빠져나갑니다.
sudo killall -u mysql
mysql과 관련된 프로세스를 모두 정지시킵니다.
service mysql restart
mysql을 재실행시켜줍니다. 이것으로 끝입니다.

Ghost Setup

mysql에 대한 부분은 위와같이 진행해주면 끝이납니다. 하지만 아직 ghost 가 제대로 실행되는 상황이 아니라서 추가로 아래와 같이 실행해줬습니다.

ghost setup --dbuser root --dbpassword 새로운패스워드

몇 가지 질문에 답해주고 나면 정상적으로 시스템 설정이 마무리되고, ghost가 정상실행된다는걸 확인할 수 있습니다.

험란한 과정이 있었지만, 지금 이렇게 글을 작성할 수 있도록 설정이 마무리 되서 기쁘군요. ㅋㅋ