[WSL2] Mysql 자동실행 설정하기

[wsl2 설치가 안된 분은 여기를 참고하자 ]


나는 이번년도에 wsl2를 알게 되어 wsl2을 통해 편하게 개발을 진행하였다.

그런데, wsl2가 아직 여럿 불편한 점이 있었고 그 중 하나가 wsl2의 자동 실행 미지원이다.

wsl2는 컴퓨터 시작시 자동 실행을 지원하지 않아 수동으로 sshmysql, nginx와 같은 프로그램들을 실행시켜줘야하는 불편함이 있었다.

그래서 정말 많은 구글링과 삽질끝에 해결한 방법을 공유하고자 글을 썼다.



1. 셋팅 방법

셋팅 방법은 생각보다 별거 없었고 원리는 window에서 컴퓨터 시작할때마다 스크립트 파일을 통해 자동으로 실행 시켜주는 것이다.

방법은 여러 가지가 있는데 아래 방법중 한가지만 택해서 진행하면 된다.

  1. 윈도우의 시작 - 모든 프로그램 - 시작 프로그램 폴더에 파일 등록
  2. 로컬 그룹 정책 (gpedit.msc)에 스크립트 파일 등록
  3. 작업 스케줄러 에서 작업 등록

1) 공통 작업

.bat파일 (스크립트 파일) 작성

우선 자동 실행을 위해 프로그램들을 실행시켜줄 명령어들을 모은 스크립트 파일을 작성해야한다.

메모장을 열고 본인이 자동실행 시킬 프로그램 명령어를 아래와 같이 앞에 wsl을 붙여 입력하면 된다.

wsl sudo service mysql start
wsl sudo service ssh start
wsl sudo service nginx start
wsl sudo service docker start
wsl sudo service apache2 start

그 후에 저장을 하는데 저장시 주의사항으로 아래 사진과 같이 모든 파일 형식에 파일이름뒤에 .bat을 붙여 저장하면 된다.

파일 저장은 편한곳에 하면 되는데 나는 C바로 밑에 wsl2-setting 폴더를 하나 만들어 저장했다.


sudo 권한 service 명령어 비밀번호 해제

해당 파일을 실행시키면 sudo권한 실행을 위해 비밀번호 입력때문에 자동실행이 막히게 되기 때문에 비밀번호를 해제해줘야 자동실행이 된다.

window 검색창에 bash.exe를 검색하여 실행시키거나, wsl2를 실행시켜 sudo visudo 명령어를 입력하여 설정파일을 열면 nano편집기로 열릴텐데 아래 명령어를 추가하고 ctrl+s 로 저장하고 ctrl+x 를 눌러 빠져나오자.

sudo ALL=NOPASSWD: /usr/sbin/service

모든 service명령어를 비밀번호 해제하는게 나는 두렵다(?)라고 생각하시는 분은 아래와 같이 해당 명령어만 비밀번호를 해제 해도 된다.

%sudo ALL=(ALL) NOPASSWD: /usr/sbin/service mysql *
%sudo ALL=(ALL) NOPASSWD: /usr/sbin/service ssh *

Info

여기서 중요한 점은 %sudo ALL=(ALL:ALL) ALL 명령어보다 아래에 작성해야 한다는 점이다.

해당 명령어보다 위에 작성하면 해제해놓은것이 막히기 때문에 명령어보다 아래에 작성하거나 맘편히 맨 아래 작성하면 된다.


여기서부터는 3가지 방법 중 한가지만 따라하면 된다.

  • 시작 프로그램 폴더에 파일 등록
  • 로컬 그룹 정책 (gpedit.msc)에 스크립트 파일 등록
  • 작업 스케줄러 에서 작업 등록 나는 gpedit.msc에 파일을 등록하는 방법으로 설정했다.

2) 1번방법 : 시작 프로그램 폴더에 파일 등록

window + R 을 눌러 shell:startup 을 입력하여 폴더를 열어 아까 만들어 두었던 .bat 파일을 이 폴더 안에 복사 해주면 된다.


3) 2번방법 : gpedit.msc에 파일 등록

윈도우 검색창에 gpedit.msc 를 검색해서 클릭하면 아래와 같이 열릴 것이다.

alter-text
gpedit open

사진을 보면 스크립트 (시작/종료) 가 있고 (로그온/로그오프가) 가 있는데 시작과 로그온은 컴퓨터가 켜졌을때 실행되는 것으로 동작은 비슷하나 시작이 속도가 조금더 빠르다고 한다.

시작은 켜지면서 실행되고, 로그온은 컴퓨터가 다켜져 바탕화면이 보일때 동작한다고 한다. 하지만, 시작으로 설정해놓고 컴퓨터에 비밀번호가 걸려있으면 이상하게 작동이 잘 되지 않아서, 로그온으로 등록하였다.

