Meta-Data Schema


아래의 테이블은 Spring Batch에서 제공하는 Meta-Data 테이블입니다.
해당 테이블들은 Batch Job의 실행을 기록하기 위해 존재합니다.

JobInstance   : BATCH_JOB_INSTANCE
JobExecution  : BATCH_JOB_EXECUTION
JobParameters : BATCH_JOB_EXECUTION_PARAMS
StepExecution : BATCH_STEP_EXECUTION
ExecutionContext : BATCH_JOB_EXECUTION_CONTEXT, BATCH_STEP_EXECUTION_CONTEXT
  • Spring Batch 메타 데이터 테이블은 Java로 표현하는 Domain 객체와 거의 일치합니다.
  • Java 객체(왼쪽)는 테이블(오른쪽)과 매핑됩니다.

위에 언급한 Java 도메인들은 전 포스팅에 언급하였기 때문에 이번 포스팅에선 설명을 생략하도록 하겠습니다.
이번 포스팅에서는 h2, mysql 데이터베이스 사용시 spring batch 설정방법과 meta 테이블의 prefix 설정방법에 대하여 알아보도록 하겠습니다.


Batch Job 설정, H2 실행

build.gradle -> dependency 설정

dependencies {
    compile('org.springframework.boot:spring-boot-starter-batch')
    compile('org.springframework.boot:spring-boot-starter-jdbc')
    runtime('com.h2database:h2')
    runtime('mysql:mysql-connector-java')
    compileOnly('org.projectlombok:lombok')
    testCompile('org.springframework.boot:spring-boot-starter-test')
    testCompile('org.springframework.batch:spring-batch-test')
}

DemoApplication.java 설정

@EnableBatchProcessing
@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

}
  • @EnableBatchProcessing
    이 어노테이션을 선언하여 Spring Batch의 여러 기능들을 사용할 수 있게 합니다. 선언하지 않으면 Spring Batch 기능을 사용할 수 없기에 필수로 선언하여 줍니다.

SimpleJobConfiguration.java 설정

@Slf4j
@RequiredArgsConstructor
@Configuration
public class SimpleJobConfiguration {
    private final JobBuilderFactory jobBuilderFactory;
    private final StepBuilderFactory stepBuilderFactory;

    @Bean
    public Job simpleJob() {
        return jobBuilderFactory.get("simpleJob")
            .start(simpleStep())
            .build();
    }

    @Bean
    public Step simpleStep() {
        return stepBuilderFactory.get("simpleStep")
            .tasklet((contribution, chunkContext) -> {
                log.info(">>>>> job started >>>>>");
                return RepeatStatus.FINISHED;
            })
            .build();
    }
}
  • @Configuration안의 @Bean으로 Job과 Step을 등록하여 줍니다.
  • Step의 경우 tasklet과 ItemReader, ItemProcessor, ItemWriter로 나눌수 있는데 이번 포스팅에선 단순한 Step 실행을 위해 tasklet으로 실행하도록 하겠습니다.

application.yml 설정 (h2 기준)

spring:
  profiles:
    active: local

---
spring:
  datasource:
    hikari:
      jdbc-url: jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
      username: sa
      password:
      driver-class-name: org.h2.Driver
  config:
    activate:
      on-profile: local
---

profiles를 active로 설정하여 실행 해보도록 하겠습니다.

Job이 수행되는것을 확인하였습니다.


mysql 환경에서 실행하기

application.yml에 mysql 환경 추가해주기

---
spring:
  datasource:
    hikari:
      jdbc-url: jdbc:mysql://localhost:3308/spring_batch
      username: root
      password: root
      driver-class-name: com.mysql.jdbc.Driver
  config:
    activate:
      on-profile: mysql


Host, username, password를 각 db 환경에 맞추어 설정해주세요.
(저의 경우에는 docker를 이용하였습니다)

mysql에 batch ddl 생성하여 주기

IntelliJ 기준으로 ‘shift’ + ‘command’ + ‘o’를 이용하여 ‘schema-mysql.sql’의 내용들을 이용해 batch 테이블을 생성하여 줍니다.
h2와 mysql은 테이블 설정이 살짝 다르니, 꼭 mysql.sql 파일을 이용해 배치 테이블을 생성해주세요!!


profile을 설정한 후 실행하여 줍니다.


메타테이블에 방금 실행한 job의 정보가 기록 되었습니다. 이런식으로, spring batch는 트랜잭션을 프레임워크레벨에서 관리하여 주며 개발자가 비즈니스 로직 개발에 집중할 수 있게 도와줍니다.


