Base/Database

리눅스 mysql 설치 및 권한 설정

반응형

1.mysql 설치

 

1)MySQL 버전을 확인

   sudo apt-cache search mysql-server

 

2)MySQL 설치 명령어

   sudo apt-get install mysql-server-5.7

 

3)MySQL 5.7 설치 확인

 

 

 

4)root 계정으로 로그인

    su

(su는 root 권한으로 리눅스를 사용한다.)

 

su계정 비밀번호 설정

 

sudo passwd root

 

5)mysql 5.7 IP주소와 MySQL 포트 확인

   netstat -ntlp | grep mysql

 

6)My SQL Database 조회

   mysql -uroot -p -e 'show databases'

 

 

2.MySQL 한글 설정

 

  1)경로 이동

    cd /etc/mysql/conf.d

  

  2)mysql.cnf(한글 설정에 사용할 파일)

    sudo nano mysql.cnf

 

  3)위 2번으로 접속하면 [mysql]을 지운다.

 

  4) 내용 입력 후 Ctrl+X -> Y 입력 -> 엔터

 

[mysqld]

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

user=mysql

character-set-server=utf8

collation-server=utf8_general_ci

init_connect = set collation_connection = utf8_general_ci

init_connect = set names utf8

[mysql]

default-character-set=utf8

[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

default-character-set=utf8

[client]

default-character-set=utf8

[mysqldump]

default-character-set=utf8

 

 

  5)MySQL 재시작

     sudo /etc/init.d/mysql restart

 

 

  6)mysql root 계정 로그인

    mysql -uroot -p

 

  7)status 입력 하여 아래 부분이 utf8로 바뀌었는지 확인

 

    Server charcterset: utf8

    Db characterset :   utf8

    Client characterset:utf8

    Conn. characterset :utf8

 

3.MySQL사용자 계정 생성 및 외부접속 설정

 

  1)mysql root 계정으로 접속

     mysql -uroot -p

 

  2)DB 생성 및 조회

 

-- 데이터베이스 생성

create database 데이터베이스 이름;

-- 데이터베이스 조회

show databases;

 

  3)계정 생성

  -- 사용자 계정 생성

create user '아이디'@호스트 identified by '비밀번호';

-- 로컬 접속계정 생성

create user '아이디'@localhost identified by '비밀번호';

-- 모든 IP로 접속가능한 계정 생성

create user '아이디'@'%' identified by '비밀번호';

 

 

  2)새로 생성한 계정에 권한 부여

 

-- 사용자 권한 설정

GRANT ALL PRIVILEGES ON 데이터베이스명.테이블명 TO '아이디'@'호스트' IDENTIFIED BY '비밀번호';

 

-- 모든 데이터베이스, 모든 테이블, 모든 IP 접속 허용

GRANT ALL PRIVILEGES ON *.* TO '아이디'@'%' IDENTIFIED BY '비밀번호';

 

-- 특정 데이터베이스, 모든 테이블  모든 IP 접속 허용

-- ex) test 라는 데이터베에스의 모든 테이블, 모든 IP 접속하도록 권한부여

GRANT ALL PRIVILEGES ON test.* TO '아이디'@'%' IDENTIFIED BY '비밀번호';

 

-- 모든 데이터베이스, 모든 테이블, 특정 대역 IP 접속 허용

-- ex) 192.168 로 시작하는 IP에 대해 접속하도록 권한 부여

GRANT ALL PRIVILEGES ON *.* TO '아이디'@'192.168.%' IDENTIFIED BY '비밀번호';

 

-- 모든 데이터베이스, 모든 테이블, 특정 IP만 접속 허용

-- ex) 192.168.22.33 IP에 대해 접속하도록 권한 부여

GRANT ALL PRIVILEGES ON *.* TO '아이디'@'192.168.22.33' IDENTIFIED BY '비밀번호';

 

-- 모든 데이터베이스, 모든 테이블, 로컬에서만

GRANT ALL PRIVILEGES ON *.* TO '아이디'@localhost IDENTIFIED BY '비밀번호';

 

ex)

 

 

 

 3)권한 적용

    flush privileges;

 

 4) 생성한 사용자 계정을 조회해 보자 먼저 mysql 데이터베이스를 선택하여 user 테이블을 조회한다. 조회 결과를 보면 방금 생성한 계정과 접속 가능한 host가 나온다.

-- mysql 데이터베이스 선택

use mysql;

--  user 테이블

select host, user from user;

 

 

4.Mysql 포트 외부접속 허용하도록 방화벽 설정 변경

아래는 그냥 기본 루트해서 해주면 된다. 컨트롤+z로 기본에서 실행하면 됨.

1) MySQL 포트 외부접속 허용

sudo ufw allow (MySQL 포트번호)/tcp

 

ex)

2)마지막으로 LISTEN IP 대역을 변경한다. 명령어를 입력하여 해당 경로로 이동한다.

cd /etc/mysql/mysql.conf.d

 

3)mysqld.cnf 파일편집

     sudo nano mysqld.cnf

    bind-address 앞에 # 을 추가한다. 그리고 Ctrl+X → Y 입력 → 엔터 키를 눌러 저장한다.

 

4)  mysqld 재시작

sudo /etc/init.d/mysql restart

 

반응형