Ubuntu MySQL <- 해당 블로그를 참고해 진행
sudo apt-get remove --purge mysql* -y
sudo apt-get autoremove -y
sudo apt-get autoclean
sudo apt-get update
sudo apt-get install mysql-server -y
sudo ufw allow mysql
sudo systemctl start mysql
sudo systemctl enable mysql
sudo /usr/bin/mysql -u root -p
위 모든 과정을 쉘 스크립트로 작성
#!/bash/bash
# mysql uninstall
sudo apt-get remove --purge mysql* -y
sudo apt-get autoremove -y
sudo apt-get autoclean
echo "Uninstalling Done"
# mysql install
sudo apt-get update
sudo apt-get install mysql-server -y
sudo ufw allow mysql
echo "Installing Done"
# mysql auto start setting
sudo systemctl start mysql
sudo systemctl enable mysql
# mysql version checking
mysql --version
삭제 -> 설치 -> 버전 확인까지 완료.
cd /usr/local
sudo wget dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.22.tar.gz
sudo tar xvfz mysql-8.0.22.tar.gz
디렉토리에 mysql-8.0.22 디렉토리가 생성됐다.
cd mysql-8.0.22
sudo rm -f cMakeCache.txt
sudo mkdir dir_mysql
cd dir_mysql
그 다음 cmake를 하는 과정에서 오류 발생
cmake DCMAKE_INSTALL_PREFIX=/usr/local/mysqlDMYSQL_DATADIR=/usr/local/mysql/data DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock DMYSQL_TCP_PORT=3306 DDEFAULT_CHARSET=utf8 DDEFAULT_COLLATION=utf8_general_ci DSYSCONFDIR=/etc DWITH_EXTRA_CHARSETS=all DWITH_INNOBASE_STORAGE_ENGINE=1 DWITH_ARCHIVE_STORAGE_ENGINE=1 DWITH_BLACKHOLE_STORAGE_ENGINE=1 DDOWNLOAD_BOOST=1 DWITH_BOOST=/usr/local/mysql/boost
CMake Error: The source directory "/usr/local/mysql-8.0.22/DWITH_BOOST=/usr/local/mysql/boost" does not exist.
usr/local/mysql에 boost가 없는 것 같다.
boost를 찾아 경로를 변경하는 방법을 시도
디렉토리를 뒤적이던중 /usr/local/mysql-8.0.22/include에서 boost를 발견
하지만 에러가 해결되지 않았다.
local에 boost 라이브러리를 참조해야하는데 없는 것 같다.
sudo apt upgrade libboost-all-dev
boost 라이브러리가 이미 존재하는 것 같아 일단 업데이트 부터 진행
해도 되지 않아 수동으로 boost 설치해보기
cd /usr/local
sudo wget http://downloads.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz
sudo tar xvfz boost_1_59_0.tar.gz
이후 다시 설치 시도
sudo cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-DMSQL_DATADIR=/usr/local/mysql/data -DMYSQL_UINX_ADDR=/usr/local/mysql/mysql.sock-DMYSQL_TCP_PORT=3306 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DSYSCONFDIR=/etc -DWITH_EXTRA_CHARSETS=all -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/src/boost_1_59_0
이전보다 진행이 더 되었지만 다른 에러가 발생했다ㅠ
찾아보니 소스 디렉토리에서 빌드를 하지말라는 뜻인 것 같아
참고블로그 처럼 압축해제한 곳 안에 다른 디렉토리를 생성해서 실행
mkdir dir_mysql
cd dir_mysql
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-DMSQL_DATADIR=/usr/local/mysql/data -DMYSQL_UINX_ADDR=/usr/local/mysql/mysql.sock-DMYSQL_TCP_PORT=3306 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DSYSCONFDIR=/etc -DWITH_EXTRA_CHARSETS=all -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/src/boost_1_59_0
하지만 이렇게해도 설치가 되지 않아
-DFORCE_INSOURCE_BUILD=1
강제로 소스 안에서 빌드하는 옵션을 찾아 적용
했으나..또 boost가 없다는 오류
다시 부스트 경로를 수정해 봐야할 것 같다.
경로를 수정해도 똑같은 결과가 나와 boost를 최신 버전으로 업데이트해본다.
sudo wget https://boostorg.jfrog.io/artifactory/main/release/1.73.0/source/boost_1_73_0.tar.gz
tar xvf boost_1_73_0.tar.gz
이제 다시 컴파일 시도 cmake (경로 1_59_0 -> 1_73_0 으로 변경)
sudo cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-DMSQL_DATADIR=/usr/local/mysql/data -DMYSQL_UINX_ADDR=/usr/local/mysql/mysql.sock-DMYSQL_TCP_PORT=3306 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DSYSCONFDIR=/etc -DWITH_EXTRA_CHARSETS=all -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/src/boost_1_73_0 -DFORCE_INSOURCE_BUILD=1
이전보다 더 많이 진행이 되었지만 또 다른 오류가 발생...
CMakeCache.txt 파일 강제 삭제 후 다시 시도
같은 에러 발생
sudo apt-get install libncurses5-dev libncursesw5-dev
ncurses 라이브러리 설치
에러 해결 및 다른 에러 발생..
Could NOT find PkgConfig (missing: PKG_CONFIG_EXECUTABLE)
해결을 위해 pkg-config 설치
sudo apt-get install pkg-config
오.. 몇시간 만에 드디어 성공했다.
디렉토리안에 여러 파일이 생성된 모습
이제 진짜 컴파일 할 차례
sudo make
컴파일이 아주 느리지만 되어가는 중이다.
는 30분넘게 실행되다.
fatal error 발생...
구글링을 해보니 이런 경우 메모리 부족인 경우가 많다해서
혹시 열어둔 약 20개의 사파리 탭 때문인가해서 일단 종료후 다시 sudo make
하지만 다시해도 같은 오류가 발생해
Swap 프로세스를 종료하고
Swap을 리사이즈 해보는 방식을 해봐야겠다.
sudo swapoff -a
sudo dd if=/dev/zero of=/swapfile bs=1M count=2000
sudo mkswap /swapfile
grep SwapTotal /proc/meminfo
sudo make
약 두간에 걸쳐 드디어 컴파일이 완료됐다.
이제 install을 할 차례
make install
bin/mysqld: File './mysql-bin.index' not found (Errcode: 13)
220225 4:57:31 [ERROR] Aborting
해당 에러 발생 권한부여가 검색해보니 권한부여 문제라해서
sudo chown -R mysql:mysql /usr/local/mysql/bin
로 mysql 디렉토리 접근 권한 부여
다른 에러 발생...
Installing MySQL on Unix/Linux <- MySQL 공식 홈페이지를 통해 얻은 정보로 한단계씩 해보기
bin/mysqld --initialize --user=mysql
에러가 발생하지 않았다.
임시 비밀번호까지 확인.
kJFQe,gq3u&
bin/mysql -u root -p
으로 MySQL 실행, 비밀번호 입력까지
했으나..
MySQL 실행이 되다가 Segmentation fault가 떠버린다
아래는 원래 mysql이 정상적으로 실행되었을 때 화면. (MacOS 실행)
원래는 Type 'help' or 'h' for help₩~~~ 가 나와야할 타이밍에
Segmentation fault가 뜬다.
그러다 이상한 점 발견.
분명히 설치한 버젼은 8.0.22버젼인데
터미널 창에서 보이는 버전은 5.5.62 버전이라고 나오고 있다.
처음 시도했던 버전이었는데 여기서 뭔가 꼬인 것 같기도하다..
위 과정을 다시 실행
cmake \
.. \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DSYSCONFDIR=/etc \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/usr/local/src/boost_1_73_0 -DFORCE_INSOURCE_BUILD=1
이 부분에서 오타가 있었음을 발견했다.
DCMAKE_INSTALL_PREFIX 부분의 오타때문에 /usr/local/mysql 이 아닌 다른 디렉토리가 생성되어 진행에 어려움이 있었던 것이다.
$ groupadd mysql
$ useradd -r -g mysql -s /bin/false mysql
그룹과 유저를 생성
-g : 그룹 지정 옵션
-s : user의 로그인 shesll
다음으로 mysql 디렉토리안에 디렉토리 생성 및 권한 부여
$ cd /usr/local/mysql
$ sudo mkdir mysql-files
$ sudo chown -R mysql:mysql /usr/local/mysql
$ sudo chown mysql:mysql mysql-files
$ sudo chmod 750 mysql-files
-R 옵션으로 해당 디렉토리 및 하위 디렉토리까지 권한 부여
$ sudo bin/mysqld --initialize --user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data
기본 DB를 생성하면 임시 비밀번호가 나타난다.
비밀번호를 기억한 후 mysql 서버 실행 및 확인하기
$ bin/mysqld_safe --user=mysql &
$ ps -ef | grep mysqld
mysql 프로세스가 실행되고 있음을 확인
$ bin/mysql -u root -p
mysql 실행
드디어 버전도 맞고 실행도 문제 없이 되는 MySQL!!!!
이제 임시비밀번호 변경만 하면 설치가 완료.
alter user 'root'@'localhost' identified by '비밀번호';