메타 테이블 prefix 설정하기

일반적으로는 ‘batch_ ‘ 라는 prefix를 주어 메타테이블을 관리하지만, 여러가지 이유로 다른 prefixf를 주어 관리하기도 합니다. 예를 들면 많은 application이 하나의 batch 테이블을 사용하게 되면 메타 정보가 섞일 수 있기 때문에 다소 복잡도가 생길 수 있습니다.

BatchConfiguration.java

@Configuration
public class BatchConfiguration extends DefaultBatchConfigurer {

    private static final String TABLE_PREFIX = "CUSTOM_";

    private final DataSource dataSource;

    public BatchConfiguration(DataSource dataSource) {
        super(dataSource);
        this.dataSource = dataSource;
    }

    @Override
    protected JobRepository createJobRepository() throws Exception {
        JobRepositoryFactoryBean factory = new JobRepositoryFactoryBean();
        factory.setTransactionManager(super.getTransactionManager());
        factory.setDataSource(dataSource);
        factory.setTablePrefix(TABLE_PREFIX);
        factory.setIsolationLevelForCreate("ISOLATION_REPEATABLE_READ");
        return factory.getObject();
    }

    @Override
    protected JobExplorer createJobExplorer() throws Exception {
        JobExplorerFactoryBean factory = new JobExplorerFactoryBean();
        factory.setDataSource(dataSource);
        factory.setTablePrefix(TABLE_PREFIX);
        factory.afterPropertiesSet();
        return factory.getObject();
    }
}

DefaultBatchConfigurer 을 상속한 @Configuration을 하나 만들어 줍니다. 여기서 table prefix를 설정하여 줍니다. 저는 기존 ‘batch_’ prefix를 ‘custom_’ prefix로 설정하였습니다

다음으로 이전 mysql ddl script문을 이용하여 prefix 테이블을 새로 만들어 줍니다.

CREATE TABLE CUSTOM_JOB_INSTANCE  (
    JOB_INSTANCE_ID BIGINT  NOT NULL PRIMARY KEY ,
    VERSION BIGINT ,
    JOB_NAME VARCHAR(100) NOT NULL,
    JOB_KEY VARCHAR(32) NOT NULL,
    constraint JOB_INST_UN unique (JOB_NAME, JOB_KEY)
) ENGINE=InnoDB;

CREATE TABLE CUSTOM_JOB_EXECUTION  (
    JOB_EXECUTION_ID BIGINT  NOT NULL PRIMARY KEY ,
    VERSION BIGINT  ,
    JOB_INSTANCE_ID BIGINT NOT NULL,
    CREATE_TIME DATETIME(6) NOT NULL,
    START_TIME DATETIME(6) DEFAULT NULL ,
    END_TIME DATETIME(6) DEFAULT NULL ,
    STATUS VARCHAR(10) ,
    EXIT_CODE VARCHAR(2500) ,
    EXIT_MESSAGE VARCHAR(2500) ,
    LAST_UPDATED DATETIME(6),
    JOB_CONFIGURATION_LOCATION VARCHAR(2500) NULL,
    constraint JOB_INST_EXEC_FK foreign key (JOB_INSTANCE_ID)
    references CUSTOM_JOB_INSTANCE(JOB_INSTANCE_ID)
) ENGINE=InnoDB;
... 중략

prefix를 설정한 테이블에 batch job 실행이 기록되었습니다.

이번 포스팅에선 job 기록을 위한 meta 테이블 생성을 알아보았습니다. Spring batch는 여러 커스터마이징 기능을 제공하는데 메타 테이블도 간단한 설정을 위와 같이 할 수 있습니다!!

다음 포스팅에서는 Step에 대해 자세히 알아보도록 하겠습니다.


참조

spring.io
jojoldu님 블로그

블로그 이미지

사용자 yhmane

댓글을 달아 주세요

들어가며


 여러 이유가 있지만, RDBMS를 사용하며 DB 커넥션을 확인해줘야 할 때가 있습니다. 이번 포스팅에선 여러 RDBMS중에 mysql의 커넥션을 확인하는 방법과 프로세스를 죽이는 방법에 대하여 알아보도록 하겠습니다.


query로 확인하기

 

 서비스를 운영하다 보면 개발 뿐만 아니라 DB에서도 체크해야 할 많은 부분이 있습니다. 우선적으로, DB에서 커넥션을 확인하고 임시적으로 조치를 취하는 방법에 대하여 알아보도록 하겠습니다.


