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

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


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

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

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

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



셋팅 방법


셋팅 방법은 생각보다 별거 없었고 원리는 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을 붙여 저장하면 된다.

귀찮으신분은 아래 파일을 다운받아 고쳐 사용해도 된다.

  • auto-start.bat  (0 kB)
  • 파일 저장은 편한곳에 하면 되는데 나는 C바로 밑에 wsl2-setting폴더를 하나 만들어 저장했다.


    2 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 *
    

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



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

    ▪ 시작 프로그램 폴더에 파일 등록
    ▪ 로컬 그룹 정책 (gpedit.msc)에 스크립트 파일 등록
    ▪ 작업 스케줄러 에서 작업 등록

    나는 gpedit.msc에 파일을 등록하는 방법으로 설정했다.


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

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



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

    윈도우 검색창에 gpedit.msc를 검색해서 클릭하면 아래와 같이 열릴 것이다. gpedit_open 사진을 보면 스크립트 (시작/종료) 가 있고 (로그온/로그오프가) 가 있는데 시작로그온은 컴퓨터가 켜졌을때 실행되는 것으로 동작은 비슷하나 시작이 속도가 조금더 빠르다고 한다.

    시작은 켜지면서 실행되고, 로그온은 컴퓨터가 다켜져 바탕화면이 보일때 동작한다고 한다.


    하지만, 시작으로 설정해놓고 컴퓨터에 비밀번호가 걸려있으면 이상하게 작동이 잘 되지 않아서, 로그온으로 등록하였다.

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


    추가버튼을 클랙 했으면, 아래와 같은 창이 뜨는데 찾아보기버튼을 클릭하여 .bat파일을 넣어주면 된다.

    매개변수는 작성해줄 필요 없다. add



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

    schedule

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


    1. 일반

    이름

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


    system

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

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


    2. 트리거

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

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


    3. 동작

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


    4. 기타 설정

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

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





    재부팅 후 확인


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

    connect



    참고 사이트 :

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