MySQL 설치, 실행, 환경 설정, 접속 오류, 접속 권한, 한글 설정

Goal

  • MySQL 설치 - 실행 - 기본 설정(root password 변경) - 접속
    • brew를 통한 설치
    • 직접 다운로드를 통한 설치 (dmg 파일)
  • MySQL 한글 설정 (UTF-8)
    • charset utf-8
  • MySQL 삭제
  • MySQL 접속 오류
    • 임시 비밀번호 분실한 경우
    • 비밀번호가 맞아도 접속이 안되는 경우
  • MySQL 접속 권한 설정

MySQL 설치, 실행 및 기본 환경 설정

1. brew를 통한 설치

  1. MySQL 설치
    • 최신 버전 설치 (8.0.X)
      $ brew install mysql
      
    • 5.7 버전 설치
      $ brew install mysql@5.7
      
    • 다른 버전 설치 방법
      • $ brew search mysql로 검색, 원하는 버전의 formula 이름을 확인한다.
      • $ brew install <설치할 formula>으로 mysql을 설치한다.
  2. MySQL 실행
    • 최신 버전 실행 (8.0.X)
      $ brew services start mysql
      # background에서 실행시킬 필요가 없는 경우 아래 이용 
      $ mysql.server start
      
    • 5.7 버전 실행
      • 실행 전 환경 설정 필요 (.bash_profile 또는 .zshrc에 아래 내용 추가)
        # If you need to have mysql@5.7 first in your PATH run:
        export PATH="/usr/local/opt/mysql@5.7/bin:$PATH"
        # For compilers to find mysql@5.7 you may need to set:
        export LDFLAGS="-L/usr/local/opt/mysql@5.7/lib"
        export CPPFLAGS="-I/usr/local/opt/mysql@5.7/include"
        # For pkg-config to find mysql@5.7 you may need to set:
        export PKG_CONFIG_PATH="/usr/local/opt/mysql@5.7/lib/pkgconfig"
        
        $ brew services start mysql@5.7
        # background에서 실행시킬 필요가 없는 경우 아래 이용 
        $ /usr/local/opt/mysql@5.7/bin/mysql.server start
        # 하나의 버전만 깔려 있는 경우는 이 명령어도 사용 가능 
        # $ mysql.server start
        
    • ERROR! The server quit without updating PID file... Error 해결 방법
  3. MySQL 기본 환경 설정 (root 사용자 비밀번호 변경)
    • MySQL을 실행시킨 상태(2번 과정)에서 MySQL 접속하기 전에 설정한다.
      $ mysql_secure_installation
      
    • 비밀번호 복잡도 검사 과정 (n)
      • 복잡한 비밀번호를 사용하도록 제한해주는 플러그인을 사용하려면 (y)
      • 그냥 쓰던 비밀번호(약한 보안) 제한받지 않고 쓰고 싶다면 (n)
    • 루트 비밀번호 입력 & 확인
    • 익명 사용자 삭제 (y)
      • $ mysql만으로도 접속이 가능하게 하려면 (n)
      • 접속 시 -u 옵션을 반드시 명시하려면 (y)
    • 원격 접속 허용 (n)
      • 로컬에서만 실행하는 경우는 (n)
      • localhost외의 ip에서 root 아이디의 접속을 허용하는 경우는 (y)
    • test DB 삭제 (n)
    • 수정할 것이 있는가? (y or n)
      • 하나라도 권한 변경을 했다면 (y)
  4. MySQL 접속
    $ mysql -uroot -p
    
    • 접속 후 위에서 설정한 root 비밀번호를 입력한다.
  5. mysql 버전 변경하기
    • mysql 8.0 -> mysql 5.7
      # Unlink current mysql(8.0) version
      $ brew unlink mysql 
      # Check older mysql(5.7) version
      $ ls /usr/local/Cellar/mysql@5.7
      # Link the older version
      $ brew switch mysql@5.7 5.7.24
      
    • mysql 5.7 -> mysql 8.0
      # Unlink older mysql version
      $ brew unlink mysql@5.7
      # Check current mysql(8.0) version
      $ ls /usr/local/Cellar/mysql 
      # Link the current version
      $ brew switch mysql 8.0.13
      

