TIP-맥OS

macOS Catalina에서 mysql 특정 디렉토리에 실행형으로 설치하기

무한열정 2019. 11. 1. 19:32

이번에 새로 맥OS가 업그레이드 되면서 간만에 또 mysql을 새로 설치하게 되었습니다.

 

설치 대상 OS는 카탈리나 10.15 입니다.

특징이 있는게 / (루트디렉토리)에서는

디렉토리 신규 생성이 되지 않네요.

그래서 "/Users"에 설치 하였습니다.

 

설치 버전은 5.7.28 모하비 10.14용 버전입니다.

https://dev.mysql.com/downloads/mysql/5.7.html

 

다운로드 받은 tar 파일 압축 해제 한다음

"/Users/XXX/mysql" 이런식으로 디렉토리 구성하고

거기에 복사해 넣습니다.

 

 

 

다음 디렉토리에서

/Users/XXX/mysql/mysql-5.7.28-macos10.14-x86_64/support-files/

mysql.server 파일의 내용을 수정합니다.

 

다음과 같이 basedir / datadir을 기재 합니다.

basedir=/Users/XXX/mysql/mysql-5.7.21-macos10.13-x86_64/

datadir=/Users/XXX/mysql/mysql-5.7.21-macos10.13-x86_64/data/

 

basedir로 이동후 data 디렉토리를 생성합니다.

cd /Users/XXX/mysql/mysql-5.7.21-macos10.13-x86_64/

mkdir data

 

data 디렉토리에 권한을 추가합니다.

777 또는 755를 적용 합니다.

chmod -R 777 ./data

 

basedir에서 다음 명령을 실행시킵니다.

./support-files/mysql.server start

 

다음과 같은 팝업이 뜹니다.

오류가 아니고 카탈리나의 강화된 권한정책에 의한 것이므로 너무 놀라지 않으셔도 됩니다. ^^;

실행에 필요한 파일에 대한 것이므로 반드시 [취소]를 눌러줍니다.

 

 

시스템 실행환경 > 보안 및 개인정보 보호 > 일반 탭 선택

하단의 자물쇠를 엽니다.

[확인 없이 허용]을 선택하여 해당 실행파일의 실행에 허가를 해줍니다.

 

 

 

중간에 실행이 중단되거나 오류가 나면 동일하게 반복해 줍니다.

2 ~ 3 번정도 실행파일명이 바뀌며 재시도 해야 합니다.

 

 

 

다음과 같이 pid파일을 만들지 못하는 오류가 발생합니다.

.. ERROR! The server quit without updating PID file (/Users/EGOV/mysql/mysql-5.7.28-macos10.14-x86_64/data/comghostLabui-MacBookPro.local.pid).

 

./data 디렉토리의 메타데이타나 DB파일이 생성및 초기화되어야 하는데

무슨 이유인지 모르나 오류가 발생하므로

다음과 같이 수동으로 초기화 해줍니다.

 

data내의 생성된 데이타 파일이 쓰레기(?) 이기 때문에 모두 지워 줍니다.

rm -rf는 하위 디렉토리까지 모두 지우는 명령어 이므로 현재 디렉토리를 확실하게 확인후 명령을 줍니다.

cd data

rm -rf *

 

basedir에서 다음 명령을 주어서 수동으로 data 디렉토리를 초기화 하고 필요한 파일이 생성되도록 합니다.

basedir / dataidr을 반드시 설정해야 합니다. 

./bin/mysqld --initialize --basedir=/Users/EGOV/mysql/mysql-5.7.28-macos10.14-x86_64 --datadir=/Users/EGOV/mysql/mysql-5.7.28-macos10.14-x86_64/data

 

서비스가 기동은 되나

mysql에 접속하려고 하면 다음과 같은 오류 발생한다.

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

 

 

다음과 같이 입력하여 mysql 콘솔로 들어갈수 있다.

하지만 root에 대한 디폴트 비번을 알수가 없다. ㅜㅠ

=> 특정한 로그파일에 임시 비번이 제공 된다. 여기서는 다른 방법으로 해결한다.

서비스가 실행중이면 종료하고 mysql을 safe모드로 다음과 같이 기동한다.

 

./bin/mysqld_safe --skip-grant-tables

 

2019-11-02T02:36:41.6NZ mysqld_safe Logging to '/Users/EGOV/mysql/mysql-5.7.28-macos10.14-x86_64/data/comghostLabui-MacBookPro.local.err'.

2019-11-02T02:36:41.6NZ mysqld_safe Starting mysqld daemon with databases from /Users/EGOV/mysql/mysql-5.7.28-macos10.14-x86_64/data

 

2019-11-02T02:39:36.6NZ mysqld_safe mysqld from pid file /Users/EGOV/mysql/mysql-5.7.28-macos10.14-x86_64/data/comghostLabui-MacBookPro.local.pid ended

 

다른 터미널 창에서 mysql 콘솔로 진입하여 비번을 변경한다.

참고로 필자는 테스트용으로 쓰는 DB라 비밀번호가 공백이다. ^^;

* 주의사항

비번 변경 명령을 2가지 모두 주어야 적용이 되었다. 이해는 않가지만 안전모드에서 2가지 유형의 password변경 명령어를 2가지 모두 주어야 한다.

./bin/mysql -u root -p

Enter password: 

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 2

Server version: 5.7.28 MySQL Community Server (GPL)

 

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

 

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

 

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

 

mysql> UPDATE mysql.user SET authentication_string = PASSWORD('변경된 비밀번호')

    -> WHERE User = 'root' AND Host = 'localhost';

Query OK, 1 row affected (0.01 sec)

 

Rows matched: 1  Changed: 1  Warnings: 0

 

mysql> SET PASSWORD = PASSWORD('변경된 비밀번호');

 

mysql 서비스를 중지시키고

정상적인 방법으로 재기동 시킨후 콘솔에 접속한다.

./support-files/mysql.server start

 

이제야 변경한 비번으로 접속이 된다.

앗~ 그런데 명령어가 먹지 않고 password에 대한 메시지가 나온다.

방금 분명 바꿨는데 ~~~ ㅜㅠ

./bin/mysql -u root -p

Enter password: 

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 3

Server version: 5.7.28

 

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

 

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

 

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

 

mysql> use mysql

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

 

 

이 버전에서는 다음과 같이 비번 지정하는 방식이 변경되었다.

하~ 오라클 님들~ 너무해요~ ㅜㅠ

이후로 "root@localhost"접속 권한 설정도 가능하다. ㅜㅠ

SET PASSWORD = PASSWORD('변경된 비밀번호');

 

Query OK, 0 rows affected, 1 warning (0.00 sec)

 

mysql> 

mysql> grant all privileges on mysql.* to root@localhost;

Query OK, 0 rows affected (0.00 sec)

 

mysql> flush privileges;

 

Query OK, 0 rows affected (0.00 sec)

 

* 이번버전에서 생각보다 많은 삽질을 필요로 하네요.

Mysql이 의외로 설치가 까다로운거 같네요 ^^;

 

DBeaver 클라이언트에서 테스트 해보면

정상적으로 DB에 접속이 되고 Database정보및 각종 쿼리가 정상적으로 수행된다.

 

 

* 최대한 기억나는대로 정리하였습니다.

 

* 이미 mysql 인스턴스가 떠있는경우 다음을 보고 조치한다.

https://gmlwjd9405.github.io/2018/12/23/error-mysql-start.html