이미 실행 중인 컨테이너에 mariadb를 설치하는 방법
※지침※
- 외부 포트 : 외부에서 연결해야 하고 내부적으로 사용하지 않는 경우 런타임에 포트를 열지 않으면 액세스할 수 없을 것입니다.
- 중복 포트 : 예를 들어 네트워크가 –net=host로 설정되어 있는 경우 외부에서 실행 중인 포트와 충돌하거나 해당 포트에 연결할 수 없는 경우 시작에 실패할 수 있습니다.
설치하다
# 도커 접속
docker exec -it (컨테이너 이름) bash
# install
apt-get update
apt-get install mariadb-server
시작 및 상태 확인
# start
service mysql start
# 실행됬는지 확인
service mysql status
# 실행 안됨 # 포트 등 확인 필요
root@test:/# service mysql status
* MariaDB is stopped.
# 실행 됨
root@T4_BLADE:/# service mysql status
* /usr/bin/mysqladmin Ver 9.1 Distrib 10.3.38-MariaDB, for debian-linux-gnu on x86_64
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Server version 10.3.38-MariaDB-0ubuntu0.20.04.1
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /var/run/mysqld/mysqld.sock
Uptime: 36 min 3 sec
Threads: 6 Questions: 70 Slow queries: 0 Opens: 33 Flush tables: 1 Open tables: 26 Queries per second avg: 0.032
실행되면 루트 설정
실행되지 않으면 오류를 확인하고 포트를 설정하십시오.
루트 구성
mysqladmin -u root password (비밀번호)
루트를 구성한 후 mysql을 사용하여 연결할 수 있는지 확인하십시오.
오류 확인 및 포트 설정
오류 검사
tail -f /var/log/mysql/error.log
포트 문제로 로그가 남지 않는 것 같습니다.
포트 변경
제 경우에는 포트가 중복되어 실행할 수 없었습니다.
포트가 컨테이너의 포트 옵션(-p)으로 할당된 경우 거의 발생하지 않으며,
네트워크를 –net=host로 지정하면 내부적으로는 사용하지 않지만 외부와의 포트 중복으로 인해 실행에 실패할 수 있습니다.
이 경우 외부 포트를 사용 중인 프로세스를 종료하거나 mariadb의 포트를 변경해야 합니다.
기본적으로 주석 처리됨
주석을 해제하고 기본 포트 3306이 아닌 다른 포트로 변경합니다.
다시 시작
# vim /etc/mysql/mariadb.conf.d/50-server.cnf
(mysqld)
#
# * Basic Settings
#
user = mysql
pid-file = /run/mysqld/mysqld.pid
socket = /run/mysqld/mysqld.sock
port = 3306 # 이부분 변경
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
lc-messages-dir = /usr/share/mysql
#skip-external-locking
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 127.0.0.1
#
# * Fine Tuning
재시작
service mariadb restart