2. 사이트에서 직접 다운로드를 통한 설치 (dmg 파일)

  1. MySQL 설치
    • MySQL 사이트에서 원하는 버전의 .dmg 파일을 다운로드 (로그인 없이도 다운로드 가능)
    • 중요! 설치할 때 주어지는 임시 비밀번호 기억
      • 분실했다면 (아래 MySQL 접속 오류 설명 참고)
  2. MySQL 실행
    # 실행
    $ sudo /usr/local/mysql/support-files/mysql.server start
    # 중지
    $ sudo /usr/local/mysql/support-files/mysql.server stop
    # 재시작 
    $ sudo /usr/local/mysql/support-files/mysql.server restart
    
    • (6. MySQL alias 설정 참고)
  3. MySQL 접속
    # 디렉터리로 이동 후
    $ cd /usr/local/mysql/bin/
    # MySQL 접속 
    $ ./mysql -u root -p
    
    • (아래 MySQL 접속 명령어 설명 참고)
  4. MySQL 기본 환경 설정 (root 사용자 비밀번호 변경)
    • MySQL을 실행시키고 접속한 후(3번 과정)에 설정한다. 참고1, 참고2
      #   하나 
      mysql> alter user 'root'@'localhost' identified by 'newpassword';
      mysql> alter user 'root'@'localhost' identified with mysql_native_password by 'newpassword';
      # 적용
      mysql> flush privileges;
      mysql> exit
      
  5. 환경 변수 설정
    • bash 또는 zsh
      • $ vi ~/.bash_profile 또는 $ vi ~/.zshrc에 아래 내용 추가
    • export PATH=/opt/local/bin:/opt/local/sbin:/usr/local/mysql/bin:$PATH
      
    • mysql 설치 경로로 이동하지 않아도 어디서나 mysql을 수행할 수 있다.
      # 디렉터리로 이동 후
      $ cd /usr/local/mysql/bin/
      # MySQL 접속 
      $ ./mysql -u root -p
      
      # 환경 변수 설정 후 설치 경로로 이동하지 않고 접속 가능 
      $ mysql -uroot -p
      
  6. MySQL alias 설정
    • bash 또는 zsh
      • $ vi ~/.bash_profile 또는 $ vi ~/.zshrc에 아래 내용 추가
        alias mysqlserver="sudo /usr/local/mysql/support-files/mysql.server"
        
    • alias 설정 후 아래와 같이 사용 가능
      • mysqlserver start
      • mysqlserver stop
      • mysqlserver restart
    • alias 설정 시 주의 사항
      • alias 축약이름 = “실행내용” (X) 띄어쓰기 주의!
      • alias 축약이름=”실행내용” (O)

3. 참고

참고 MySQL 접속 명령어

참고 MySQL 버전 확인

$ mysql -V
/usr/local/mysql/bin/mysql  Ver 14.14 Distrib 5.7.20, for macos10.12 (x86_64) using  EditLine wrapper

MySQL 한글 설정 (UTF-8)

charset utf-8

  1. mysql 접속
    $ mysql -uroot -p
    
  2. mysql> status; 명령어 입력해서 설정 확인
    • latin이 있다면 mysql을 나간 후 터미널을 다시 실행
  3. 관리자 권한으로 /etc/my.cnf 파일 생성
    # my.cnf가 기본적으로 존재하지 않으므로 아래 명령어를 통해 새로 생성
    $ sudo vi /etc/my.cnf
    Password: 
    
  4. my.cnf 파일에 아래 내용 넣기
    [mysqld]
    init_connect="SET collation_connection=utf8_general_ci"
    init_connect="SET NAMES utf8"
    character-set-server=utf8
    collation-server=utf8_general_ci
    skip-character-set-client-handshake
    [client]
    default-character-set=utf8
    [mysql]
    default-character-set=utf8
    
  5. mysql 서버 정지 후 재실행
    # alias 설정 후 아래와 같이 사용 가능
    $ sudo mysqlserver stop
    $ sudo mysqlserver start
    
  6. mysql 재접속
  7. mysql> show variables like 'c%'; 명령어를 이용해서 정상적으로 utf-8로 설정되었는지 확인

MySQL 삭제

# brew install mysql로 설치한 경우
$ sudo rm -rf /usr/local/var/mysql
$ sudo rm -rf /usr/local/bin/mysql*
$ sudo rm -rf /usr/local/Cellar/mysql*

# mysql 홈페이지에서 DMG 파일로 설치한 경우
$ sudo rm /usr/local/mysql
$ sudo rm -rf /usr/local/mysql*
$ sudo rm -rf /Library/StartupItems/MySQLCOM
$ sudo rm -rf /Library/PreferencePanes/My*
$ sudo rm -rf ~/Library/PreferencePanes/My*
$ sudo rm -rf /Library/Receipts/mysql*
$ sudo rm -rf /Library/Receipts/MySQL*
$ sudo rm -rf /var/db/receipts/com.mysql.*
# 직접 수행!
# $ vim /etc/hostconfig and removed the line MYSQLCOM=-YES-

# mac osx(10.10 이상)은 아래 내용도 추가 
$ sudo rm -rf /Library/LaunchDaemons/com.microsoft.office.licensing.helper.plist 
$ sudo rm -rf /private/var/db/receipts/*mysql*

MySQL 접속 오류

# 임시 비밀번호 분실한 경우

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

# 비밀번호가 맞아도 접속이 안되는 경우

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)


MySQL 접속 권한 설정

관련된 Post

References