ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Real My SQL 8.0 읽고 공부하기 - ① 설치하기 (Window 10)
    SQL 공부/MySQL 8.0 2023. 7. 29. 07:11

    MySQL :: Download MySQL Installer

     

    에서 용량이 큰 msi 파일을 다운을 받는다.

     

    설치 파일을 실행 후 Custom을 선택하여

    My SQL Server 

    MySql Shell 

    MySQL Router를 설치하자.

     

    이후 설정들은 책에 나와있는데로 설정하고 설치하였다.

     

    windows에서는 cmd에서 MySql명령어를 치려면 환경변수를 등록을 해주어야한다.

    내 PC 우클릭 -> 속성 -> 고급 시스템 설정 -> 환경 변수 -> 시스템 변수의 Path 수정

    C:\Program Files\MySQL\MySQL Server 8.0\bin (사용자마다 다를 수 있음) 등록 하면 끝난다.

     

    환경 변수 설정

     

     

    1) 초기화

     

    책에서 첫부분에 알려주는 초기화를 진행한다.

    ##linux
    mysqld --defaults-file=/etc/my.cnf --initialize-insecure
    
    ##windows
    mysqld --defaults-file="C:\\ProgramData\\MySQL\\MySQL Server 8.0\\my.ini" --initialize-insecure --console

    initialize 옵션은 초기데이터파일, 로그파일, 관리자계정 (root)를 생성한다.

    Windows는 이미 설치과정에서 진행된것이지 실행되지 않는다.

    아래와 같은 로그가 나오는데 

     

    Chat GPT가 다음과 같은 답변을 준다..

     

    이전 답변으로 혼란을 드린 점 사과드립니다. 2021년 9월 마지막 업데이트부터 --initialize 옵션은 일반적으로 Unix 계열 시스템에서 mysqld 명령과 함께 사용되며 Windows에서 직접 사용하지 못할 수도 있습니다.

    Windows에서는 MySQL Installer가 설치 및 초기화 프로세스를 처리하므로 --initialize 옵션을 별도로 사용할 필요가 없습니다.

     

    공식문서를 번역기 돌려보면 다음과 같다.

    서버는 데이터 디렉토리의 존재 여부를 다음과 같이 확인합니다.
    다음과:데이터 디렉터리가 없으면 서버에서 데이터 디렉터리를 만듭니다.데이터 디렉터리가 있지만 비어 있지 않은 경우(즉, 파일 또는 하위 디렉토리를 포함), 서버가 종료됩니다
    오류 메시지를 생성 한 후 :[ERROR] --initialize specified but the data directory exists. Aborting.
    이 경우 데이터 디렉토리를 제거하거나 이름을 바꾸고 다시 한 번 시도해 보세요.기존 데이터 디렉터리는 비어 있지 않을 수 있습니다 모든 항목에 마침표로 시작하는 이름이 있는 경우 (). .

    만약 정말로 다시 하고 싶으면

    C:\ProgramData\MySQL\MySQL Server 8.0\Data 이 폴더를 삭제한 후 위의 명령어를 삭제하면된다.

    물론 삭제하기전 MySQL80의 서비스를 종료하여야만 삭제할 수 있다.

     

     

     

    2) 로그파일 위치

     

    window에서는 로그파일이 

    C:\ProgramData\MySQL\MySQL Server 8.0\Data (일반적인 설치) 이곳에 쌓이므로 unix계열과 다름에 주의하자

     

     

    3) 서비스 상태 조회 , 중단 , 시작

    ## 모든 서비스 조회
    sc query
    
    ## MySql만 조회
    sc query mysql80
    
    ## 종료
    sc stop mysql80
    
    ## 시작
    sc start mysql80
    
    ## PID 찾기
    tasklist | findstr mysql
    
    ## PID로 PORT번호 찾기
    netstat -nao | findstr "PID번호"

     

    mysql에서 클린 셧다운(커밋된 데이터를 데이터 파일에 적용하고 종료하려면

    SET GLOBAL innodb_fast_shutdown=0

    으로 설정하자.

     

    4) 연결 테스트

     

    Unix계열의 운영체제에서는 Socket 파일을 통해 접속할 수 있는데,

    윈도우에서는 해당 파일이아닌 TCP/IP 통신을 이용한다고 한다.

    따라서

    mysql -uroot -p --host=127.0.0.1 --port=3306

    를 통해 접속 할 수 있다. 

    아래와 같은 화면이 나오면 성공한 것이다.

     

    5) 설정 파일

     

    설정 파일을 읽어오는 순서는 mysql --help 명령어를 통해 내용을 확인해보면

    Default options are read from the following files in the given order:
    C:\Windows\my.ini C:\Windows\my.cnf C:\my.ini C:\my.cnf C:\Program Files\MySQL\MySQL Server 8.0\my.ini C:\Program Files\MySQL\MySQL Server 8.0\my.cnf

    처음에 나오는 경로부터 마지막까지 경로를 통해 설정파일 위치및 읽어오는 순서를 알 수 있다.

     

    ini파일을 확인해보면

    [mysql], [client]와 같이 설정그룹을 나눠놓은 것을 확인할 수 있다. 설정파일을 1개로 하지만 각 프로그램은

    설정그룹에 의해 설정이 결정된다.

     

    6) My SQL 시스템 변수

     

    시스템 변수는 SHOW VARIABLES 혹은 SHOW GLOBAL VARIABLES 명령어를 통해 확인 할 수 있다.

    시스템 변수는 5가지 속성을 가지고 있는데 그 의미는 다음과 같다.

     

    - Cmd-Line: MySQL 서버의 명령행 인자로 설정될 수 있는지 여부 (명령행 인자로 변수 변경 가능)

    - Option file: MySQL 설정 파일인 my.cnf(my.ini)로 제어할 수 있는 지 여부

    - System Var: 시스템 변수인지 여부

    - Var Scope: 시스템 변수의 적용 범위 (Global, Session, Both)

    - Dynamic: 동적 변수인지 정적 변수인지 구분

     

    글로번 변수는 하나의 MySQL서버 인스턴스에서 전체적으로 영향을 미치는 시스템 변수를 의미한다.

    (주로 MySQL 서버 설정[ex :풀])

    세션 변수는 MySQL클라이언트가 서버에 접속할 때 기본으로 부여하는 옵션의 기본값을 제어한다. (AutoCommit)

    (처음 기본값은 글로벌 시스템 변수지만 각 클라이언트가 가지는 값은 세션 시스템 변수다.)

    Both라고 설정된 변수는 서버의 설정파일에 명시해 초기화 할 수 있는 변수이다.

     

    정적변수는 서버 가동중인 상태에서 변경이 불가능한 변수이다. 설정파일 수정 및 재시작을 통해서 변경된다.

    동적변수는 서버 기동중에도 변경가능하다. SET명령어로 변경 가능하지만 설정파일에 반영이 안되기 때문에

    주의하여야하고 8.0부터는 SET PERSIST 명령을 통해 변경과 동시에 설정파일에도 수정을 가할 수 있다.

    만약, 다음 재가동시부터 적용 시키려고 설정파일만 바꾸려고 하는 경우 SET PERSIST_ONLY 명령어를 사용하면 된다.

    이렇게 적용된 것은 C:\ProgramData\MySQL\MySQL Server 8.0\Data\mysqld-auto.cnf 를 확인하면

    JSON형식으로 볼 수 있다.

     

    시스템 변수가 Both 인 경우 글로벌 시스템 변수의 값을 변경해도 이미 존재하는 커넥션의 세션 변수값은 유지된다.

     

    만약 SET PERSIST, PERSIST_ONLY의 변경 내용을 삭제하고 싶으면 RESET PERSIST 명령어를 사용해서 

    삭제할 수 있다.

     

Designed by Tistory.