# db 커넥션 최대값

show variables where Variable_name = 'max_connections';

# 해당 DB의 맥시멈 커넥션 값을 알 수 있습니다. 이 이상으로 커넥션은 맺어지지 않습니다.



# 현재 맺어진 커넥션 풀 갯수

show status like 'Threads_connected';

# 현재 DB에 맺어진 커넥션 수 입니다. 최대값보단 적거나 같게 유지됩니다. 

# 만약 이 수가 같거나 비슷하다면 DB의 성능을 스케일링 할 필요가 있습니다.



# 커넥션이 맺어져 있는 프로세스 리스트 (필요 칼럼만)

show full processlist;

# 커넥션의 리스트를 볼 수 있습니다. 아래와 같이 나오며 'TIME'과 'COMMAND' 상태를 유심히 보아야 합니다.

+-------+------+-----------------+--------+---------+------+-----------+----------------------------------------------------------+
| ID    | USER | HOST            | DB     | COMMAND | TIME | STATE     | INFO                                                     |
+-------+------+-----------------+--------+---------+------+-----------+----------------------------------------------------------+
|     5 | ssss | localhost:41060 | somedb | Sleep   |    3 |           | NULL                                                     |
| 58169 | root | localhost       | somedb | Query   |    0 | executing | select * from sometable where tblColumnName = 'someName' |



# 문제가 있는 쿼리에 대해서는 조치를 취해야 합니다

select * from information_schema.processlist where command!='sleep' and time>10;

# 여기서 나오는 쿼리는 실질적으로 10초 이상 걸리는 쿼리입니다. 인덱싱을 확인해보고 튜닝을 하는게 좋습니다.

# 하지만 이러한 쿼리들이 동시다발적으로 프로세스를 선점하고 있어서 문제가 발생시키고 있다면 임시적으로 조치를 취해야 합니다.

kill 해당프로세스ID


우선적으로 서비스 되고 있다면 해당 쿼리가 수행되지 않게 막고 튜닝하는게 좋습니다.



# 커넥션이 맺어져 있는 프로세스 리스트 (자세히)

SELECT * FROM information_schema.processlist;



# ip 별 커넥션 수

SELECT tmp.ipAddress

     , COUNT(*) AS ipAddressCount

     , tmp.db

     , tmp.USER

  FROM (

        SELECT pl.id

             , pl.user

             , pl.host

, pl.db

, pl.command

, pl.time

, pl.state

, pl.info

, LEFT( pl.host, ( LOCATE( ':', pl.host ) - 1 )) AS ipAddress

  FROM INFORMATION_SCHEMA.PROCESSLIST pl ) AS tmp

GROUP BY tmp.ipAddress

ORDER BY ipAddressCount DESC;

# 여러 서버에서 DB에 접근할 경우 커넥션을 적절히 분배해야 합니다. 해당 서버의 커넥션을 확인하고 트래픽 대비 커넥션이 많거나 적게 잡혀 있다면 조절해야 합니다!!

 

임시 조치를 취한것은 다음에도 반드시 재현되는 문제이므로 DB를 향상시키거나 프로그램 로직상의 문제를 개선하는 것이 중요합니다!!


참조

https://mariadb.com/kb/en/show-processlist/

https://mariadb.com/kb/en/kill/

https://mariadb.com/kb/en/thread-command-values/

블로그 이미지

사용자 yhmane

댓글을 달아 주세요


들어가며


  이번 포스팅에선 AWS RDS를 이용하여 mysql 인스턴스를 생성하고, 타임존이나 한글 설정하는 방법을 알아보도록 하겠습니다.



RDS란?

 


  RDS는 Relational Database Service의 약자입니다. 관계형 데이터베이스 서비스라는 말인데, aws aurora, mysql, mariadb, oracle, posgresql, mysql-server 엔진을 제공합니다. [aurora/mysql/mariadb] / [oracle] / [postgresql] / [mysql-server] 이런식으로 그룹 제품군을 나누면 됩니다. 


 RDS를 이용하면 여러 이점들이 존재하는데 간편한 관리와 확장/백업의 용이성 등이 있습니다. 가격에 있어서는 비싸다고 생각하지만, aurora의 경우 성능대비 싸다고 생각합니다. 특히 클릭 몇번으로 DB를 간편히 생성할 수 있어서 관리가 용이하다는 장점이 있습니다.



