본문 바로가기

프로그램 개발/MYSQL7

[Mysql] 비밀번호를 암호화 하고싶다면?! password Database 상에 비밀번호를 저장할 때 이것을 암호화해서 표시화 하고자 한다면 어떻게 해야 할까 예를들어 12345을 저장하는데 이것을 관리가자 아닌 다른사람이 Database에 접근했다고 가정하면 있는 그대로 12345라는 번호가 유출될것이다 이러한 문제를 막기 위해서 Mysql 상에서는 암호화를 제공하는데 방법은 간단하다 password() 함수를 이용하는 것!! 예를들어 처음에 암호화 없이 Database에 저장을 한다하면 아래와 같이 하면 된다 테이블을 확인해보면 value값이 12345 그대로 입력이 된걸 볼수있다 그렇다면 이 부분을 password 함수를 통해 넣어보자 위와같이 같은 12345 value값이지만 암호화 된 상태로 저장되고 이부분을 Select 해서 출력해보면 12345 가 .. 2020. 6. 24.
[mysql] database backup / DB 백업 mysql을 운영하다 보면 데이터를 주기적으로 백업해 놓는게 좋다 예를들면 일주일 한달 아니면 분기별로 관리하면 나중에 데이터상 문제가 생길때 대응이 가능하기 때문 그럼 데이터베이스를 어떻게 백업해 놓아야 할까? 일단 vim 을 통해서 백업을 실행할 파일을 하나 만들자 vim mysql_back.sh 그러면 파일이 생성되고 빈화면이 나오는데 아래와같이 입력하자 now=$(date+"%Y%m%d") /usr/bin/mysqldump -u root --all-databases > 저장디렉토리위치/mysql_backup_$now.sql 이렇게 만든이후 해당 파일을 주기적으로 실행만 해주면 내가 설정한 저장디렉토리 위치에 백업파일이 만들어진다 2020. 6. 9.
[리눅스/linux] 소켓접속 알고리즘 / Socket Connection algorithm 소켓통신 프로그램을 만들다 보면 이러한 고민들을 한번쯤 해보게 된다. 바로 통신시에 필요한 fd를 어떻게 할 것인가? fd를 다루기에 앞서서 소켓이 바뀌어 들어오거나 하는 경우등을 생각해야 한다 말로는 설명이 애매하니 아래 그림을 보면서 설명하겠다 예를들어 서버에 접속하는 3개의 소켓이 있다고 가정하자 DB에 저장하기 앞서 구분하기 쉽게 고유코드의 ID값을 지정해준다 그리고 이것을 DB상에 저장을 하면 아래와 같이 저장한다 이렇게 저장해서 서버에서 해당 Client로 데이터를 보내고자 할 때 Select socket_num from table where 0001 이렇게 fd값을 가져와서 write 해주면 전송이 잘 되는것을 확인 할 수 있다 그런데 문제는 이런 보통적인 상황이 아니라 여러가지 변수에 의해.. 2020. 4. 9.
[MYSQL] SELECT 문 / select query 데이터베이스를 이용하는 때 가장 기본이자 핵심이 되는 처리가 바로 검색이다. 검색은 내가 원하는 데이터를 테이블에서 조회해서 가져오는 것으로 다른 말로는 질의(Query)라던지 추출(Retrieve) 라고 한다 검색을 위해 사용하는 SQL구문을 SELECT 구문이라고 부른다 검색 원하는 데이터 = SELECT 일단 기본적인 테이블 구조가 아래와 같이 되어 있다고 가정해보자 위와 같이 테이블에서 내가 원하는 데이터를 조회하기 위해서는 SELECT문을 사용하는대 이 구문에는 조건이 필요하다 SELECT 문의 둘도없는 친구 FROM FROM은 만약 여러개의 테이블이 존재한다면 그 중에서 테이블을 선택하는 일을 담당합니다 FROM = 테이블 지정 만약에 FROM을 입력하지 않아도 되는 경우는 예를들어서 SELE.. 2020. 4. 8.
[MYSQL] 두개테이블 조회 / table double select MySql에서 테이블 두개를 사용하는 경우에 하나의 기준 값으로 테이블을 조회하고자 할 때가 생긴다. 그럴때는 Mysql 에서 제공하는 join 함수를 사용하면 쉽게 조회할 수 있다 아래 예를 들어 설명하겠다. 위와같이 A,B 두개의 테이블이 존재하고 땡칠이의 사번과 직급이 필요하다. 그러나 사번과 직급은 각각 다른 테이블에 존재하는대 어떻게 조회를 해서 한번에 가져올 수 있을까? 여기서 기본적으로 테이블 두개를 묶어서 조회하는 방법에 대해 알아보고자 한다. 테이블 두개를 조회하는 방법은 아래와 같이 가능하다. select A테이블.사번, B테이블.직급 from A테이블 join B테이블 using(땡칠이); A테이블과 B테이블을 서로 join 시켜놓은 상태에서 using으로 땡칠이로 된 데이터를 묶는다.. 2020. 4. 3.
[MYSQL] 연결이 해제되는 이유 / Connection retry 리눅스에서 프로그램 개발을 하다보면 Mysql 을 연동한 DB를 사용하게 된다. 그런데 무슨 이유에서인지 동작이 잘 되던 프로그램이 소켓을 연결하여 데이터를 전송하여도 DB에 입력이 되지 않는 증상이 발견 되곤 한다. 이것은 프로그램 구조마다 다를수 있겠지만 근본적인 원인은 Mysql 사용하지 않는 대기시간에 의한 끊김이라고 보는것이 맞겠다. Mysql은 기본적으로 대기시간이 설정에 따라 다르겠지만 6시간동안 사용하지 않으면 해당 Connection을 해제하는 옵션이 설정되어 있다. 그래서 DB에 오랫동안 접근하지 않으면 연결이 끊겨 DB에 데이터가 입력되지 않는 증상이 발견되는 것이다. 자 그럼 근본적으로 간단하게 해결하는 방법이 무엇이 있을까.? 구조적으로 정말 간단하지만 일정 시간단위로 Mysql에.. 2020. 3. 31.