What we have to do is to be forever curiously
testing new opinions and courting new impressions

우리가 해야 할 일은 끊임없이 호기심을 갖고
새로운 생각을 시험해보고 새로운 인상을 받는 것

(MacOS) MySQL, MySQL Workbench

  • 설치, 실행 및 기본 설정
  • 한글설정(UTF-8)
  • 삭제
  • 접속 오류
  • 접속 권한 설정


설치, 실행 및 기본 설정

설치

MacOS에서는 기본으로 깔려있는 터미널을 이용해 프로그램을 설치

MySQL은 brew를 이용해 설치하기 때문에 brew를 먼저 설치 후 다음 명령어를 실행

$ brew install mysql

만약 특정 버전을 설치하고 싶다면,

$ brew search mysql로 검색

원하는 버전의 formula 이름을 확인

MySQL뒤에 @버전을 붙여 $ brew install <설치할 formula>

환경 변수 설정

설치가 완료되면, 환경 변수를 설정

다음 명령어로 자신의 MacOS에서 사용하는 Shell 종류 확인

echo $SHELL
bash일 경우, 환경 변수 설정

$ vi ~/.bash_profile에 아래 내용 추가

export PATH=/opt/local/bin:/opt/local/sbin:/usr/local/mysql/bin:$PATH
zsh일 경우, 환경 변수 설정

$ vi ~/.zshrc

export PATH=/opt/local/bin:/opt/local/sbin:/usr/local/mysql/bin:$PATH

실행

$ brew services start mysql
# background에서 실행시킬 필요가 없는 경우 아래 이용 
$ mysql.server start

설정

MySQL을 실행시킨 상태에서 MySQL 접속하기 전에 root 계정 비밀번호 설정

$ mysql_secure_installation
  • 비밀번호 복잡도 검사 과정 (n)
    • 복잡한 비밀번호를 사용하도록 제한해주는 플러그인을 사용하려면 (y)
    • 그냥 쓰던 비밀번호(약한 보안) 제한받지 않고 쓰고 싶다면 (n)
  • 루트 비밀번호 입력 & 확인
  • 익명 사용자 삭제 (y)
    • $ mysql만으로도 접속이 가능하게 하려면 (n)
    • 접속 시 -u 옵션을 반드시 명시하려면 (y)
  • 원격 접속 허용 (n)
    • 로컬에서만 실행하는 경우는 (n)
    • localhost외의 ip에서 root 아이디의 접속을 허용하는 경우는 (y)
  • test DB 삭제 (n)
  • 수정할 것이 있는가? (y or n)
    • 하나라도 권한 변경을 했다면 (y)

접속

$ mysql -uroot -p

위 명령어 실행 후 위에서 설정한 root 비밀번호를 입력하고 엔터

버전 변경

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


한글설정(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로 설정되었는지 확인


삭제

해당 내용을 모두 shell script에 넣어 한 번에 실행하는 것을 추천

# 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.*

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


접속 오류

임시 비밀번호 분실한 경우

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

아이디/패스워드가 다르거나 접근 권한이 없을 경우

비밀번호를 알고 있는 경우

/usr/local/mysql/bin/ 디렉토리에서 MySQL 실행 가능

다음 명령어로 MySQL 실행 후 비밀번호 입력

$ /usr/local/mysql/bin/mysql -uroot -p

비밀번호를 분실한 경우

아래의 과정에 따라 비밀번호 재설정

  1. MySQL 서버 실행
    $ sudo /usr/local/mysql/support-files/mysql.server start
    
  2. 터미널에서 접속하기
    $ cd /usr/local/mysql/bin/
    $ sudo ./mysql
    또는
    $ /usr/local/mysql/bin/mysql -uroot
    
  3. 안전모드로 MySQL 데몬(mysqld)을 실행
    $ sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables
    

    위와 같이 입력하면 인증을 생략하고 안전모드로 데몬을 실행

입력할 비밀번호: MySQL 비밀번호가 아닌 맥의 관리자 비밀번호

위 명령어는 실행된 상태로 유지,

새로운 터미널 창을 열어서 MySQL에 접속

  1. MySQL 접속
    $ /usr/local/mysql/bin/mysql -uroot
    

    제대로 실행되었다면 비밀번호를 묻지 않고 바로 접속 가능

  2. 비밀번호 재설정
    mysql> use mysql; 
    mysql> update user set authentication_string=password('root') where user='root';
    // 마지막으로 변경사항을 적용하기 위해 flush privileges 명령어 실행
    mysql> flush privileges;
    

    접속이 성공한 뒤에는 아래와 같이 비밀번호를 root로 변경

password=(‘root’)에 root 대신 원하는 비밀번호를 입력

  1. MySQL 접속
    $ /usr/local/mysql/bin/mysql -uroot
    $ /usr/local/mysql/bin/mysql -uroot -proot
    

    다시 MySQL에 접속하면 잘 되는 것을 확인

접속 후 명령을 실행하게 되면 다음과 같은 에러가 발생

ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

  1. 에러 해결
    mysql> use mysql; 
    mysql> set password = password('원하는 비밀번호');
    

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

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

MySQL 서버가 켜져 있는지 확인

MySQL 서버 실행 후 다시 접속

$ sudo /usr/local/mysql/support-files/mysql.server start


접속 권한 설정

  1. MySQL 서버 실행
    $ sudo /usr/local/mysql/support-files/mysql.server start
    

    사용자를 추가를 위해 MySQL 서버에 로그인(root 권한)

    $ mysql -u root -p
    Enter password:
    
  2. 사용자 추가
    # 로컬에서 접속 가능한 사용자
    mysql> create user '사용자'@'localhost' identified by '비밀번호';
    # 원격에서 접속 가능한 사용자
    mysql> create user '사용자'@'원격IP주소' identified by '비밀번호';
    
  3. 사용자에게 DB 권한 부여
    # 모든 DB 접근 가능하도록 권한 부여
    mysql> grant all privileges on *.* to '사용자'@'localhost';
    # 특정 DB(DB이름)에만 접근 가능하도록 권한 부여 
    mysql> grant all privileges on DB이름.* to '사용자'@'localhost';
    
  4. 사용자 계정 삭제
    mysql> drop user '사용자'@'localhost';
    


댓글남기기