mysql DB 인스턴스 생성


 

 먼저, mysql DB 인스턴스를 생성하는 방법은 두가지가 존재합니다.

  • 1) EC2 인스턴스에 직접 mysql 설치 & 운영

  • 2) RDS를 이용한 DB 인스턴스 생성

 첫번째 방법의 경우에는 직접 수동으로 설치하고 관리하여 백업을 해야하는데, 관리 포인트가 많아지고 성능이나 가격적인 부분에서 좋은 선택지는 아닙니다. 솔루션 패키지를 이용하여 db와 어플리케이션을 한 서버에 설치하는 것 이외에는 추천하지 않습니다.

 두번째 방법~!! 이번 포스팅에선 두번째 방법에 대하여 알아보도록 하겠습니다. RDS 설정 순서는 아래와 같습니다. 설정은 프리티어를 기준으로 하겠습니다.

  • Region 선택

  • DB 엔진 & 세부 버전 선택

  • DB 인스턴스 크기 선택

  • DB 식별자 설정 & 마스터 사용자 이름/암호 설정

  • 스토리지 선택

  • 다중 AZ 배포 선택

  • 연결설정 (VPC, 서브넷, 퍼블릭 엑세스, 포트)

  • 파라미터그룹 선택

  • 백업/모니터링/삭제방지 등 설정



1) Region 선택



Region은 아시아태평양-서울 ap-northeast-2로 이동해주시고, 데이터베이스 생성을 눌러줍니다.

(몇년 전까지만 해도 서울이 없어서 도쿄를 선택을 하였습니다. 그만큼 AWS에서 한국시장을 중요한 곳이라 생각하는 것이겠죠 ^^)



2) DB 엔진선택 & 세부버전 선택



AWS에서는 6개의 DB 엔진을 제공합니다. 위에서도 언급했듯이 Aurora, Mysql, MariaDB를 같은 제품군이라 생각하시면 됩니다. 

여기서는 프리티어를 위해 Mysql 엔진을 선택하여 줍니다.

(Aurora의 경우에는 성능이 매우 뛰어납니다!! 다만 상대적으로 가격이 비싸다는 점이 있습니다.)


버전의 경우 최신껄로 깔아주도록 합니다. 버전마다 조금씩의 차이는 있지만, 지금은 RDS 설정을 위한 시간이므로 default 버전을 선택하겠습니다.



3) DB 인스턴스 크기 선택



DB 인스턴스 크기는네트워크 트래픽과 접속자수를 고려하여 선택하여 줍니다. 클래스별로 시간당 측정 요금이 상이하고 상용으로 갈 수록 cpu-core와 memory가 증가하는 것으로 보시면 됩니다. 여기서는 프리티어를 이용할 것이기 때문에 t2.micro를 선택하여 줍니다. 



4) DB 식별자 설정 & 마스터 사용자 이름/암호 설정



DB 인스턴스 이름을 설정하고, 마스터 계정의 이름과 암호를 설정해줍니다.



5) 스토리지 선택



기본적으로 SSD/20 으로 설정되어 있습니다. 프리티어의 해당하는 설정이니 기본선택값으로 유지하여 줍니다.




6) 다중 AZ 배포 선택 (선택 X)



Region내에는 최소 2개 이상의 가용영역AZ(Availability Zone)이 분포하고 있습니다. 프리티어의 경우 다중 AZ를 지원하지 않지만, 장애 복구를 위해 Region내 AZ에 분포시켜 놓는다고 생각하시면 됩니다.




7) 연결설정 (VPC, 서브넷, 퍼블릭 엑세스, 포트)




VPC, 서브넷, 가용용역은 기본 설정으로 두시면 됩니다. 나중에 보안을 위해 설정이 필요하겠지만, 이번 포스팅에선 생략하도록 하겠습니다. 포트의 경우 mysql 그룹의 경우 3306을 기본으로 사용합니다. 다른 포트를 원하실 경우에만 수정하시면 됩니다.

퍼블릭 엑세스의 경우 '예'를 선택해야 tool을 이용해 접속할 수 있습니다.


권한, 계정 설정의 경우 예시

grant all privileges on 스키마.테이블 to '계정'@'localhost' identified by '비밀번호';

grant all privileges on 스키마.테이블 to '계정'@'%' identified by '비밀번호';


[참고] https://yhmane.tistory.com/73?category=783933




8) 파라미터 설정



