어제까지만 해도 희망 같은 건 없어 보였던 내 Database 걸음마 떼기..
오늘 다시 한 번 도전하여 꼭 해결하리라 다짐한 후 간만에 포스팅하기로 결정.
시작.
일단 어제 있었던 일 기록.
==09/02==
windows에 MariaDB 서비스 생성 완료.
Ubuntu 22.04 버전 다운로드 후, 계정 생성 및 패스워드 설정까지 완료.
windows cmd에서 Ubuntu에 원격 접속까지 완료.
근데 cmd에서(원격 접속한 상태) mysql -u root -p 커맨드가 실행이 안 되는 거임.
그래서 원격 접속에 문제가 있는 것 같아 일단 Ubuntu에서 위 커맨드를 똑같이 실행해봄.
근데 로컬 환경에서도 안 되는 거임..? (ㅋㅋ 대장정의 시작)
원격 접속 문제면 몰라도 적어도 Ubuntu에서는 되어야 정상인데,, 라는 생각과 동시에 엄청난 에러들을 마주함.
can't connect to mysql server on 'localhost' 10061 -> 이 괴물같은 녀석아
처음엔 뭣도 모르고 Ubuntu 및 MariaDB 문제인가보다 하고 전부 재설치하기로 결정.
그런데, However, 그러나,
MariaDB가 실행되지 않는 시스템 오류 1067이(가) 생겼습니다. / 프로세스가 예기치 않게 종료되었습니다.
?
아니 이건 기본 중에 기본이라 무조건 되어야 하는데..?? ;; 라는 생각과 함께 내 뇌도 예기치 않게 멈춰버림.
힘겹게 내 brain을 다시 구동시켰고, cmd에서 MariaDB를 설치해보기로 함.
-> FATAL ERROR: CreateService failed (1073)
이젠 화도 안 남 (사실 어젠 노트북 부술 뻔했음)
에러처럼 나도 치명상 입고 작전상 후퇴하기로 함.
일단 정신적으로 너무 힘들었고.. 오류를 한 번에 몇 십개를 마주하다보니 멘탈이 안 나갈래야 안 나갈 수가 없었음.
"refresh 하고 내일 다시 시작해보자 !"라는 다짐과 함께 집으로 ㄱㄱ씽
==09/02 종료==
지금부터는 오늘 있었던 일이다.
==대망의 09/03==
09/03/일/12:31pm 시작
cmd에서도 MariaDB 설치가 안 되길래 Ubuntu로 MariaDB 설치해보기로 함. (지금 보니 내가 왜 이랬는지 싶음. 현재 내 목표는 window에서 ubuntu로 원격 접속 후 MaridDB를 설치하기 위함인데, 이땐 그냥 멘탈 나가서 저런 짓 저랬나봄.)
MariaDB 전부 삭제 후 Ubuntu로 MariaDB 재설치(기존엔 웹브라우저에서 다운받았음)
MariaDB 정상적으로 설치됨.
but, ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) 이라는 error 녀석 등장.
후.. 정말 마우스를 집어던지려던 그 순간,
MariaDB 서비스 자체를 삭제할 수 있다는 사실을 알게 됨.
서비스 삭제 후 cmd를 통해 MariaDB 서비스 생성하니, 이제는 local error 안 뜨고 정상적으로 실행됨. +db table 전부 보이고, select를 통한 데이터 추출 또한 완벽하게 실행됨 (감격)
그러나, 'ssh@IP주소' 커맨드를 통해 Ubuntu에 원격 접속 시도가 계속해서 실패함
원래는 ssh server 설치 시 server 가 자동으로 실행되어야 하는데,
현재 나는 실행되지 않고 있었음.
ssh가 정상적으로 구동되고 있는지 확인하기 위해 sudo systemctl status ssh 커맨드 입력.
-> System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down 마주함. (슬슬 한계가 왔음.)
그러다 'https://gist.github.com/alyleite/ca8b10581dbecd722d9dcc35b50d9b2b' 구세주 등장
@sudo apt-get update && sudo apt-get install -yqq daemonize dbus-user-session fontconfig
@sudo daemonize /usr/bin/unshare --fork --pid --mount-proc /lib/systemd/systemd --system-unit=basic.target
@exec sudo nsenter -t $(pidof systemd) -a su - $LOGNAME
@snap version
4줄 실행했더니 아까 오류났던 sudo systemctl status ssh 커맨드가 바로 정상 실행됨 (2차 감격ㅠ)
감격스러운 마음으로 확인했다.
but, 놀랍게도 ssh service가 running임. 구동 중이었던 것 ㅋㅋ; (아니 아깐 분명 아니었는데..ㅠ)
running 상태인데 왜 원격 접속이 안 되지 하고 다른 대책 강구
-> running 중이지만 그래도 혹시나 싶어 service ssh start 커맨드를 통해 다시 한 번 실행
-> 그래도 접속 불가
그러나 !! 실행 불가 메시지가 Connection refused 에서 -> Connection timed out으로 바뀌었다!!
그러다 어떤 고마운분이 방화벽에 막히는 경우일 수도 있다고 블로그 포스팅 해놓음 ㅎㅎ (압도적 감사)
however,
Could not load logging rules 라는 오류 메시지가 나타남.
무슨 일인가 해서 계속 구글링해보니, Ubuntu가 바뀌면 서버가 보낸 공개키가 변경된다고 한다. 근데 나도 같은 상황임..! 처음엔 Ubuntu 22.04 쓰다가 20.04로 다시 진행했음. (위에서 언급했던 것처럼, 어제 계속 프로젝트 진행이 더뎌져서, 우분투 버전을 바꿨음 ㅠ) 아무튼 ! 갑자기 Ubuntu를 변경하게 된 경우에는 자동으로 변경이 되지 않는다고 한다. 그래서 접속조차 안 되고 있었던 것. -> 해결책 : 공개키를 다시 받으면 된다..!
근데 .ssh 폴더를 저번에 삭제해버림.. 나 왜 그랬을까........ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ
근데 또 어느 친절한 분께서 ssh-key 생성하는 법(.ssh 파일도 자동으로 함께 생성됨)을 포스팅 해놓으심.. 세상엔 친절한 분들이 정말 많은 것 같다.. 다들 적게 일하고 많이 버세요👏
포스팅대로 ssh-key를 생성했다.
기쁜 마음으로 폴더에 들어가보니 내가 원하는 known_hosts 파일이 존재하지 않음.. 왓더...
(3시간 뒤)
날아간 내 20시간을 뒤로하고, 내 windows에 설치했던 Ubuntu를 삭제하고
vmware에서 Ubuntu 설치 및 구동하기로 결정. (원래 이게 맞는 방법인데 왜 비장한 척?)
ㅋㅋㅋ아니 나도 내가 저~ 위 내용처럼 하고 싶어서 그렇게 했던 게 아니라,
그냥 windows에 설치해도 되는 줄 알았음. ("이렇게 해도 정상적으로 돌아가겠지?"가 아니라 "이렇게 하는 거겠지..?" 임)
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ;
아 모르겠고 일단 이게 내가 시도할 수 있는 마지막 방법이었음 (이때 진짜 멘탈 나가있었음 막 어지럽고 그랬음. 점심부터 아무것도 안 먹고 빈속에 아샷추랑 빽다방 원조커피 두 잔이나 들이켜서 그런가)
뭐 아무튼 설치되는 시간이 쪼..끔 있었지만, 그래도 꾹꾹 참고 vmware에 ubuntu 20.04 버전 연동하고 한글 설정까지 완료해주었음.
이제 진짜 시작이다.
sudo apt search openssh-server 를 통해 install이 가능한 openssh-server가 있는지 확인
sudo apt install openssh-server를 통해 설치해주면 됨. (중간에 나오는 질문은 Y로 응답.)
이후, IP 정보를 얻어오기 위해 ifconfig 커맨드 입력 -> 오류 마주함. -> sudo apt install net-tools를 통해 해결할 수 있음.
이젠 ifconfig 커맨드가 정상적으로 내 ip주소를 출력해줌
ip 주소 메모장에 적어두고..
이젠 진짜 windows에서 Ubuntu에 원격으로 접속할 거임.
'ssh@IP주소' 커맨드를 통해 Ubuntu에 접속 완료..! 드디어!!!!!!!!!!!!!!!!!
cat /etc/*release*를 통해 Ubuntu 버전 및 여러 가지 정보 확인 가능 (이게 된다는 건 원격 접속이 잘 되었다는 증거)
apt search mariadb-server를 통해 서버 검색 ㄱㄱ
10.3버전 2개만 뜨는 걸 확인할 수 있음.
근데 나는 10.6 버전을 설치할 거임 !
MariaDB사이트(https://mariadb.org/download/?t=repo-config)에 가보면 MariaDB Repositories 란이 있음.
여기서 버전 (나는 20.04 버전 "focal" -> 우분투는 버전마다 이름이 있음 신기 ㅋㅋ)을 선택해주고,
MariaDB 버전도 (10.6 버전을 설치할 거라서 10.6 버전 선택)을 선택해준다.
위 사진에 Mirror 라고 적힌 부분을 보면 Blendtbyte - Taipei 라고 설정되어 있는 걸 볼 수 있는데,
이는 미러서버를 의미한다.
*미러서버란?
원래의 서버와 동일한 콘텐츠나 접근 권한을 가진 서버를 뜻하며,
인터넷상에서 유명한 파일 전송 규약(FTP) 서버 지역에 사용자가 폭주하면 시스템에 부하가 걸려 성능에 문제가 발생하게 되는데, 이를 방지하기 위해 다른 주 컴퓨터에 이와 똑같은 FTP 서버 데이터나 파일을 복사해 놓은 서버라고 한다.
다시 돌아와서
미러서버가 Taipei로 되어 있는 건 내가 타이페이에 있어서가 아니다..!
2022년 9월을 기준으로 한국 미러서버는 존재하지 않는다고 한다.
(원래 '용복넷' and '하루카산' 이라는 2개의 서버가 있었다고 함.)
굳이 한국 서버가 아니어도 인터넷 속도가 엄청 느려지는 게 아니기 때문에 Taipei 등의 미러서버에서 다운받으면 된다.
아무튼, 그 아래 적힌 3줄 또한 입력해주고 나서 sudo apt update를 통해 업데이트했다.
그리고 apt search mariadb-server를 통해 mariadb 10.6 버전이 정상적으로 설치되었음을 확인하고 싶었는데,
왜인지 모르겠지만 아까랑 똑같이 10.3 버전 2개밖에 보이지 않음.
사진을 보면 알겠지만, 나는 아직.. 딱 봐도 뇌가 느슨해지는 매뉴얼을 아직 실행하지 않은 걸 확인할 수 있다..
Once the key is imported, copy and paste the following into a file under /etc/apt/sources.list.d (for instance /etc/apt/sources.list.d/mariadb.sources):
어쩌구 저쩌구 하고 밑에 무슨 주석처리된 코드도 있고 아닌 코드도 있고 하여튼 이걸 어떻게 추가하라는 건지.. 하면서 짜증을 내기 시작함(사람이 참 간사함 잘 되어가던 도중 한 번 막혔다고 짜증냄. 근데 어제 오늘 고생한 거 생각하면 짜증낼만하다고 생각함 ㅎ)
그래도 포기하지 않고 계속해서 구글링했음.
sudo vi /etc/apt/sources.list.d/mariadb.sources를 통해, 해당 디렉토리에 들어옴..!
원래는 mariadb.sources 디렉토리같은 건 없었던 것 같음.
list.d 파일 밑에 내가 임의로 mariadb.sources라는 디렉토리를 만들었고, vi 라는 리눅스 명령어를 통해 vi 뒤에 적힌 파일명(디렉토리)을 따라 들어온 것이다.
여기서 난관에 봉착했다. 지금 생각해도 좀 끔찍.
위 사진에 나와 있는 #MariaDB 로 시작하는 코드(이하 복사 코드)를, mariadb.sources 라는 디렉토리에 붙여넣기 해야 하는데, 뭔 짓을 해도 붙여넣기가 안 되는 거임. (정확히 말하면 디렉토리를 수정할 수 없던 거였음)
뭔 이상한 빨간색 배경 네모칸에 하얀 글씨로 WARNING! 이러니까 진짜 불안한 거임..
강의 영상(수강 중인 강의가 있음) 천천히 돌려서 강사님은 이거 어떻게 빠져나갔나 확인하고 :q! :q 이거 두 개 도배해서 간신히 빠져나옴. ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 지금 생각하면 그냥 웃기긴 한데,, 저 당시에는 진짜 식은땀 흘리고 그랬음.
하 여기까지 왔는데 여기서 잘못되면 처음부터 다시 해야 하는 건가.. 이러면서 불안해하고 그랬음. ㅋㅋㅋㅋ
아무튼 해당 디렉토리 빠져나오고 나서 디렉토리 수정하는 방법 알아내려고 폭풍 구글링 시작.
한 30분? 지났을 때쯤, 디렉토리 수정하는 법 알아냄. (왜 오래 걸렸는지는 나도 모르겠음.. 안 놀았는데 30분 정도 걸림;)
디렉토리에 들어가서 i를 한 번 눌러야 입력모드(수정모드)가 되는 거였음 !
그리고 복사 코드 붙여넣기 하고? ESC를 꼭 눌러줘야 함.
ESC 안 누르면 못 빠져나옴~~ 내가 그랬음..~~ ㅠ
아무튼 ! ESC 누르고 나서 :wq! 또는 :wq를 통해 디렉토리에서 빠져나오면 됨. (w는 저장을 의미하고 q는 종료를 의미함.)
후,, 거의 다 왔다. 라는 생각과 함께 sudo apt update 후 apt search mariadb-server를 해보면?
10.6 버전이 생긴 걸 확인할 수 있음.
그리고 sudo apt install mariadb-server를 통해 설치를 진행해주면 됨. (중간에 질문은 Y로 응답.)
이제 설치까지 완료했으니, 초기화를 해주어야 함.
sudo -i 를 통해 root로 접속해주고 (당연히 ubuntu에 원격 접속 되어있어야 함.)
find / -name mariadb-secure* 을 통해 /usr/bin/mariadb-secure-installation 파일을 찾았음.
이후, mariadb-secure-installation 를 실행하면 됨.
실행 후 여러 질문이 나옴.
처음엔 password 관련 질문인데, 이는 내가 아직 password를 설정한 적이 없기 때문에 그냥 enter치고 넘어가면 됨
그 다음 n / y(패스워드 재설정) / y / n / n / y 를 입력해 마무리해주면 됨.
거의 다 왔다.
windows에서 실행했지만, Ubuntu에 원격 접속을 했으므로 우분투 서버 입장에선 DB에 접속하는 건 local 환경임 !
service mariadb start 또는 service mariadb restart 를 통해 서비스를 올림.
ps -ef | grep mariadb 를 통해 서비스가 잘 올라갔는지 확인.
또는, netstat -anpt 를 통해서도(포트를 통해 확인) 확인할 수 있음. (3306 포트가 올라가 있으면 된 거임.)
이제 접속을 해볼 거임. (우분투 계정에서 우분투 계정 서버에 있는 데이터베이스에 접속을 하는 것 !)
mysql -u root -p 를 통해 접속할 수 있음.
이후 password 입력해주면 접속 완료 !
-> 위에서도 언급했지만, local 환경에서 접속한 것이나 마찬가지이기 때문에 host는 입력해주지 않아도 무방하다.
끝내고 나니 대강 23:30pm 쯤이었던 것 같다.
이 글을 마무리하는 시점엔 09/04/00:52pm.
밥도 제대로 안 먹고 커피 마시면서 고생하느라 너무 너무 힘들어서 일찍 잘 수도 있었지만,
그래도 고생한 걸 기록해두고 싶어서 포스팅까지 완료했다.
원래는 실패 과정만 기록하고 성공 과정은 따로 기록하지 않으려 했는데,
글 써내려가다보니 쓰는 게 좋을 것 같아서 성공 과정까지 복기하여 글 작성 완료 !
- 느낀 점 -
흠, 위 오류들을 해결해나가면서 기록하는 과정에서 느꼈던 점이 있음.
공부든 프로젝트든 간에, 내가 지금 밟고 있는 과정을 써내려가면서 진행하니까 "내가 이걸 왜 하고 있었더라?"에 대한 의문이 진짜 많이 줄어든다.
예를 들어, 1->2->3 과정에서 3을 진행하고 있었는데, 중간에 어..? 나 1을 해결하려고 3을 진행 중이었던 거 아닌가..?
하면서 당황함. 그러다 중간 과정(2를 의미함)을 빼먹게 되고,, 여기서 만나게 되는 오류들이 되게 많았던 거 같음.
이젠 기록지를 보며 "아 맞아 1에서 2로 넘어가는 오류가 있었구나..! 그래서 3을 해결 중이었던 거였군!" 하면서 이런 실수를 좀 줄여보고자 노력해야겠다.
+ 어제만 해도 진짜 나는 왜 못하지. 진짜 짜증난다. 왜 내 컴퓨터만 이럴까.. 이러면서 자책하고 너무 하기 싫었는데, 계속해서 구글링해보고 찾아보고 하니 차차 해결해나가는 나 자신을 보게 됨. 결국 남들도 다 겪었던 오류였는데 그냥 내가 답답하고 힘드니까 부정적으로만 느끼고 받아들였던 듯.. 제일 중요한 건, 힘들고 짜증나면 한 템포 쉬어가는 게 정말 중요하다는 걸 느꼈다. (진짜 어제는 내가 이거 해결할 때까지 집 절대 안 갈 거다. 오늘 스터디카페 새벽까지 내 거다. 막 이러면서 눈에 불을 켜고 미친듯이 구글링했었는데, 결론적으로 난 우물 안 개구리에 불과했다. 그냥 우물 안에서 물 첨벙첨벙 차면서 화만 지독하게 냈던 것.. 되는 건 아무것도 없는데 ㅋㅋ 오류 하나 만나면 1스택 쌓이고, 하나 더 만나면 2스택 쌓이고, 결국 폭발한 채로 해내려니까 안 되지 인마) 아무튼 반성 중이다..
강의 제대로 보고 vmware 설치해서 진행했으면 이럴 일도 없었을 텐데.
애초에 내가 잘못된 방법으로 하고 있었으면서 이 탓 저 탓하며 짜증을 냈던 게 조금 부끄러워진다.
앞으로는 조금 늦더라도 신중히, 늦지 않더라도 천천히, 막히더라도 꾸준히 나아가는 내가 되어야겠다고 끄적여본다.
결론 : 안 될 땐 쉬어가자 (진짜 급하면 못 쉬긴 함.)
=================최후방어선(이었던 것)=================
집에 있는 데스크톱으로 해보잣
이었는데, 최후방어선까지 안 오게 되어 다행이라고 생각함.
===================================================
'Database' 카테고리의 다른 글
Eclipse에서 exerd 설치 (1) | 2023.09.10 |
---|---|
Intellij에서 JDBC를 이용하여 Java와 MariaDB 연동하기 (0) | 2023.09.08 |
Windows로 MySQL 원격 접속하기 (0) | 2023.09.04 |