루트 비밀번호를 잊어버렸습니다. 어떻게 해야 할까요? 저는 mysql 8.0.21 for ubuntu를 쓰고 있습니다. 제일 현명한 방법은 공식 문서를 보는 것입니다. setting 파일에 skip-grant-tables를 추가해 봅시다. 그리고 난 다음에, 다시 mysql 서버를 재시작 하겠습니다. 그러면, 어떠한 인증 없이도 로그인이 가능합니다. 셋팅 상황을 정리해 봅시다. 저는 skip-grant-tables 옵션을 주었습니다. 이것이 무엇을 하는지를 알아야 할 텐데요. 쉽게 말해서, system 스키마에 있는 grant table을 읽지 않고, 권한 시스템 없이 시작합니다. 얼마나 위험하면, 공식 문서에도 꽤 길게 강조를 하는데요. cho로 접속해 보았습니다. databases를 모두 보면 아래와..
코딩/Sql 검색 결과
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로 데이터베이스를 생성하는 것도 못 하겠네요. 특정 유저에게 읽을 권한, 쓸 권한 등을 주는 것은 꽤 위험 부담이 따릅니다. 누군가 내가 만든 데이터베이스를 날려버릴 수도 있다..
데이터 베이스를 다루실 때, User를 관리하는 것도 꽤 중요한 일 중 하나입니다. mysql에서 유저를 어떻게 추가하는지 간단하게만 짚고 넘어가 보겠습니다. 8버전 들어오고 나서 부터, 인증 방식도 상당히 많아졌는데, 이들에 대해서는 천천히 알아보도록 하겠습니다. 당연하게도, 공식 레퍼런스 문서인 링크에 설명이 잘 되어 있습니다. 이것을 기반으로 간단하게 실습만 해 보도록 하겠습니다. 레퍼런스에 따르면, mysql.user에 무언가 특별한 정보들이 저장이 되어 있다고 합니다. 이 중에서 여기서 다룰 중요한 정보들만 짚고 넘어가 보겠습니다. Host와 User, PlugIn을 보겠습니다. User는 유저 이름이고, Plugin은 무엇인지는 잘 모르겠습니다만, caching_sha2_password가 눈에..
테이블에서 collation은 어떤 것일까요? 사실, 저는 별 게 아니겠구나. 라고만 생각하였습니다. 그냥 인코딩에 대한 것만 중요하겠거니, 싶었습니다. 결론부터 말하자면, 그런 제 생각은 오만했다는 것이였습니다. testVC 테이블에 있는 데이터를 모두 조회해 보겠습니다. 이것을 str 오름차순으로 정렬해 보겠습니다. heroes, HEROES, kiwoom, KIWOOM, kIWOOM, Lotte giant, ... 이렇게 8개의 레코드가 있습니다. 여기서 의문점이 들 수 있습니다. 왜 대문자 소문자 구분없이 sorting이 되어 있지? 이는 테이블의 Collation을 보면 알 수 있습니다. utf8mb4_*_ai_ci. 이것은 Accent와 Case 둘 다 INSensitive하다는 것입니다. 앞..
최근댓글