리눅스

RockyOS9 MariaDB 10.11 설치 및 root 비밀번호 분실 조치 방법

Link2Me 2024. 11. 27. 15:18
728x90

Rocky Linux에서 사용되는 dnf는 "Dandified Yum"의 약자로, 패키지 관리 도구이다.
Rocky Linux와 같은 RHEL 계열 리눅스 배포판에서 사용되며, 시스템 패키지(소프트웨어)를 설치, 제거, 업데이트, 검색, 관리하는 데 사용된다. 이전의 Yum(Yellowdog Updater, Modified)을 대체하는 도구로, 더 빠르고 강력하며 개선된 의존성 처리 및 성능을 제공한다.


DNF의 주요 특징
- 의존성 해결 개선: 패키지 설치 시 의존성 충돌을 더 정확하고 효율적으로 처리.
- 빠른 성능: C언어와 Python3 기반으로 작성되어 더 빠른 패키지 처리 가능.
- 확장성: 플러그인을 통해 기능 추가가 용이.
- 메모리 사용 감소: 더 적은 메모리로 효율적으로 실행.
- 리포지토리 관리: 여러 리포지토리를 쉽게 설정하고 관리.

DNF의 주요 명령어
- dnf install <패키지>: 패키지 설치
- dnf remove <패키지>: 패키지 제거
- dnf update: 시스템 전체 패키지 업데이트
- dnf upgrade: 업데이트와 비슷하지만, 더 새로운 버전으로 업그레이드
- dnf search <키워드>: 특정 패키지 검색
- dnf list: 설치 가능한 패키지 목록 표시
- dnf info <패키지>: 패키지 정보 표시
- dnf clean all: 캐시 파일 정리

 

Rocky Linux 9.5 에서 설치 테스트한 스크립트이다.

################################
##### MariaDB 10.11 버전 설치 #####
################################
 
vi /etc/yum.repos.d/MariaDB.repo
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.11/rhel9-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
 
 
# DNF 패키지 관리자에서 사용할 수 있는 저장소의 목록을 출력하고, MariDB 저장소를 확인
dnf repolist
 
# MariaDB 설치
dnf -y install MariaDB-server MariaDB-client
 
# mariadb 부팅 시 자동 시작 설정
systemctl enable mariadb
 
# mariadb 시작
systemctl start mariadb
 
# mariadb 상태 확인
systemctl status mariadb
 
# MariaDB 설정
mariadb-secure-installation
 
비밀번호 설정
 
# MariaDB 프로세스 확인 (둘중 하나 실행)
ps -ef | grep mysql
ps -ef | grep mariadbd
 
vi /etc/my.cnf.d/server.cnf
[mysqld]
collation-server = utf8_general_ci
init-connect='SET NAMES utf8'
character-set-server = utf8
 
vi /etc/my.cnf.d/mysql-clients.cnf
[mysql]
default-character-set=utf8
[mysqldump]
default-character-set=utf8
 
# 서비스 재시작
systemctl restart mariadb
 
mysql -u root -p
status
# 설치는 여기까지 하면 완료다. 아래 사항은 패스워드 인증방식에 대한 사항이다.

use mysql;
select * from global_priv;
select host,user,password,plugin from user;
 
# (10.4 버전 이상)이전 패스워드 인증방식으로 설정하기 ==> 패스워드 입력 방식
ALTER USER root@localhost IDENTIFIED VIA mysql_native_password USING PASSWORD("비밀번호");
flush privileges;
 
# unix_socket 인증방식으로 설정하기 ==> root 권한으로 접속 시 비밀번호 없이 인증
ALTER USER root@localhost IDENTIFIED VIA unix_socket;
flush privileges;
select host,user,password,plugin from user;
 
# 원격은 무조건 패스워드 인증으로만 접근이 가능하다.
 
#######################################################################
####### 실제 적용 예제 ######
#######################################################################
mariadb -u root -p
 
use mysql;
create user codefox@localhost identified by 'codefoxfull!!';
grant all privileges on orgChart.* to codefox@localhost;
flush privileges;
 
-- DB 생성
create database orgChart default character set utf8;
use orgChart;
 
-- 파일 업로드
source orgChart.sql;
 
 
#######################################################################
# DB 백업
mysqldump -uroot ---databases orgChart > orgChart.sql
 
# MariaDB 환경설정 관리 경로
ls -al /etc/my.cnf.d/
 
#######################################################################
# MariaDB 설치 경로 확인
cd /var/lib/mysql
 
############################
### root 패스워드 분실 복구 ####
############################
# 콘솔 창을 2개 준비하여 작업한다.
# 먼저 mariadb 서비스 중지한다.
systemctl stop mariadb
 
# 상태 확인
systemctl status mariadb
 
# 콘솔 A 창에서 확인한다.
ps -ef | grep mysql
 
# 콘솔 B창에서 DB 실행
sudo mysqld_safe --skip-grant-tables &
 
# 콘솔 A창에서 확인
ps -ef | grep mysql
 
# 콘솔 A창에서 비밀번호 없이 접속하여 패스워드 변경
mysql -u root 
 
-- 저장된 인증방식을 비활성화하기 위해 먼저 실행한다.
flush privileges;
 
-- 비밀번호 변경
grant all privileges on *.* to 'root'@'localhost' identified by '비밀번호';
flush privileges;
exit
 
# 콘솔 B창에서 Enter를 눌러 백그라운드 모드에서 빠져나온다.
 
# 콘솔 A창에서 실행되는 DB 모두 죽이기
ps -ef | grep mysql
kill -9 PID번호
를 해서 하나 하나 mysql 데몬을 전부 죽인다.
 
# 실행되는 mysql 프로세스가 없는지 확인한다.
ps -ef | grep mysql
 
# MariaDB 시작
systemctl start mariadb
 
# 접속 테스트
mysql -uroot -p
 

 

 

 

728x90