이 기록은
우분투에 mysql과 mariadb를 각각의 독립적인 인스턴스로 실행되도록 설치하고 실행한 기록이다.
도커를 사용하여 두 인스턴스를 실행해보는 것에 대해서도
다른 게시글로 기록을 남겨볼 계획이다! 🐳
두 가지를 모두 설치 시도해보다가
둘다 에러가 난 상태이기때문에
둘 다 삭제하고 처음부터 다시 시도해보면서 기록 🐵
apt remove --purge mysql*
apt remove --purge maria*
dpkg -l | grep maria
dpkg -l | grep mysql
여기서 아무것도 안나와서 깨끗히 지워진줄 알았는데
디렉토리가 검색이 많이 되었다.
rm -rf /etc/mysql* /var/lib/mysql* /var/log/mysql*
apt autoremove
apt autoclean
apt update & upgrade
apt install mysql-server-8.0
mysql 설치하는데 시간이 조금 오래 걸린다.
한 5분 쯤 소요되는것 같다.
무엇보다 중간에 멈춘것처럼 보여지는 상태가 잠깐 나타나는데
다운받는 중인 것이니 잠시 다른 일을 하고 오는것을 추천!
아래와 같이 상태가 변했다면 설치가 완료된것이다.
설치 확인!
접속이 안되면 도루묵임 ㅎㄷㄷ
mysql -u root -p
처음 설치 후 접속시 비밀번호가 설정되어있지 않기 때문에 엔터 입력하면 된다.
읽어볼 블로그 1
읽어볼 블로그 2
읽어볼 블로그 3
읽어볼 블로그 4*
읽어볼 블로그 1에서 알아낸 정보
2개의 MySQL 운영시의 주의점은 아래의 다섯가지는 꼭 개별로 사용해야 한다.
1. MySQL 베이스 경로
2. MySQL 데이터 경로
3. Sock 파일
4. my.cnf 위치
5. 포트
apt install 을 사용하지 않고
수동 설치 해야한다는것을 알게되었다.
설치 파일 다운 주소
https://downloads.mariadb.org/rest-api/mariadb/{버전}/{파일이름.확장자}
읽어볼 블로그 4 에서 알아낸
mariadb 사이트에서 알려준 mysql과 함께 mariadb 설치하는 방법 을 보고 따라해서 일단 mariadb 인스턴스가 설치 되었다.
따라하는 과정은 히스토리 5에 적어두었다!
히스토리 4와 무슨 차이가 있던걸까
둘다 mariadb 사이트 보고 따라한거였는데..
우선 짐작되는 부분으로는
히스토리 4에서 우선 실행 권한을 못받았었던걸로 보아
mariadb 사이트에선 CentOS 였고 내껀 Ubuntu이다.
그룹 권한주는 부분에서 명령어가 달랐던것으로 짐작된다.
왜냐하면 히스토리 5에서 따라갈땐
그룹 권한주는 부분을 나름대로 조사해서 다르게 적용했더니 문제가 발생하지 않았기 때문이다.
안내와 똑같이 진행해봄 😠
cd /opt
wget https://downloads.mariadb.org/rest-api/mariadb/10.11.4/mariadb-10.11.4-linux-systemd-x86_64.tar.gz
tar -zxvf mariadb-10.11.4-linux-systemd-x86_64.tar.gz
mkdir mariadb-data
ln -s mariadb-10.11.4-linux-systemd-x86_64 mariadb
ll
groupadd -r mariadb
useradd -c "MariaDB Server" -d /opt/mariadb -g mariadb -r mariadb
chown -R mariadb:mariadb mariadb-10.11.4-linux-systemd-x86_64/
chown -R mariadb:mariadb mariadb-data/
vi mariadb-data/my.cnf
[client]
port = 3307
socket = /opt/mariadb-data/mariadb.sock
[mysqld]
datadir = /opt/mariadb-data
basedir = /opt/mariadb
port = 3307
socket = /opt/mariadb-data/mariadb.sock
user = mariadb
chown mariadb:mariadb mariadb-data/my.cnf
cp mariadb/support-files/mysql.server /etc/init.d/mariadb
chmod +x /etc/init.d/mariadb
- # Provides: mysql
+ # Provides: mariadb
- basedir=
+ basedir=/opt/mariadb
- datadir=
+ datadir=/opt/mariadb-data
- lock_file_path="$lockdir/mysql"
+ lock_file_path="$lockdir/mariadb"
# Give extra arguments to mysqld with the my.cnf file. This script
# may be overwritten at next upgrade.
$bindir/mysqld_safe --defaults-file=/opt/mariadb-data/my.cnf --datadir="$datadir" --pid-file="$mysqld_pid_file_path" $other_args >/dev/null 2>&1 &
wait_for_ready () {
[...]
if $bindir/mysqladmin --defaults-file=/opt/mariadb-data/my.cnf ping >/dev/null 2>&1; then
cd mariadb
scripts/mariadb-install-db --defaults-file=/opt/mariadb-data/my.cnf
/etc/init.d/mariadb start
이렇게 뜨면 성공한것임
mysql 확인
mysql -e "SELECT VERSION();"
mariadb 확인
mysql -e "SELECT VERSION();" --socket=/opt/mariadb-data/mariadb.sock
실행 중인 port 확인
netstat -tulpn
update-rc.d mariadb defaults
mysql -u root -p --socket=/opt/mariadb-data/mariadb.sock
socket을 지정해주면 되는것 같다.
vi /etc/mysql/mysql.conf.d/mysqld.cnf
오예
maria 이름 들어간 파일 목록 확인
find / -name *maria*
maria 로 검색된 파일들 전부 삭제 후 다시 검색
find / -name *maria* -exec rm {} \;
find / -name *maria*
userdel mariadb
groupdel mariadb
읽어볼 블로그 4 에서 알아낸
mariadb 사이트에서 알려주는
mysql 과 함께 mariadb를 띄우기위한 설치 안내에 따라서
mariadb 설치를 진행해보았다.
내 코드는 data 디렉토리와 base 디렉토리 이름을 헷갈리게 (나중에 깨달음..) 지어놔서
사이트를 보면서 진행해볼것을 권유 😳
총체적 난국이었음 🤣
압축파일을 관리할 디렉토리 생성
mkdir /var/lib/mariadb-gz
설치 파일 다운 주소
https://downloads.mariadb.org/rest-api/mariadb/{버전}/{파일이름.확장자}
다운로드 ! wget 명령어 사용방법
cd /var/lib/mariadb-gz/
wget https://downloads.mariadb.org/rest-api/mariadb/10.11.4/mariadb-10.11.4-linux-systemd-x86_64.tar.gz
현재 위치에 압축 해제
tar -zxvf mariadb-10.11.4-linux-systemd-x86_64.tar.gz
data 디렉토리 생성
mkdir /var/lib/mariadb
symlinks 생성
ln -s mariadb-10.11.4-linux-systemd-x86_64 mariadb
mariadb 라는 그룹과 유저를 만들어주고
data 디렉토리와 symlinks에 등록해준다.
groupadd --system mariadb
useradd -c "MariaDB Server" -d /var/lib/mariadb-gz -g mariadb --system mariadb
chown -R mariadb:mariadb mariadb-10.11.4-linux-systemd-x86_64/
chown -R mariadb:mariadb /var/lib/mariadb/
data 디렉토리에 my.cnf 파일을 새로 만들어준다.
vi ../mariadb/my.cnf
chown mariadb:mariadb ../mariadb/my.cnf
data 디렉토리에 생성한 my.cnf 파일을 열어서 아래와 같은 형식으로 작성해준다.
[client]
port = 3307
socket = /var/lib/mariadb/mariadb.sock
[mysqld]
datadir = /var/lib/mariadb
basedir = /var/lib/mariadb-gz/mariadb
port = 3307
socket = /var/lib/mariadb/mariadb.sock
user = mariadb
support files 디렉토리에 있는 mysql.server 파일을
/etc/init.d/ 경로에 mariadb 이름으로 복사해준다.
cp mariadb/support-files/mysql.server /etc/init.d/mariadb
chmod +x /etc/init.d/mariadb
/etc/init.d/mariadb 파일을 열고 아래와 같이
mysql 을 mariadb 로 바꿔준다.
- # Provides: mysql
+ # Provides: mariadb
- basedir=
+ basedir=/var/lib/mariadb-gz/mariadb
- datadir=
+ datadir=/var/lib/mariadb
- lock_file_path="$lockdir/mysql"
+ lock_file_path="$lockdir/mariadb"
그리고
파일을 내리다보면
아래와 같은 코드를 만날텐데
wait_for_ready() 함수의 $bindir/mariadb-admin 키워드 다음에
--defaults-file=/var/lib/mariadb/my.cnf
를 입력해준다.
마지막으로
조금만 더 파일을 내려보면
다음과 같은 코드 뭉치를 만날 수 있다.
이 코드 뭉치의 then 구문에 있는 $bindir/mysqld_safe 키워드 다음에
--defaults-file=/var/lib/mariadb/my.cnf
를 입력해준다.
이제 거의 다 했다!
저장하고 파일을 벗어나서
tar.gz 압축을 해제해주었던 디렉토리의 mariadb 로 이동하여
mariadb-install-db 스크립트에 my.cnf 연결해서 실행해주면 mariadb의 설치가 진행된다.
cd /var/lib/mariadb-gz/mariadb
scripts/mariadb-install-db --defaults-file=/var/lib/mariadb/my.cnf
설치에 성공했다면
이제 다음의 명령어로 실행할 수 있다.
/etc/init.d/mariadb start
고 하는데 나는 permission denied 나옴..😠
왤까 🤯
일단 설치가 잘 된것 같으니
마저 진행해본다면
cd /etc/init.d
chkconfig --add mariadb
chkconfig --levels 3 mariadb on
mysql을 먼저 설치해서
mysql_user 계정과 mysql_test 데이터베이스를 생성한 후에 Bye를 찍어주고
아무 설정도 건드리지 않은 채로 mariadb를 설치해보았다.
설치가 완료되어 mysql을 다시 실행해봤다.
root 계정은 역시나 잘 들어가진다.
데이터베이스 목록을 조회해보았다.
mariadb를 설치하기 전에 만들어두었던 mysql_test 가 사라졌다.
user 테이블에서 계정 목록도 조회해보았다.
만들어두었던 mysql_user 가 사라졌다.;;
아무래도 2번째로 설치한 mariadb에 의해 초기화가 된 것 같다.
만약 mysql을 잘 사용하던 와중에 mariadb를 설치하게 되었다면
가지고 있던 데이터베이스와 테이블 정보들이 삭 날라갔겠지..?
오싹하다
😬
실행중인 port 번호도 확인을 해보았다.
netstat -lntp
웹서버, sftp 를 제외하고 떠있는 port 번호가 이것밖에 없었다 ;;
설치된 파일 목록도 조회!
일단 여기서 확인해볼 수 있는 정보로는
my.cnf 가 덮어씌워졌을 것 같고
debian.cnf와 debian-start 파일도 변경이 생겼을것 같다.
debian.cnf 파일
이 파일은 문제가 없는것 같기도;;
debian-start 파일
shell script 문법은 잘 모르지만
일단 뭔가 분기 태우는게 보인다
어쩌면 mysql이 초기화된게 아닐지도!
아닌가 @_@;
조금 더 조사가 필요해보인다
어제 에러 로그를 살펴보지 않고 깜짝놀라서 삭제한 기억만 있었기 때문에
오늘 mysql을 설치해둔 상태에서 mariadb를 설치하고 실행해봤다.
오 그런데 오늘은 에러가 나지 않고 잘 실행되었다.
하지만 mysql도 mariadb로 실행되었다.?
그래서 다른 방법으로 확인해보려고 한다.
먼저 mysql을 설치한 다음에
데이터베이스와 계정을 아무거나 생성한 후에
mariadb를 설치해서 mysql에서 생성했던 계정과 데이터베이스에 접속해보는 시도와
mariadb에 새로운 계정과 데이터베이스를 생성해서 확인을 해볼것이다.
모험을 떠나보기로 했다 +_+
리눅스 운영체제에
mysql하고 mariadb를 함께 설치하면
mysql을 2개 설치하는 격이라 해서
설치가 쉽지 않다고 한다.
윈도우에서는 포트 번호만 바꿔주면 알아서 깔끔하게 설치되었는데
리눅스에선 충돌나면서 먼저 설치했던 db도 에러나기 시작하는 매직 🪄
구글링 해보다가 쌍욕하는 사람도 봤다 ㅎㄷㄷ
반대로 성공해서 정리해둔 사람들도 많이 있었다 !
그동안 작성했던 프로젝트들이
어떤건 mysql 을, 어떤건 mariadb를 사용을 했기 때문에
이것은 피할 수 없는 모험이라고 생각한다 +_+
그리고 무엇보다 회사에선 인텔리제이가 안돌아간다
시도를 안해본것이 아님 ㅠ
그래서 차라리 이걸 짬짬이 해두는게 좋겠다는 판단으로 떠나보는 모험 🎒🐒
글 잘 봤습니다, 감사합니다.