본문 바로가기

리눅스

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

728x90

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

테스트 환경

$ lsb_release -d
Description:	Ubuntu 22.04.2 LTS
$ getconf LONG_BIT
64

MySQL 설치하기

1. MySQL 다운로드

- MySQL 공식 웹사이트 (https://dev.mysql.com/downloads/mysql/)에서 해당 버전의 tar 파일을 다운로드합니다.

- 다운로드한 파일은 원하는 경로에 저장합니다.

cd /usr/local/src
wget -q https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.33-linux-glibc2.12-x86_64.tar
$ ls -lh mysql-8.0.33-linux-glibc2.12-x86_64.tar
-rw-r--r-- 1 root root 973M Mar 17 17:15 mysql-8.0.33-linux-glibc2.12-x86_64.tar

2. MySQL 사용자 및 그룹 생성

- MySQL을 실행할 사용자와 그룹을 생성합니다.

sudo groupadd -g 28 mysql
sudo useradd -m -c "MySQL Server" -d /usr/local/mysql -s /bin/false -u 28 -g mysql mysql
$ grep mysql /etc/passwd /etc/group
/etc/passwd:mysql:x:28:28:MySQL Server:/usr/local/mysql:/bin/false
/etc/group:mysql:x:28:

3. tar 파일 압축 해제

- 다운로드한 tar 파일을 압축 해제합니다.

# sudo tar xf mysql-8.0.33-linux-glibc2.12-x86_64.tar
sudo tar xf mysql-8.0.*.tar
$ ls -lh | grep mysql
-rw-r--r-- 1 root root  973M Mar 17 17:15 mysql-8.0.33-linux-glibc2.12-x86_64.tar
-rw-r--r-- 1 7155 31415 587M Mar 17 16:46 mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz
-rw-r--r-- 1 7155 31415  17M Mar 17 17:00 mysql-router-8.0.33-linux-glibc2.12-x86_64.tar.xz
-rw-r--r-- 1 7155 31415 370M Mar 17 17:14 mysql-test-8.0.33-linux-glibc2.12-x86_64.tar.xz

 

# sudo tar xf mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz -C /usr/local/mysql --strip-components=1
sudo tar xf mysql-8.0.*.tar.xz -C /usr/local/mysql --strip-components=1
$ ls -l /usr/local/mysql
total 300
drwxr-xr-x  2 7161 31415   4096 Mar 17 04:33 bin
drwxr-xr-x  2 7161 31415     38 Mar 17 04:33 docs
drwxr-xr-x  3 7161 31415   4096 Mar 17 04:33 include
drwxr-xr-x  6 7161 31415   4096 Mar 17 04:33 lib
-rw-r--r--  1 7161 31415 284945 Mar 17 02:22 LICENSE
drwxr-xr-x  4 7161 31415     30 Mar 17 04:33 man
-rw-r--r--  1 7161 31415    666 Mar 17 02:22 README
drwxr-xr-x 28 7161 31415   4096 Mar 17 04:33 share
drwxr-xr-x  2 7161 31415     77 Mar 17 04:33 support-files

- MySQL 버전 정보 확인

cd /usr/local/mysql
./bin/mysql --version
$ ./bin/mysql --version
./bin/mysql  Ver 8.0.33 for Linux on x86_64 (MySQL Community Server - GPL)
728x90

4. MySQL 데이터 디렉토리 생성 및 권한 설정

- MySQL 데이터를 저장할 디렉토리를 생성하고 MySQL 사용자 및 그룹에 대한 권한을 설정합니다.

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

5. MySQL 구성 파일 작성

- MySQL 구성 파일을 작성합니다.

sudo vim /etc/my.cnf

- 구성 파일에 다음과 같이 설정합니다.

[mysqld]
bind-address = 0.0.0.0
port = 3306
user = mysql
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
log-error=/usr/local/mysql/data/mysql_error.log
socket = /tmp/mysql.sock

mysqlx=OFF

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

- my.cnf(/etc/my.cnf) 구문 오류 검사

./bin/mysqld --validate-config

6. MySQL 초기화

- MySQL 초기화 스크립트를 실행하여 데이터 디렉토리를 초기화합니다.

# sudo /usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
sudo ./bin/mysqld --defaults-file=/etc/my.cnf --initialize --user=mysql
이 경고는 --initialize-insecure 옵션을 사용하여 MySQL을 초기화 한 경우 발생합니다. 이 옵션은 임시 비밀번호 없이 MySQL을 초기화하고, 루트 사용자에게 암호를 할당하지 않습니다.

 

7. MySQL 초기 암호 확인

- MySQL 초기화를 수행할 때 생성된 임시 암호를 확인합니다.

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-04-26T14:45:54.438211Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: Op&&5ueEpkF*

8. MySQL 서비스 등록

- MySQL을 시스템 서비스로 등록합니다.

sudo vim /etc/systemd/system/mysql.service

- 서비스 파일에 다음과 같이 작성합니다.

[Unit]
Description=MySQL Server
After=network.target

[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --pid-file=/usr/local/mysql/data/mysql.pid
ExecStop=/usr/local/mysql/bin/mysqladmin shutdown
Restart=always

[Install]
WantedBy=multi-user.target

9. MySQL 서비스 시작

- MySQL 서비스를 시작합니다.

sudo systemctl start mysql
$ sudo systemctl status mysql
● mysql.service - MySQL Server
     Loaded: loaded (/etc/systemd/system/mysql.service; disabled; vendor preset: enabled)
     Active: active (running) since Wed 2023-04-26 23:18:39 KST; 17s ago
   Main PID: 1907 (mysqld)
      Tasks: 33 (limit: 2233)
     Memory: 456.3M
        CPU: 763ms
     CGroup: /system.slice/mysql.service
             └─1907 /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --user=mysql --bas>

Apr 26 23:18:39 node-02 systemd[1]: Started MySQL Server.

10. MySQL 부팅 시 자동 시작 설정

- MySQL 서비스를 부팅 시 자동으로 시작하도록 설정합니다.

sudo systemctl enable mysql

11. MySQL 접속 테스트

$ ./bin/mysql -uroot -p'Op&&5ueEpkF*'
mysql 클라이언트 오류
- error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory
libncurses5 패키지 설치
sudo apt-get install -y libncurses5​

 

12. MySQL 암호 변경

- MySQL 초기 암호를 사용하여 로그인한 후 암호를 변경합니다.

비밀번호 최초 변경
mysql> select version();
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.​

 

./bin/mysql -uroot -p'Op&&5ueEpkF*'
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
FLUSH PRIVILEGES;
exit

이제 MySQL이 정상적으로 설치되었는지 확인하기 위해 다음과 같이 명령어를 실행합니다.

./bin/mysql -u root -p'new_password'

- MySQL 버전 정보 확인

select version();
mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.33    |
+-----------+
1 row in set (0.00 sec)

이 명령어를 실행하면 MySQL 셸에 접속할 수 있습니다.

 

728x90