오늘은 Linux 환경에 MySQL을 설치하고 외부에서 port를 사용하여 접근할 수 있도록 환경세팅을 진행해보도록 하겠습니다.
1. MySQL 설치 (설치여부 확인)
mysql 서버와 클라이언트 설치
sudo apt-get install mysql-server mysql-client # mysqladmin 명령어 입력하여 설치여부 확인.- 설치 중, MySQL의 root 계정 패스워드를 입력하는 절차가 나타나는데, 사용할 root 계정 패스워드를 입력합니다.
- 설치 후, MySQL 설정파일 (/etc/mysql/my.cnf)에서 bind-address 부분을 주석처리합니다.
2. 데이터 베이스 생성 및 접속하기
데이터 베이스 생성 및 접속 (root 계정 활용)
# 데이터 베이스 생성 # ( 데이터베이스명: test1, 계정 : root ) mysqladmin -u root create test1 -p # 데이터 베이스 접속 mysql -u root -p test1 # 데이터 베이스 접속 후 테이블 확인. (; 사용 필수) show tables ;3. 지원되는 Character_set 확인 및 설정
현재 mysql에서 사용가능한 Character set을 확인한 후, 기설정되어 있는 세팅을 확인합니다.
# 지원되는 캐릭터 셋 확인. mysql> show character set; # 현재 설정된 세팅 확인. mysql> show variables like 'char%'; # 현재 상태 및 세팅 확인 mysql> status결과 예시.
UTF-8 으로 캐릭터 셋 변경하기
- 정신건강을 위해서는 UTF-8로 기본세팅을 진행하는 것이 좋습니다.(Mysql version 에 따라 default 설정)
- 만약 아래의 방법대로 기본 환경설정이 안된다면 참고 - [자세히]
ex) vi /etc/mysql/my.cnf
... [client] default-character-set = utf8mb4 [mysql] default-character-set = utf8mb4 [mysqld] character-set-client-handshake = FALSE character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci설정 이후, MySQL을 재시작합니다. 이후 status 명령어로 바뀐내용을 확인합니다.
# 재시작 $ /etc/init.d/mysql restart mysql> status Connection id: 2 Current database: Current user: root@localhost SSL: Not in use Current pager: stdout Using outfile: '' Using delimiter: ; Server version: 5.7.35-0ubuntu0.18.04.2 (Ubuntu) Protocol version: 10 Connection: Localhost via UNIX socket Server characterset: utf8mb4 Db characterset: utf8mb4 Client characterset: utf8mb4 Conn. characterset: utf8mb4 UNIX socket: /var/run/mysqld/mysqld.sock Uptime: 6 sec4. 테이블 생성하기 , 사용자 추가하기
Create Table 문을 사용해서 새로운 테이블을 생성해봅니다.
mysql> create table users ( id varchar(10) primary key, name varchar(20) not null, password varchar(10) not null ); # table 생성 결과 확인. mysql> show tables; # select 문 mysql> select * from user;사용자 추가하기 ( 아이디: alex / 패스워드 : tt1tt ) > test1 데이터베이스에 대한 권한 '모두'를 준다.
mysql> GRANT ALL PRIVILEGES ON test1.* TO alex@localhost IDENTIFIED BY 'tt1tt' WITH GRANT OPTION;5. 테이블 정보 확인
mysql> desc users; +----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+-------+ | id | varchar(10) | NO | PRI | NULL | | | name | varchar(20) | NO | | NULL | | | password | varchar(10) | NO | | NULL | | +----------+-------------+------+-----+---------+-------+ 3 rows in set (0.00 sec)6. root 계정 초기 비밀번호 설정
('1234' 부분을 사용할 패스워드로 변경)
# DB 변경 mysql> use mysql # root 계정 패스워드 변경 mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '1234'7. MySQL port 설정
MySQL는 3306으로 기본 포트가 설정되어있습니다. 포트 변경을 하려면 mysqld.cnf 파일에서 port 부분을 수정하면 됩니다.
ex) vi /etc/mysql/mysql.conf.d/mysqld.cnf
하지만 MySQL 5.6 이상을 지원하는 app 의 경우 MariaDB 5.5 또는 MariaDB 10 이 제대로 도는지 확인하기가 힘드므로 마음고생하지 말고 그냥 권장하는 MySQL 버전을 설치하도록 하자.
RHEL/CentOS 에 수동 설치
MySQL 5.6 부터 yum 을 통한 설치를 지원하고 있다.
먼저 //dev.mysql.com/downloads/repo/yum/ 에 연결하여 사용하는 리눅스 배포판과 버전에 맞는 저장소 설정 rpm 파일을 다운로드 받는다.
모든 패키지가 포함된 bundle 을 다운받는다.
MySQL 5.7
wget --no-check-certificate //dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.22-1.el7.x86_64.rpm-bundle.tarCODE
wget --no-check-certificate //dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-5.6.40-1.el7.x86_64.rpm-bundle.tar
CODE
번들 압축 해제
tar xvf *bundle.tar
CODE
yum 으로 설치
sudo yum localinstall MySQL-server* MySQL-client*
CODE
Yum 을 통한 설치
MySQL 5.6 부터 yum 을 통한 설치를 지원하고 있다.
먼저 //dev.mysql.com/downloads/repo/yum/ 에 연결하여 사용하는 리눅스 배포판과 버전에 맞는 저장소 설정 rpm 파일을 다운로드 받는다.
RHEL / CentOS 7
MySQL 5.7
MySQL 5.7
rpm -ivh //dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpmBASH
MySQL 5.6
MySQL 5.6
rpm -ivh //dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpmBASH
RHEL 6 / CentOS 6 / Amazon Linux
MySQL 5.7
rpm -ivh //dev.mysql.com/get/mysql57-community-release-el6-11.noarch.rpm
CODE
MySQL 5.6
rpm -ivh //dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
CODE
이제 yum 명령어로 mysql 을 설치할 수 있다. yum 을 통해 제공되는 패키지명은 mysql-community 로 시작하므로 yum search mysql-community 명령어로 전체 패키지 목록을 확인해 보자.