스키마를 설정하고 파라미터그룹을 설정하여 줍니다. 일단 default 값으로 설정하겠습니다. aws RDS에서 mysql을 설정하게 되면 timezone과 character-set을 다시 설정해줘야 합니다. 이 부분은 DB를 생성후 다시 설정하도록 하겠습니다. 백업이나 로그 부분은 상용단계가 아닌이상 필요 없으니 모두 꺼주셔도 됩니다. 


이제 DB 생성을 누르면 10분 정도 소요후 인스턴스가 생성됩니다.



파라미터 설정


왼쪽 좌측의 파라미터 그룹이 있습니다. 선택하여 각 요소를 설정해주시면 됩니다.


log_output= TABLE 

log_slave_updates = 1 

relay_log_info_repository = TABLE 

relay_log_recovery = 1

slow_query_log  = 1

character_set_server    utf8mb4

character_set_database    utf8

init_connect    SET SESSION time_zone = 'Asia/Seoul';

innodb_lock_wait_timeout    60

interactive_timeout    1800

lock_wait_timeout    60

long_query_time    780

time_zone    Asia/Seoul

explicit_defaults_for_timestamp    1

group_concat_max_len    10240

max_allowed_packet    10247680

max_binlog_size    134217728    

max_connections    {DBInstanceClassMemory/12582880}    

collation_server utf8mb4_general_ci


확인 방법은 아래와 같습니다. 

다만, 확인하기 전에 DB에 적용을 해야 하기 때문에 생성된 DB 인스턴스를 재실행 해주시기 바랍니다!!


use 스키마;


show variables like 'c%'; # 캐릭터셋 확인


select now() # 시간 확인



출처


[aws] https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/CHAP_Tutorials.WebServerDB.CreateDBInstance.html


aws 문서는 깔끔하게 잘 정리 되어 있어서, 보고 쉽게 따라할 수 있는거 같습니다

블로그 이미지

사용자 yhmane

댓글을 달아 주세요

db 조회용 계정을 추가 하였고, 비밀번호를 바꾸기 위해 접속하였는데..

비밀번호가 생각이 나지 않았습니다.


따라서 비밀번호를 수정하려던 중 


update user set password=password('비밀번호') where user='root';


db 조회용 계정의 비밀번호를 바꾸려고 하였지만, password가 없는 column이라고 실패 하였습니다.



update mysql.user SET authentication_string=PASSWORD('비밀번호') WHERE user='root'; 


flush privileges;


적용을 위해 flush privileges; 입력


mysql 5.7 이상 버전부터는 password 칼럼이 아닌 authentication_string로 대체 되었다고 합니다.




[참조]


https://stackoverflow.com/questions/30692812/mysql-user-db-does-not-have-password-columns-installing-mysql-on-osx

블로그 이미지

사용자 yhmane

댓글을 달아 주세요


개요



일반적으로 root 권한의 계정과 비밀번호를 알려주는 것은 매우 위험한 행위 입니다.

데이터베이스는 아주 중요한 정보이기에, select 권한만 주는 것을 권장하고 있습니다.



따라서, 다른 업체에서 DB 참고를 원할 때에는 

select 권한만 부여한 계정을 생성하고 알려주는 것이 좋습니다.




DB 접속


mysql -u root -p  

 

사용중인 계정 조회


 use mysql;     // mysql db 사용

 select host, user, password from user;     // 사용중인 계정 조회



계정 생성


create user 계정이름@localhost identified by '비밀번호';                  

create user 계정이름@'%' identified by '비밀번호';                           



권한 생성


grant select on db스키마.* to `계정이름`@`localhost` identified by '비밀번호';        

grant select on db스키마.* to `계정이름`@`%` identified by '비밀번호';         


모든 권한 부여

grant all privileges on 스키마.테이블 to '계정'@'localhost' identified by '비밀번호';

grant all privileges on 스키마.테이블 to '계정'@'%' identified by '비밀번호';



여기서 추가적으로 설명을 덧 붙이면

스키마.테이블의 경우 특정 테이블에 대한 권한만 부여 한다.

만약, 스키마.* 를 줄 경우 해당 스키마의 모든 테이블에 대한 권한을 부여 한다



@'host 주소'가 오게 된다.

@'localhost'의 경우 로컬 사용자 이고

@'%' 외부 접근을 모두 허용하는 것이다 ... 

따라서, 특정 대역만 열어 주려면 @'222.10. ......' 뭐 이런식으로 권한을 부여 하면 된다.

ex) @'200.100.%'   @'200.100.50.1'



수정사항 반영

mysql > flush privileges;


위 명령어를 입력하여 메모리에 반영하던가,

