streetprogrammer

ubuntu에서 MYSQL8.0 버전 설치(이중설치-CMAKE) 본문

DATABASE

ubuntu에서 MYSQL8.0 버전 설치(이중설치-CMAKE)

차완호미 2022. 10. 18. 18:02
[요약] 
 

[1] MYSQL user 생성

$ groupadd mysql
$ useradd -r -g mysql -s /bin/false mysql


[2] 관련 패키지 설치 

$ apt-get update
$ apt-get install cmake
$ apt-get install libssl-dev
$ apt-get install libboost-all-dev
$ apt-get install libncurses5-dev libncursesw5-dev


+ boost 라이브러리 설치 

$ cd /usr/local/src/
$ sudo wget https://boostorg.jfrog.io/artifactory/main/release/1.73.0/source/boost_1_73_0.tar.gz
$ sudo tar xvfz boost_1_73_0.tar.gz


[3] MYSQL 파일  다운로드 

$ cd /usr/local
$ wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.25.tar.gz
$ tar xvfz mysql-8.0.25.tar.gz


[4] CMAKE

$ cd /usr/local/mysql-8.0.25
$ rm -f CMakeCache.txt
$ mkdir build (원하는 이름으로)
$ cd dir_mysql
$ cmake .. \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql8 \
-DMYSQL_DATADIR=/usr/local/mysql8/data \
-DMYSQL_UNIX_ADDR=/usr/local/mysql8/tmp/mysql.sock \
-DSYSCONFDIR=/usr/local/mysql8/etc \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/usr/local/mysql/boost_1_73_0
-DMYSQL_TCP_PORT=3307 \
-DMYSQL_USER=mysql \
-DMYSQL_GROUP=mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \

$ make
$ make test
$ make install

 

-DWITH_BOOST : boost 가 설치되어있는 경로 작성 *mysql과 버전을 안 맞춘 경우 에러발생 
-DCMAKE_INSTALL_PREFIX : my.cnf파일의 base역할인거 같음 
-DMYSQL_DATADIR :  DB초기화 진행시 해당위치에 파일이 셋팅됨 *다른버전의 파일이 셋팅될경우 에러발생
-DSYSCONFDIR : my.cnf파일 위치로 생각하면됨  *mysqld 실행시 default옵션으로 위치잡는데 왜 필요한지는 모르겠음 
-DMYSQL_UNIX_ADDR : 소켓위치 *파일이 실행되면 해당 위치에 소켓이 생성되는거같음 

[4] my.cnf 작성

[client]
port = 3307
socket=/usr/local/mysql8/tmp/mysql.sock

[mysqld]
default_time_zone = '+09:00'
port=3307
socket=/usr/local/mysql8/tmp/mysql.sock
basedir=/usr/local/mysql8
datadir=/usr/local/mysql8/data
user=mysql
character-set-client-handshake=FALSE
init_connect=SET collation_connection=utf8mb4_0900_ai_ci
init_connect=SET NAMES utf8mb4
character-set-server=utf8mb4
collation-server=utf8mb4_0900_ai_ci
lower_case_table_names=1

[mysqld_safe]
log-error=/usr/local/mysql8/log/mysql_log.err
pid-file=/usr/local/mysql8/mysql.pid

lower_case_table_names=1 : 대소문자 구분 안함 , 0일경우 구분함 (default 0)


[5] 권한 수정
make install 혹은 필요한 폴더를 만든 경우 해당 파일의 권한을 모두 mysql로 설정 해줘야함 

chmod 755 -R /usr/local/mysql8
chown  -R mysql:mysql  /usr/local/mysql8


[6] 기본 DB 생성 (초기화)

$ /usr/local/mysql8/bin/mysqld \
--defaults-file=/usr/local/mysql8/etc/my.cnf \
--initialize \
--user=mysql \
--basedir=/usr/local/mysql8 \
--datadir=/usr/local/mysql8/data
*defaults-file 옵션은 맨 앞에 작성

* 초기화를 다시 하고싶은경우 datadir삭제 후 진행 해야됨 (여기서 다른  버전 파일이 셋팅될경우  에러발생 : Upgrade ...)

* 초기화 된 경우 임시 비밀번호가 발급됨 

[7] 데몬서버 실행

$ /usr/local/mysql8/bin/mysqld_safe \
--defaults-file=/usr/local/mysql8/etc/my.cnf \
--user=mysql &
$ ps -ef | grep mysqld

 

* 데몬실행 으로 mysqld_safe 를 통해 순차적으로 실행됨

[8] 서버 접속

bin/mysql -u root -p

* 비밀번호는 아까 받음 임시 비밀번호 사용 

 

[9] root비밀번호 변경 

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '*******';

 

[10] DB생성

CREATE DATABASE lanes_of_load default CHARACTER SET UTF8;

 

[11] 권한 부여 

mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

mysql> create user 'test'@'%' identified by '*****';
Query OK, 0 rows affected (0.05 sec)

Database changed
mysql> select host, user from user;
+-----------+------------------+
| host      | user             |
+-----------+------------------+
| %         | test             |
| localhost | mysql.infoschema |
| localhost | mysql.session    |
| localhost | mysql.sys        |
| localhost | root             |
+-----------+------------------+
5 rows in set (0.00 sec)

mysql> create user 'root'@'%' identified by '*****';
Query OK, 0 rows affected (0.05 sec)

mysql> grant all privileges on *.* to 'test'@'%';
Query OK, 0 rows affected (0.07 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> grant all privileges on *.* to 'root'@'%';
Query OK, 0 rows affected (0.04 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

mysql> select host, user from user;
+-----------+------------------+
| host      | user             |
+-----------+------------------+
| %         | test             |
| %         | root             |
| localhost | mysql.infoschema |
| localhost | mysql.session    |
| localhost | mysql.sys        |
| localhost | root             |
+-----------+------------------+
6 rows in set (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
Query OK, 0 rows affected (0.08 sec)

mysql> GRANT ALL PRIVILEGES ON *.* TO 'test'@'%' WITH GRANT OPTION;
Query OK, 0 rows affected (0.12 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.03 sec)

 

 

참고 사이트 

http://jongguheo.blogspot.com/2021/01/mysql-8021-centos-7.html

https://velog.io/@yeonii/LinuxUbuntu20.04-Mysql8.0.25-%EC%88%98%EB%8F%99%EC%84%A4%EC%B9%98

진행사항에 맞는걸 해야지 다른방법으로 때려맞추다가 망할수있음

cnf에 옵션을 잘못넣으면 해당 옵션관련 오류가 뜸 -> 해당 옵션을 이용 못하기 때문에 지워주면됨 

본인이 설정한 옵션 이외에 다른 옵션이야기 하면 cnf 설정을 잡못잡아주고있는거 --default-file에 제대로된 위치 잡아야됨  생성되는 log파일  위치로 확인 가능 

 

'DATABASE' 카테고리의 다른 글

마리아DB 바이너리 설치  (1) 2022.12.19
CentOS에서 원하는 MYSQL 버전 설치  (0) 2022.10.27
Comments