mysql에서 information_schema는 메타 데이터에 접근하기 위해서 씁니다. 예를 들자면, 어떤 테이블이 있는지. 어떤 collaction을 쓰는지, 컬럼이 뭐가 있는지 등이 속합니다. 이 중에, 오늘은 3번째 것을 잠깐 다뤄보도록 하겠습니다. 이것과 같이 공식 문서를 보시면 좋습니다. 문제는 다음과 같습니다. mydb에 있는 모든 테이블들에 대해서, 그것과 대응되는 Model 클래스들을 생성해 주세요. 물론, jdbc 프로그래밍에 익숙하시다면야. 조금만 고생하시면 되지만, 익숙치 않다고 하더라도, 할 수 있는 방법이 있습니다. 전 급할 때는 그냥 쿼리문만 날려서 파일로 저장한 뒤에 간단하게 파일 입출력을 하는 식으로 구현하기도 합니다. mydbinformation_schema 안에 있는 v..
mysql 검색 결과
오늘은, 아래와 같은 상황에서, 키가 중복해서 들어가 있다면, update를, 그렇지 않으면 insert를 하는 예제를 보도록 하겠습니다. 당연하게도, 이 문서를 같이 읽어보시는 것을 권해드립니다. 기존 테이블은 오래된 데이터입니다. 몇 데이터가 들어오는데, 이 중에는 '업데이트'가 된 데이터도 있습니다. 예를 들자면, id에 대해서. 그러한 경우에 어떻게 해야 할까요? postgresql에는 upsert가 있다고 하는데.. 문제부터 보겠습니다. sampleT는 아래와 같습니다. id와 name으로 정의가 되어 있고, id는 primary key입니다. sampleT에 추가되어 있는 데이터를 보도록 하겠습니다. select from을 이용하면 매우 간단하게 조회할 수 있습니다. 1, 'cho'하고, 2,..
루트 비밀번호를 잊어버렸습니다. 어떻게 해야 할까요? 저는 mysql 8.0.21 for ubuntu를 쓰고 있습니다. 제일 현명한 방법은 공식 문서를 보는 것입니다. setting 파일에 skip-grant-tables를 추가해 봅시다. 그리고 난 다음에, 다시 mysql 서버를 재시작 하겠습니다. 그러면, 어떠한 인증 없이도 로그인이 가능합니다. 셋팅 상황을 정리해 봅시다. 저는 skip-grant-tables 옵션을 주었습니다. 이것이 무엇을 하는지를 알아야 할 텐데요. 쉽게 말해서, system 스키마에 있는 grant table을 읽지 않고, 권한 시스템 없이 시작합니다. 얼마나 위험하면, 공식 문서에도 꽤 길게 강조를 하는데요. cho로 접속해 보았습니다. databases를 모두 보면 아래와..
mysql에서 timestamp 자료형이 있습니다. 이것은 datetime 이랑 비교해서 어떠한 차이점을 가질까요? mydb에는 2개의 테이블이 있습니다. 하나는 dt, 다른 하나는 ts입니다. 각각 datetime과 timestamp를 저장합니다. ts와 dt에 현재 시간인 now()를 저장해 보겠습니다. 사실 이 함수는 CRUD를 구현할 때 상당히 많이 쓰는 것 중 하나가 됩니다. 예를 들어서, 게시판에서 글을 등록할 때도, 보통은 작성 날짜를 표시해 줍니다. 그러니, now와 같이 작성할 당시에 '시간'을 구해주는 것이 필요합니다. 그리고 dt와 ts에 저장된 내용을 보니, 2020년 8월 30일 48분 17초, 48분 23초가 저장되어 있습니다. 현재 system의 time zone을 보니, KS..
이번 실습도 이어서 해 보겠습니다. 유저를 추가하고, 해당 데이터베이스의 모든 권한을 새로 생성한 유저에게 주기만 하면 됩니다. 먼저, 모든 location에서 접속이 가능한 test 계정을 생성해 보겠습니다. mysql에서는 caching_sha2_password로 인증을 하게 하겠습니다. 추가를 하고 난 후에, mysql.user에서 User 필드만 보면, test가 추가되었다는 것을 알 수 있습니다. mysql.user에서 User가 'test'인 것만 뽑아보겠습니다. 그러면 죄다 'N'이 찍힌 것을 알 수 있습니다. test로 데이터베이스를 생성하는 것도 못 하겠네요. 특정 유저에게 읽을 권한, 쓸 권한 등을 주는 것은 꽤 위험 부담이 따릅니다. 누군가 내가 만든 데이터베이스를 날려버릴 수도 있다..
최근댓글