SQL 쉘, sql문을 실행시켜주는 커맨드 라인 클라이언트.
mysql을 사용하려면 터미널에 mysql database_name
명령어를 이용해
mysql에 접속하면 된다.
데이터베이스에 설정된 user name과 password가 있는 경우
mysql --user=user_name --password database_name
Enter password: password
다음과 같이 username과 password를 입력해 접속할 수도 있다.
쉘에 접속한 후에 SQL 쿼리문을 입력해 필요한 작업을 하면 된다.
쉘에 직접 접속해 쿼리를 입력하는 대신 mysql database_name < script.sql
와 같이 sql 스크립트 파일을 실행할 수도 있다.
mysqld : MYSQL 서버, 백그라운드에서 돌아가고 있는 프로세스. MySQL + D (Daemon).
MySQL 서버는 MySQL의 데이터베이스와 테이블을 포함하는 데이터 디렉토리에 대한 액세스를 관리한다. (데이터 디렉토리에는 로그 파일이나 상태 파일과 같은 다른 정보들도 저장된다. )
데이터베이스 서버에 쿼리를 갱신하고 싶다면, 클라이언트(mysql)를 사용해 서버(mysqld)에 연결해야한다.
MySQL 서버는 시스템 변수를 가지고 있다. 시스템 변수는 서버가 시작할 때 셋팅되며, 런타임에 값이 변경될 수 있다. MySQL 서버는 상태 변수(status variables)도 제공한다.
설치 : apk add mysql mysql-client
초기화 :
mysql_install_db라는 프로그램으로 초기화한다.
mysql_install_db --user=root (--datadir=/var/lib/mysql)
--datadir
옵션으로 데이터 디렉토리를 지정해도 되고
configuration file(my.conf)에서 데이터 디렉토리를 지정해도 됨.
MySQL 데이터 디렉토리인 /var/lib/mysql
는 mysql 유저 및 그룹 소유여야 함.
configuration 파일 : Alpine 버전에 따라 다름. 내가 사용하는 버전(3.12.0)에서는 /etc/mysql/my.cnf
mysqld -u root --bootstrap
: bootstrap 모드는 주로 mysql_install_db에서 SQL 스크립트를 실행하기 위해 사용됨.
mysqld -u root --bootstrap < scripts.sql
로 sql 스크립트 파일을 전달해 실행시킬 수 있다.
mysqld 활성화 : mysqld --user=root
로 mysqld를 활성화
+) my.conf
[mysqld]
user = root
datadir = /var/lib/mysql
port = 3306
log-bin = /var/lib/mysql/mysql-bin
bind-address = 0.0.0.0
skip-networking = 0
user는 root로 설정 (비밀번호 입력 필요 x)
datadir : 데이터 디렉토리 위치 지정. PV 위치.
log-bin : log 파일이 저장될 위치 지정. 설정 안하면 datadir에 저장됨.
bind-address : 외부와 연결하기 위한 통로. 0.0.0.0의 의미는 모든 ip를 허용하겠다는 것.
skip-networking : 1(true)이면 로컬에서만 수신하므로 0(false)로 바꿔준다. (다른 컨테이너에서 접근해야하므로)
Reference :
mysql 서버 부트스트래핑과 딕셔너리 초기화
alpine wiki - MySQL
simian114님 github ft_services - my.cnf