본문 바로가기

리눅스

[draft] 우분투에서 MySQL 8을 바이너리 파일로 설치하는 방법

728x90

우분투에서 MySQL 8.0.31을 바이너리 파일로 설치하는 방법

테스트 환경

$ lsb_release -d
Description:	Ubuntu 22.04.1 LTS

MySQL 설치

MySQL 바이너리 파일 다운로드

☞ MySQL Community Downloads

- https://dev.mysql.com/downloads/mysql

MySQL Community Download

1. 필수 패키지 설치

sudo apt-get update
sudo apt-get install -y libaio1 libncurses5 libnuma1

2. MySQL 사용자 및 그룹 생성

** ubuntu sudo 그룹에서 group id 27번을 사용하고 있음.

더보기

Ubuntu 패키지 매니저를 사용하여 MySQL을 설치할 때, mysql 계정 정보

$ cat /etc/passwd | grep mysql
mysql:x:118:121:MySQL Server,,,:/nonexistent:/bin/false
$ cat /etc/group | grep mysql
mysql:x:121:
$ cat /etc/passwd | grep mysql
mysql:x:118:121:MySQL Server,,,:/nonexistent:/bin/false

---

sudo groupadd -g 28 mysql
sudo useradd -m -c "MySQL Server" -d /usr/local/mysql -s /bin/false -u 28 -g 28 mysql

생성된 MySQL 계정 확인

cat /etc/passwd | grep mysql
$ cat /etc/passwd | grep mysql
mysql:x:28:28:MySQL Server:/usr/local/mysql:/bin/false

3. 바이너리 파일 설치

작업 디렉토리로 이동

cd /usr/local/src

MySQL 바이너리 파일 다운로드

wget -q https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.31-linux-glibc2.12-x86_64.tar
$ ls -l mysql-8.0.31-linux-glibc2.12-x86_64.tar
-rw-r--r-- 1 root root 899880960 Sep 14 15:03 mysql-8.0.31-linux-glibc2.12-x86_64.tar

압축 해제

tar xvf mysql-8.0.31-linux-glibc2.12-x86_64.tar
$ tar xvf mysql-8.0.31-linux-glibc2.12-x86_64.tar
mysql-test-8.0.31-linux-glibc2.12-x86_64.tar.xz
mysql-8.0.31-linux-glibc2.12-x86_64.tar.xz
mysql-router-8.0.31-linux-glibc2.12-x86_64.tar.xz

⊙ MySQL 바이너리 설치 파일 압축 해제

--strip-components=1 : /mysql/local/mysql/

tar xf mysql-8.0.31-linux-glibc2.12-x86_64.tar.xz -C /usr/local/mysql/ --strip-components=1
$ ls -l /usr/local/mysql/
total 316
drwxr-xr-x  2 7161 31415   4096 Sep 14 05:08 bin
drwxr-xr-x  2 7161 31415   4096 Sep 14 05:08 docs
drwxr-xr-x  3 7161 31415   4096 Sep 14 05:08 include
drwxr-xr-x  6 7161 31415   4096 Sep 14 05:08 lib
-rw-r--r--  1 7161 31415 287627 Sep 14 01:15 LICENSE
drwxr-xr-x  4 7161 31415   4096 Sep 14 05:08 man
-rw-r--r--  1 7161 31415    666 Sep 14 01:15 README
drwxr-xr-x 28 7161 31415   4096 Sep 14 05:08 share
drwxr-xr-x  2 7161 31415   4096 Sep 14 05:08 support-files
728x90

파일 소유권 변경

sudo chown -R mysql:mysql /usr/local/mysql

MySQL 설치 위치로 이동

cd /usr/local/mysql

MySQL 버전 확인

./bin/mysqld --version
$ ./bin/mysqld --version
/usr/local/mysql/bin/mysqld  Ver 8.0.31 for Linux on x86_64 (MySQL Community Server - GPL)

4. MySQL 데이터베이스 초기화

데이터베이스(DB) 데이터 디렉토리 생성

sudo mkdir -p /usr/local/mysql/data
sudo chown -R mysql:mysql /usr/local/mysql/data
sudo chmod 750 /usr/local/mysql/data

데이터베이스(DB) 초기화

--initialize : 기본 데이터베이스 생성, 임의의 패스워드로 root 계정을 생성 (패스워드는 로그에서 확인)
--initialize-insecure : 기본 데이터베이스 생성, 빈 암호로 root 계정 생성
  • my.cnf 설정 파일이 없을 때
sudo /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
  • my.cnf 설정 파일이 있을 때
sudo /usr/local/mysql/bin/mysqld --defaults-file=/usr/local/mysql/my.cnf --initialize --user=mysql

5. MySQL 설정 파일(edit my.cnf)

sudo cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf
sudo vim /usr/local/mysql/my.cnf
[mysqld]
user = mysql
port = 3306
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
socket = /tmp/mysql.sock
log-error=/usr/local/mysql/data/mysql_error.log

mysqlx=OFF

[client]
port = 3306
socket = /tmp/mysql.sock

6. MySQL root 패스워드 확인

cat /usr/local/mysql/data/mysql_error.log | grep "A temporary password is generated for root@localhost"
$ cat /usr/local/mysql/data/mysql_error.log | grep "A temporary password is generated for root@localhost"
2023-01-09T11:32:55.982985Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: >beafXp!i67m

7. MySQL 서비스 실행

./bin/mysqld_safe --defaults-file=/usr/local/mysql/my.cnf &

8. 초기 비밀번호 설정 및 보안 설정

ALTER USER 'root'@'localhost' IDENTIFIED BY '새로운_비밀번호';

9. MySQL 보안 설정

루트 비밀번호 설정, 익명 사용자 삭제, 테스트 데이터베이스 삭제 등

sudo /usr/local/mysql/bin/mysql_secure_installation

10. PATH 환경 변수 설정

vim ~/.bashrc
PATH=$PATH:$HOME/bin:/usr/local/mysql/bin
source ~/.bashrc

또는

echo 'export PATH=$PATH:/usr/local/mysql/bin' >> ~/.bashrc
source ~/.bashrc

11. MySQL 클라이언트 설정 및 접속

MySQL 접속 및 비밀번호 설정

더보기

MySQL 클라이언트 오류

- error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory

$ ./mysql -uroot -p'>beafXp!i67m'
./mysql: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory

libncurses5 패키지 설치

apt-get install -y libncurses5

---

mysql -uroot -p'>beafXp!i67m'
$ ./mysql -uroot -p'>beafXp!i67m'
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 8.0.31

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

 

참고URL

- Server System Variable Reference : https://dev.mysql.com/doc/refman/8.0/en/server-system-variable-reference.html

- MySQL Configuration Utility : https://dev.mysql.com/doc/refman/8.0/en/mysql-config-editor.html

- Initializing the Data Directory : https://dev.mysql.com/doc/refman/8.0/en/data-directory-initialization.html

 

728x90