alter-text
script

스크립트(로그온/로그오프)를 클릭하고 로그온을 더블클릭하면 위에와 같은 창이 열리는데 PowerShell 스크립트가 아닌 스크립트에 아까 만들어 두었던 .bat 파일을 넣어줄 것이다.

추가버튼을 클랙 했으면 아래와 같은 창이 뜨는데 찾아보기버튼을 클릭하여 .bat파일을 넣어주면 되며 매개변수는 작성해줄 필요 없다.

alter-text
add



4) 3번방법 : 작업 스케줄러에 작업 새로만들기

alter-text
schedule

윈도우 검색창에 작업 스케줄러를 검색하여 스케줄러를 띄운 후 작업만들기를 클릭하고 설정들을 아래와 같이 해주면된다.


일반

https://gowoonsori.comimages/settings/wsl2-mysql/1.png does not exist

이름은 마음대로 지어도 상관없으며, mysql을 자동실행할 프로그램이라 mysqld라 지었고, 간단하게 설명도 작성해주면 된다.


https://gowoonsori.comimages/settings/wsl2-mysql/system.png does not exist

Note

여기서 중요한 것이 사용자 또는 그룹 변경을 클릭해서 SYSTEM으로 실행을 시켜줘야 백그라운드로 동작한다.

변경을 안해주면 부팅시마다 까만 cmd창이 꺼졋다 켜지는 것을 볼 수 있고, 안해줘도 무방하나 상당히 거슬리기에 SYSTEM으로 실행시키는 것을 추천드린다.


트리거

alter-text
start

트리거는 새로만들기를 클릭하여 작업시작에서 로그온할 때를 클릭하고 확인을 누르면 된다.

시작할 때가 로그온 할때보다 살짝 더 빠르다고 하는데, 노트북에 비밀번호가 걸려있는 경우에 trigger가 작동하지 않기도 해서 로그온 할때를 추천한다.


동작

alter-text
action

찾아보기를 클릭하여 아까 만들어두었던 .bat파일을 등록시켜주면 된다


기타 설정

조건 이나 설정등 보면서 필요없는 사항들은 체크,체크 해제 해주면된다.

나는 조건에 충전기 연결 안되도 자동 실행 되게 전원부분은 모두 해제 했다.



2. 재부팅 후 확인

재부팅 후 mysql 접속을 시도해보면 잘 접속이 되는 것을 볼 수 있다.

alter-text
connect



Reference

https://www.how2shout.com/linux/how-to-start-wsl-services-automatically-on-ubuntu-with-windows-10-startup/

Related Posts

디지털 트랜스포메이션 엔진(ACCELERATE)

디지털 트랜스포메이션 엔진(ACCELERATE)

  • Books
  • 2022년 3월 23일

제목부터 낯선 이 디지털 트랜스포메이션 엔진이라는 책은 Redit을 통해 처음 접하게 되었고, 책의 원제목은 ACCELERATE:The Science Of Lean Software and DevOps:Building and Scaling High Performing Techonology Oragnizations 이다. 이름만 들었을때는 책 내용이 굉장히 어려워 보인다. 하지만, 쪽수도 얼마 안되고 내용이 재미있어 굉장이 빨리 읽힌 책이었다. 책의 전체적인 내용은 설문조사와 연구를 통해 DevOps가 소프트웨어의 전달...

Read More
Golang 특징

Golang 특징

1. 특징 1) 정적 컴파일 언어 JVM을 이용하는 Java와 같이 Runtime에 환경에 맞는 기계어로 번역을 하는 동적 컴파일 언어가 아닌 c나 c++와 같이 한번 compile을 통해 특정환경에 맞는 실행파일을 만들어내는 정적 컴파일 언어이다. 정적 컴파일 언어는 환경(Os, CPU종류)들이 다양해지면서 NxM개의 수만큼 많은 번역기가 존재했...

Read More
모듈과 패키지

모듈과 패키지

1. 모듈의 변천과정 Go 1.11 이전 : 모듈 존재 X Go 1.11 : 모듈이 소개되었지만 미완성 Go 1.13 : 모듈 완성 Go 1.16 : 모듈이 이제 기본이 되었다. 1) 모듈 모듈은 패키지의 모음 2) 패키지 패키지는 코드를 묶는 단위로 모든 코드는 반드시 패키지로 묶여야 한다. 우리가 흔히 부르는 프로그램은 다양한 관점에서 의미를 해석할수 있을 텐데 실핼파일 관점에서보면 실행시작 지점을 포...

Read More