db를 내렸다가 올리면 변경된 사항이 반영된다.



db스키마.* 로 select 권한을 주게 되면 모든 테이블에 대한 select 권한을 주게 됩니다.

따라서, db스키마.해당 테이블로 주는 것을 권장 합니다.



블로그 이미지

사용자 yhmane

댓글을 달아 주세요

저번 포스팅에선 아마존 리눅스에 mysql을 설치하였는데요.

DB를 더 편안히 이용하기 위해 local에 있는 mysql workbench로 연동해보겠습니다.


먼저 aws에서 mysql에 접속합니다.

다음으로 sample 테이블을 생성하고, 데이터를 3개 집어 넣었습니다.

이 부분은 알아서 하실 수 있을 거라 생각합니다.




다음으로, local에 설치 되어 있는 mysql workbench를 실행합니다.

'+' 버튼을 눌러 서버 연결을 하여 줍니다.

여기서 Standard TCP/IP over SSH 항목으로 넘어가야 ssh key file을 등록할 수 있습니다.

- 유동ip . port 번호

- 계정 이름

- aws 키

- 로컬 ip

- port

- 계정 순으로 적어줍니다.


mysql의 admin 비밀번호를 입력한 후 커넥션을 연결하여 줍니다.위 단계가 완료 되면, 커넥션이 생성된 것을 할 수 있습니다.

다음으로, aws 디비서버에서 생성한 테이블을 조회해보겠습니다.

앞에 입력하였던 데이터들이 출력 됩니다.

이번에는 workbench에서 데이터를 삽입하고 commit을 진행하였습니다.

마찬가지로, aws db 서버에서 데이터가 잘 조회 되는 것을 확인할 수 있습니다.

블로그 이미지

사용자 yhmane

댓글을 달아 주세요

들어가며

이전 포스팅에선 아마존 리눅스에 자바와 톰캣을 설치하여 구동까지 해보았습니다.

이번 포스팅에선, DB 연결을 하기 위해 mysql을 설치 해보도록 하겠습니다. 

DB의 경우 ami에 설치하여도 되고, aws rds를 이용해도 좋습니다. aws rds는 매우 우수하기 때문에 실제 운영환경에서 많이 사용합니다.

여기서는 간단한 프로그램을 사용하기 때문에 EC2 내부에 설치하도록 하겠습니다.

설치하기

먼저 설치 가능한 mysql 목록을 확인해보겠습니다.

1
sudo yum list mysql*
cs


설치 가능한 목록을 확인 하고 db를 설치합니다.

1
2
3
4
sudo yum install mysql
sudo yum install mysql-server
sudo yum install mysql-devel
yum info mysql mysql-server mysql-devel
cs
설치를 끝내고 mysql, mysql-server, mysql-devel의 차이를 확인해봅니다.


description의 내용을 간략히 보면

mysql은 client program을 contains하는 패키지,
mysql-devel은 lib 또는 header파일을 contains하는 패키지
mysql-server가 actual server라고 합니다.

1
2
mysql -
mysql --version
cs

설치가 완료 되었다면 위의 명령어로 mysql이 정상적으로 설치 되었는지 확인 합니다.


1
2
## /usr/bin/mysql
## /usr/sbin/mysqld
cs
해당 경로에서 mysql이 설치 된것을 확인 할 수 있습니다.
1
2
sudo chgrp -R mysql /var/lib/mysql
sudo chmod -770 /var/lib/mysql
cs

설치가 끝났다면 권한을 부여하여 줍니다.

1
2
service mysqld start
ps aux | grep mysql
cs

다음으로
위의 명령어를 이용하여 mysql을 실행합니다. 
mysql이 실행되면서 db가 생성됩니다.


1
mysqladmin -u root password 
cs

비밀번호를 2번 입력 하여 root 계정의 비밀번호를 설정하여 줍니다.

1
mysql -u root -p
cs



위에서 등록한 비밀번호를 이용하면 mysql db를 이용할 수 있습니다!!

다음 포스팅에선 git 설치 후에, clone하여 sample_springPJ를 서버에 올려 돌려보도록 하겠습니다.


[출처] 

https://jongkwang.com/?p=941

http://love0and0hate.blogspot.com/2017/02/mysql-yum.html

https://serverfault.com/questions/416614/yum-difference-between-mysql-mysql-server-and-mysql-devel

https://thereclub.tistory.com/32 

블로그 이미지

사용자 yhmane

댓글을 달아 주세요