우분투에서 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)
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 셸에 접속할 수 있습니다.
'리눅스' 카테고리의 다른 글
Nginx 및 Apache 웹 서버에서 HTTP/2를 적용하는 방법 (0) | 2023.04.28 |
---|---|
웹 서버가 HTTP/2 프로토콜을 지원하는지 확인하는 방법 (0) | 2023.04.28 |
우분투에서 텔레포트(teleport)를 설치하는 방법(2) (0) | 2023.04.26 |
우분투에서 bash 자동 완성 기능을 사용하는 방법 (0) | 2023.04.22 |
[리눅스] HP ProLiant DL380 G7 Raid(raid 5) 구성하는 방법 (0) | 2023.04.21 |