Today
-
Yesterday
-
Total
-
  • ubuntu 22 : MySQL 8 + MariaDB 10 설치 시도 기록
    OS/Ubuntu 2023. 12. 9. 00:01

    이 기록은

    우분투에 mysql과 mariadb를 각각의 독립적인 인스턴스로 실행되도록 설치하고 실행한 기록이다.

    도커를 사용하여 두 인스턴스를 실행해보는 것에 대해서도 다른 게시글로 기록을 남겨볼 계획이다! 🐳


    두 가지를 모두 설치 시도해보다가

    둘다 에러가 난 상태이기때문에

    둘 다 삭제하고 처음부터 다시 시도해보면서 기록 🐵

    1. mysql , mariaDB 삭제

    참고한 곳

    1. mysql , mariaDB 완전 삭제

    apt remove --purge mysql*
    apt remove --purge maria*

    2. 관련 파일이 남아있는지 확인

    dpkg -l | grep maria
    dpkg -l | grep mysql

    여기서 아무것도 안나와서 깨끗히 지워진줄 알았는데 디렉토리가 검색이 많이 되었다.

    3. 폴더 및 관련항목 삭제

    rm -rf /etc/mysql* /var/lib/mysql* /var/log/mysql*
    apt autoremove
    apt autoclean

    2. MySQL 설치

    apt update & upgrade
    apt install mysql-server-8.0

    mysql 설치하는데 시간이 조금 오래 걸린다. 한 5분 쯤 소요되는것 같다. 무엇보다 중간에 멈춘것처럼 보여지는 상태가 잠깐 나타나는데 다운받는 중인 것이니 잠시 다른 일을 하고 오는것을 추천!

    아래와 같이 상태가 변했다면 설치가 완료된것이다.


    설치 확인!

    접속이 안되면 도루묵임 ㅎㄷㄷ

    mysql -u root -p

    처음 설치 후 접속시 비밀번호가 설정되어있지 않기 때문에 엔터 입력하면 된다.


    3. mariaDB 설치

    읽어볼 블로그 1 읽어볼 블로그 2 읽어볼 블로그 3 읽어볼 블로그 4*


    읽어볼 블로그 1에서 알아낸 정보

    2개의 MySQL 운영시의 주의점은 아래의 다섯가지는 꼭 개별로 사용해야 한다.
    
    1. MySQL 베이스 경로
    2. MySQL 데이터 경로
    3. Sock 파일
    4. my.cnf 위치
    5. 포트
    

    apt install 을 사용하지 않고

    수동 설치 해야한다는것을 알게되었다.


    mariadb 설치파일 다운로드

    설치 파일 다운 주소

    https://downloads.mariadb.org/rest-api/mariadb/{버전}/{파일이름.확장자}
    

    버전과 파일이름 참고 : mariadb.org


    읽어볼 블로그 4 에서 알아낸

    mariadb 사이트에서 알려준 mysql과 함께 mariadb 설치하는 방법 을 보고 따라해서 일단 mariadb 인스턴스가 설치 되었다.


    따라하는 과정은 히스토리 5에 적어두었다!


    히스토리 4와 무슨 차이가 있던걸까

    둘다 mariadb 사이트 보고 따라한거였는데..

    우선 짐작되는 부분으로는 히스토리 4에서 우선 실행 권한을 못받았었던걸로 보아

    mariadb 사이트에선 CentOS 였고 내껀 Ubuntu이다. 그룹 권한주는 부분에서 명령어가 달랐던것으로 짐작된다.

    왜냐하면 히스토리 5에서 따라갈땐 그룹 권한주는 부분을 나름대로 조사해서 다르게 적용했더니 문제가 발생하지 않았기 때문이다.




     



    히스토리 5. 재시도 성공!



    안내와 똑같이 진행해봄 😠

    1. 설치파일 다운로드 & 압축 해제

    • /opt로 이동
    • 헷갈리지 않게 다른 파일이 있는지 확인 후 진행
    • 아무것도 없으므로 진행 시작!
    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

    2. data directory 와 symlinks 생성 후 확인

    mkdir mariadb-data
    ln -s mariadb-10.11.4-linux-systemd-x86_64 mariadb
    ll


    3. group mariadb 와 user mariadb 생성

    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/

    4. data directory 에 my.cnf 파일 생성 후 내용 작성

    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

    5. 실행파일을 etc/init.d 경로에 mariadb 라는 이름으로 복사하고 실행 권한 수정

    cp mariadb/support-files/mysql.server /etc/init.d/mariadb
    chmod +x /etc/init.d/mariadb

    6. /etc/init.d/mariadb 파일 편집

    6-1. 아래 코드를 참고해서 mysql 을 mariadb 로 변경

    - # Provides: mysql
    + # Provides: mariadb
    - basedir=
    + basedir=/opt/mariadb
    - datadir=
    + datadir=/opt/mariadb-data
    - lock_file_path="$lockdir/mysql"
    + lock_file_path="$lockdir/mariadb"

    6-2. 아래 코드를 참고해서 $bindir/mysqld_safe 다음에 --defaults-file=/opt/mariadb-data/my.cnf 추가

    # 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 &

    6-3. 아래 코드를 참고해서 wait_for_ready() 함수의 $bindir/mysqladmin 다음에 --defaults-file=/opt/mariadb-data/my.cnf 추가

    wait_for_ready () {
    [...]
        if $bindir/mysqladmin --defaults-file=/opt/mariadb-data/my.cnf ping >/dev/null 2>&1; then

    7. 설치 스크립트 실행

    cd mariadb
    scripts/mariadb-install-db --defaults-file=/opt/mariadb-data/my.cnf

    8. mariadb 실행

    /etc/init.d/mariadb start

    이렇게 뜨면 성공한것임


    9. mysql 과 mariadb 인스턴스 실행 확인

    mysql 확인

    mysql -e "SELECT VERSION();"


    mariadb 확인

    mysql -e "SELECT VERSION();" --socket=/opt/mariadb-data/mariadb.sock


    실행 중인 port 확인

    netstat -tulpn


    10. 시스템 시작시 자동 실행되게 설정하기 (Ubuntu)

    알아낸 링크

    update-rc.d mariadb defaults

    11. 접속

    mysql -u root -p  --socket=/opt/mariadb-data/mariadb.sock

    socket을 지정해주면 되는것 같다.


    12. 원격 접속 해보기

    참고한 블로그

    12-1. 서버에서 할 일

    • localhost가 아닌 다른 ip에서 접속이 가능하도록 계정 생성 및 권한 부여
    • mysql host 접근 열어놓기
      vi /etc/mysql/mysql.conf.d/mysqld.cnf
      -  bind-address , mysqlx-bind-address 주석 처리
      ![](XChangeXChangeXChangeXChangeXChangeXChangeX64518d87-e479-4911-8e0e-60171ebd2599-)
      
    • 방화벽 mysql, mariadb port 개방

    12-2. 인텔리제이에서 접속 시도!


    오예







    히스토리 4. 실패 😔



    maria 이름 들어간 파일/디렉토리 모두 삭제

    maria 이름 들어간 파일 목록 확인

    find / -name *maria*


    maria 로 검색된 파일들 전부 삭제 후 다시 검색

    find / -name *maria* -exec rm {} \;
    find / -name *maria*


    mariadb 계정, 그룹 삭제

    userdel mariadb
    groupdel mariadb




    읽어볼 블로그 4 에서 알아낸

    mariadb 사이트에서 알려주는 mysql 과 함께 mariadb를 띄우기위한 설치 안내에 따라서

    mariadb 설치를 진행해보았다.

    내 코드는 data 디렉토리와 base 디렉토리 이름을 헷갈리게 (나중에 깨달음..) 지어놔서

    사이트를 보면서 진행해볼것을 권유 😳

    총체적 난국이었음 🤣



    mysql 설치 후 mariadb를 설치하기 위해 관련 디렉토리를 만들어둔다.

    압축파일을 관리할 디렉토리 생성

    mkdir /var/lib/mariadb-gz


    mariadb 설치파일 다운로드

    설치 파일 다운 주소

    https://downloads.mariadb.org/rest-api/mariadb/{버전}/{파일이름.확장자}
    

    버전과 파일이름 참고 : mariadb.org


    다운로드 !    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 나옴..😠

    왤까 🤯


    일단 설치가 잘 된것 같으니

    마저 진행해본다면


    시스템 시작 시 mariadb 실행

    cd /etc/init.d
    chkconfig --add mariadb 
    chkconfig --levels 3 mariadb on






    히스토리 3.



    mysql , mariadb 그냥(?) 설치시 동작 확인

    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이 초기화된게 아닐지도!

    아닌가 @_@;

    조금 더 조사가 필요해보인다







    히스토리 2.




    어제 에러 로그를 살펴보지 않고 깜짝놀라서 삭제한 기억만 있었기 때문에 오늘 mysql을 설치해둔 상태에서 mariadb를 설치하고 실행해봤다.

    오 그런데 오늘은 에러가 나지 않고 잘 실행되었다.

    하지만 mysql도 mariadb로 실행되었다.?

    그래서 다른 방법으로 확인해보려고 한다.

    먼저 mysql을 설치한 다음에 데이터베이스와 계정을 아무거나 생성한 후에

    mariadb를 설치해서 mysql에서 생성했던 계정과 데이터베이스에 접속해보는 시도와 mariadb에 새로운 계정과 데이터베이스를 생성해서 확인을 해볼것이다.







    히스토리 1.



    모험을 떠나보기로 했다 +_+

    리눅스 운영체제에

    mysql하고 mariadb를 함께 설치하면

    mysql을 2개 설치하는 격이라 해서

    설치가 쉽지 않다고 한다.

    윈도우에서는 포트 번호만 바꿔주면 알아서 깔끔하게 설치되었는데

    리눅스에선 충돌나면서 먼저 설치했던 db도 에러나기 시작하는 매직 🪄


    구글링 해보다가 쌍욕하는 사람도 봤다 ㅎㄷㄷ

    반대로 성공해서 정리해둔 사람들도 많이 있었다 !


    그동안 작성했던 프로젝트들이

    어떤건 mysql 을, 어떤건 mariadb를 사용을 했기 때문에

    이것은 피할 수 없는 모험이라고 생각한다 +_+


    그리고 무엇보다 회사에선 인텔리제이가 안돌아간다

    시도를 안해본것이 아님 ㅠ


    그래서 차라리 이걸 짬짬이 해두는게 좋겠다는 판단으로 떠나보는 모험 🎒🐒




Designed by Tistory / Custom by 얼거스