[Linux] Linux에 mariadb 설치하고 다른 ip에서 접속하기
Mariadb 설치하기
sudo apt install mariadb-server mariadb-client
- mariadb-server : 오픈 소스 관계형 데이터베이스인 mariadb를 설치한다.
- mariadb-client : MariaDB 데이터베이스 제품에 연결할 수 있다.
sudo mariadb-secure-installation
- mariadb-secure-installation : Unix 시스템에서 사용할 수 있는 쉘 스크립트이며 다음과 같은 방법으로 MariaDB 설치의 보안을 향상시킬 수 있다. 이는 루트 계정의 비밀번호를 설정할 수 있다.
위와 같이 설치되었다면 아래의 command를 쳐서 들어간다.
sudo mariadb
오류가 생겼을 경우)
위와 같이 command를 작성하다가 mariadb 설치 부분에 에러가 발생할 수도 있다. 만약 mariadb-common과 같은 package가 설치가 안 되었다고 뜬다면 아래의 command를 작성해주면 된다.
sudo apt purge mariadb* -y | sudo apt purge mysql* -y
Mariadb command
- systemctl enable mariadb : mariadb 활성화
- systemctl start mariadb : mariadb 시작
- systemctl status mariadb : mariadb 상태 확인
- sudo systemctl stop mariadb : mariadb 중지
- sudo systemctl restart mariadb : mariadb 재시작
- sudo service mariadb start : systemctl 사용 못 할 때 쓰는 명령어
mariadb 접속시 db 생성
GRANT ALL PRIVILEGES ON *.* to 'root'@'%' IDENTIFIED BY 'kaeri';
CREATE DATABASE 'DB이름';
CREATE USER '유저이름'@'%' IDENTIFIED BY '비밀번호'ㅣ
GRANT ALL PRIVILEGES ON 데이터베이스.* TO '유저이름'@'%';
FLUSH PRIVILEGES;
ssh 설치하여 다른 ip에 접속하기
1) 설치하기
sudo apt update
sudo apt install openssh-server
2) 상태확인하기
sudo systemctl status ssh
3) ssh 실행하기
sudo systemctl enable ssh
sudo systemctl start ssh
mariadb -u <user_name> -p -h <host ip>
고정 ip 설정하기
1) net-tools 설치하기
apt install net-tools
2) ip 수정하기
vi /etc/netplan/01-network-manager-all.yaml
2-1) 동적인 ip로 설정하기
network:
version: 2
renderer: NetworkManager
ethernets:
enp0s3: # This might be different based on your system
dhcp4: true # This might be set to true for dynamic IP assignment
2-2) 고정적인 ip 설정하기
network:
version: 2
renderer: NetworkManager
ethernets:
enp0s3:
dhcp4: no
addresses: [192.168.1.100/24] # Set your desired static IP and subnet mask
gateway4: 192.168.1.1 # Set your gateway IP address
nameservers:
addresses: [8.8.8.8, 8.8.4.4] # Set your DNS server(s)
위는 예시이므로 ifconfig를 통해 들어가 본인의 system으로 변경해주고, ip를 변경해준다.
3) ip 설정 적용하기
sudo netplan apply
다른 ip 허용하기
1) mariadb 설정 파일 수정하기
설치한 mariadb에서 다른 ip의 접속을 허용하기 위해서 mariadb의 설정 파일을 수정해야 한다. 기본적으로 /etc/mysql/mariadb.conf.d/50-server.cnf or /etc/my.cnf.d/server.cnf에 위치함으로 여기에 들어가서 mariadb 설정파일이 있는지 확인한다.
bind-address = 0.0.0.0
설정파일에 들어가서 위와 같이 설정해준다.
sudo systemctl restart mariadb
설정이 적용되도록 위와 같이 마리아디비를 재시작해준다.
2) 방화벽 설정해주기
sudo ufw allow 3306
db 포트가 3306으로 되어 있기에 이를 방화벽으로 허용해준다.
데이터 폴더 변경하기
1) my.cnf 파일 수정하기
위에서 mariadb 설정파일( /etc/mysql/, /etc/mysql/mariadb.conf.d/, or /etc/my.cnf.d/)로 들어가서 my.cnf을 수정한다.
datadir=/var/lib/mysql
기본적으로 datadir는 위와 같이 써져있는데 이를 본인의 data 폴더 위치로 변경해준다.
2) 파일 옮기기
sudo mv /var/lib/mysql/* /new/data/directory/path/
기존의 datadir에 있는 파일들을 옮겨준다.
sudo cp -rv /var/lib/mysql/* /new/data/directory/path/
만약 옮기는 도중에 에러가 날 것 같다면 해당 파일들을 복사해준다.
3) 권한 주기
sudo chown -R mysql:mysql /new/data/directory/path
데이터를 옮기고 나서 새로운 데이터 폴더에서 mariadb에서 액세스할 수 있도록 권한을 줘야 한다. 위와 같이 권한을 주면 된다.
- -r : 해당 옵션을 주면 하위 디렉터리(하위에 있는 모든 파일포함)까지 모두 복사한다.
- -v : cp 명령어를 수행하면서 복사 진행 상태를 출력한다.
- -p : 파일 or 디렉터리를 복사할 때 복사 대상의 소유자(계정), 그룹, 권한등의 정보까지 복사한다.
4) 재시작하기
sudo systemctl restart mariadb
위의 단계들 다 거치고, mariadb에서 이것들을 적용할 수 있도록 재시작해준다.