- 나중에 까먹을 나를 위해 작성 (틀린 부분이 있을 수 있음)
- 설치 환경 : macOS (Intel, Ventura)
- MySQL : 공식 홈페이지에서 다운로드 / port 번호 : 3306
- MariaDB : homebrew 다운로드 / port 번호 : 3307
- 기본적으로 MySQL은 3306 포트를 사용하고, MariaDB도 MySQL과 호환성을 유지하기 위해 기본적으로 3306 포트를 사용한다고 한다.
- 둘 다 동시에 설치하고 사용하려면 각각의 데이터베이스 서버를 서로 다른 포트에 연결하고, 데이터베이스 클라이언트도 서로 다른 것을 사용하여 구분하면 된다.
- 추가로 같은 소켓을 공유하면 에러가 나 동시 실행이 안되므로 둘 중 하나의 소켓 경로 변경도 필요하다.
왜인지는 모르겠으나 그냥 둘 다 설치하고 싶었다.
맨 처음 mariadb -> mysql 순으로 설치했으나 중간에 포트 번호 변경하여 따로 실행하는 것도 모르겠고..
내가 검색을 잘 못한 건지 둘 다 실행하는 게 많이 없기도 하고, chatGPT한테도 물어봤으나 여러 번 실패...
결국 여러 답들을 조합해 이런저런 삽질 끝에 일단은 성공한듯 싶다..?
이게 뭐라고 3일을 썼지만 설치하고 나서 이걸로 3일을 썼다는 게 믿기지 않아서 기분이 좀 그랬지만 그래도 설치하고 나니 뭔가 했냈다는 느낌은 있다.
역시 설정이 제일 어려운 거 같다.
[MySQL - 설치 (공식 홈페이지)]
- https://dev.mysql.com/downloads/mysql/
- OS에 맞게 설치
- 나는 legacy password(?)로 설정해 설치 과정 중 root에 적용할 password 입력함
MySQL 서버 실행
- 맥 시스템 설정
- MySQL에서 실행할 수 도 있지만 버튼을 눌러도 실행되지 않아 터미널에서 실행
- 터미널에서 MySQL 서버 실행
sudo /usr/local/mysql/support-files/mysql.server start
## 결과
Password:
ERROR! MySQL server PID file could not be found!
Starting MySQL
.Logging to '/usr/local/mysql/data/192.168.nate.com.err'.
. SUCCESS!
MySQL 서버 잘 실행되었는지 터미널에서 확인
# 방법-1
sudo lsof -i -P | grep mysql
# 방법-2 (설정한 MySQL port 3306으로 검색)
sudo lsof -i :3306
MySQL 접속
- 터미널에서 MySQL 접속
(만약 root@localhost 설정이 안 되어있어서 접속이 안되면 다른 터미널 켜서 접속하면 된다)
# 방법-1
sudo /usr/local/mysql/bin/mysql -u root -p
# 방법-2
mysql -u root -p --port=3306 # MySQL 포트 번호 3306으로 설정
- MySQL workbench에서 접속
- 다운로드 : https://dev.mysql.com/downloads/workbench/
[MariaDB - 설치 (homebrew)]
MariaDB homebrew 설치
brew install mariadb
MariaDB port 번호 3307로 변경 (중요)
- 추가로 port 번호를 다르게 설정해도 MySQL과 MariaDB가 같은 소켓을 사용하려고 하기 때문에 동시에 실행이 불가능하므로 MariaDB의 port번호를 변경하는 김에 socket 경로도 변경해 주는 것이 좋다.
vi /usr/local/etc/my.cnf
[mysqld]
port=3307 # 변경할 mairadb 포트 번호
bind-address=0.0.0.0 # 외부 접속 허용
socket=/tmp/mariadb.sock # MySQL 동시 실행 시 충돌 방지를 위한 socket 경로 변경
MariaDB Server 실행 및 확인
# MariaDB 백그라운드에서도 실행
brew services restart mariadb
# 잘 실행되는지 확인
brew services info mariadb
# 실행의 결과
mariadb (homebrew.mxcl.mariadb)
Running: ✔
Loaded: ✔
Schedulable: ✘
User: root
PID: 95937
MariaDB secure 설정
# 시큐어 설정
sudo /usr/local/Cellar/mariadb/10.11.2/bin/mariadb-secure-installation
# 설정 과정
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.
Enter current password for root (enter for none):
OK, successfully used password, moving on...
Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.
You already have your root account protected, so you can safely answer 'n'.
Switch to unix_socket authentication [Y/n] n
... skipping.
You already have your root account protected, so you can safely answer 'n'.
Change the root password? [Y/n] n # 여기서 해도 되고 나중에 설정이 끝난 후 바꿔줘도 된다
... skipping.
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] y
... Success!
Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] n
... skipping.
By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] n
... skipping.
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] y
... Success!
Cleaning up...
All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
MariaDB 접속
# 방법-1
mysql -u root -p --port=3307 # Mariadb port 3307을 넣어줘야 한다
# 방법-2
mariadb -u root -p --port=3307
[MySQL, MariaDB 동시에 잘 실행되고 있는지 확인]
sudo lsof -i :3306,3307 -P
# 결과
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mariadbd 1016 joy 20u IPv4 0xd6c1c48d8e170e05 0t0 TCP *:3307 (LISTEN)
mysqld 18282 _mysql 20u IPv6 0xd6c1c4972594be3d 0t0 TCP *:3306 (LISTEN)
잘 나오는 걸 볼 수 있다...
[에러]
- 수많은 에러가 있지만 일단 동시 설치 시 에러가 나면 삭제 후 재설치하는 게 마음 편하다
- 결국 내가 맨 처음에 잘못 설정한 게 커서 일단 동시 실행이 안 되는 socket 에러에 대해서만 기록
MySQL, MariaDB가 같은 socket 사용해서 발생하는 문제
- 역시 에러 로그를 잘 보는 것이 중요
- 맨 처음에 MySQL 설치 후 MariaDB를 설치하려고 할 때 MySQL 서버는 잠시 중지한 채로 설치를 진행하고 있었다. MariaDB의 포트 번호까지 변경 후 실행이 잘 되길래 MySQL도 실행하려고 하니 에러가 발생했다.
- 역시 에러 로그를 잘 보는 것이 중요! 에러 로그를 살펴보니 /tmp/mysql.sock 이미 사용 중이라는 에러가 있었다.
해결책으로는 1. 하나의 서버를 중지시킨 후 다른 서버를 시작하거나 or 2. 두 서버가 같은 소켓을 공유할 수 있도록 소켓 경로를 서버마다 다르게 설정
# 에러 로그 확인
sudo cat /usr/local/mysql/data/joys-MacBook-Pro.local.err
# 로그 내용 발췌
2023-04-19T13:39:14.229333Z 0 [ERROR] [MY-010270] [Server] Can't start server : Bind on unix socket: Address already in use
2023-04-19T13:39:14.229374Z 0 [ERROR] [MY-010258] [Server] Do you already have another mysqld server running on socket: /tmp/mysql.sock ?
- 이미 MariaDB의 port 번호를 바꾸고 있으므로 소켓 경로 재설정도 MariaDB 설정파일에서 변경하면 동시에 띄울 수 있다.
socket=/tmp/mariadb.sock
[삭제]
- 그냥 위 소켓 공유 에러 말고 동시 설치하다가 알 수 없는 에러가 발생한 경우 삭제 후 재설치하는 것이 좋다..
- 비효율적일지도 모르겠지만 그냥 mysql, mariadb 파일들에 대해서 find 명령어로 검색 후 나오는 걸 삭제했다.
MySQL 삭제 (공식 홈페이지에서 다운)
- MySQL 서버 중지
sudo /usr/local/mysql/support-files/mysql.server stop
- 시스템 설정의 MySQL 탭에서 Uninstall 버튼 클릭
- 터미널에서 mysql 검색해서 나오는 파일 다 삭제
# mysql 검색
find / -name mysql
# 결과들
find: /usr/sbin/authserver: Permission denied
/usr/local/etc/init.d/mysql
/usr/local/etc/logrotate.d/mysql
/usr/local/var/mysql
/usr/local/var/mysql/mysql
find: /Library/Application Support/Apple/ParentalControls/Users: Permission denied
find: /Library/Application Support/Apple/AssetCache/Data: Permission denied
...
# 위의 결과에서 find: 붙은거 제외한 위의 내용들은 다 삭제해줬다
sudo rm -rf {위의 경로 예: /usr/local/etc/init.d/mysql}
MariaDB 삭제 (homebrew 다운)
- 아래와 같이 homebrew 명령어 입력
# MariaDB 중지
brew services stop mariadb
# 링크 해제
brew unlink mariadb
# 삭제
brew remove mariadb # brew uninstall mariadb도 상관없다
# brew에 대한 업데이트 수행
brew cleanup
- my.cnf 관련 설정 파일 다 삭제
cd /usr/local/etc
# 그냥 터미널 폴더를 오픈해서
# my.cnf -> 파일
# my.cnf.default -> 파일
# my.cnf.d -> 폴더
# 다 삭제 해준다
- mariadb 검색 후 삭제
# mariadb 검색
find / -name mariadb
# 결과
find: /usr/sbin/authserver: Permission denied
/usr/local/etc/logrotate.d/mariadb
find: /Library/Application Support/Apple/ParentalControls/Users: Permission denied
find: /Library/Application Support/Apple/AssetCache/Data: Permission denied
find: /Library/Application Support/ApplePushService: Permission denied
...
# 위의 결과에서 find: 붙은거 제외한 위의 내용들은 다 삭제해줬다
sudo rm -rf {위의 경로 예: /usr/local/etc/logrotate.d/mariadb}
'Database' 카테고리의 다른 글
[Database] 데이터베이스란 뭘까?? (0) | 2023.04.30 |
---|