데이터베이스/Mysql

MySQL 설치요즘은 도커(Docker)나 쿠버네티스(Kubernetes) 같은 컨테이너 기반 배포가 대세를 이루고 있습니다.개발자들 사이에서도 이러한 빠르고 유연한 배포 방식이 당연시되고 있죠.컨테이너를 사용하면 환경 설정이 간편하고, 자동화된 파이프라인으로 배포가 쉬워지니까요.이런 세상에서 "굳이 OS에 접속해서 수동으로 명령어를 입력하며 MySQL 같은 데이터베이스를 설치하는 게 의미가 있을까?"라는 생각이 드는 건 지극히 정상적이라고 봅니다. 사실, 컨테이너 기술의 편리함을 보면, 손으로 하나씩 설치하는 전통적인 방식이 시대에 뒤떨어진 것처럼 느껴질 수도 있죠.하지만 꼭 그렇지는 않다고 생각합니다. 컨테이너를 사용하지 않고 온프레미스 환경에서 직접 MySQL을 수동으로 설치하는 일은 여전히 의미가..
이슈특정 우분투 기반 도커 컨테이너에서 타 컨테이너인 Mysql 이 접속되지 않는 로그를 확인.직접 컨테이너 내부로 들어가 Mysql Client를 설치하고 연결이 수립되는지 확인하기 위해 Mysql-client 를 설치하는 과정에서 기록방법# 다운로드wget https://dev.mysql.com/get/mysql-apt-config_0.8.32-1_all.deb# 저장소 지정용 설치파일 dpkg -i mysql-apt-config_0.8.32-1_all.deb# 설치apt updateapt install mysql-client연결확인mysql -h mysql -u dev -p
Mysql 구동시 innodb: unable to lock ./ibdata1 error: 11 해결환경docker / Docker-compose 구성의 Mysql 8.0 실행 환경 에러 메세지docker-compose logs 를 통해 확인한 결과 아래와 같은 에러메세지만 무수히 출력 innodb: unable to lock ./ibdata1 error: 11해결 방법ps -ef | grep mysqld 위 명령어시 아래와 같이 표시됨ldx 12799 12772 1 05:31 ? 00:09:25 mysqld-- 29164 6344 0 20:24 pts/2 00:00:00 grep --color=auto mysqld아래 명령어를 통해 ldx 12799 - mysqld 를 강제 종료..
원인 public key retrieval is not allowed 에러와 함께 JDBC 연결이 되지 않는 이슈가 발생한다. 보통 Mysql5.7 에서 8.0으로 마이그레이션 한 경우 접하게 되는 에러인데 이는 Mysql 8.0 의 경우 useSSL=false 일시, 추가 보안 설정이 필요하기 때문이다. 해결 접속 URL을 아래와 같이 수정해주자. jdbc:mysql://{host}:{port}/{dbname}?useSSL=false&allowPublicKeyRetrieval=true
Mysql 공식 가이드에 나와 있는 내용은 친절하지 않았다. 해당 가이드를 따라하며 생긴 이슈들을 해결하는 과정에서 필요부분을 추가하여 기록한 내용이다. Quick Start # 운영체제 업데이트 apt update apt upgrade # 필요 프로그램 설치 apt-get install g++ apt-get install libssl-dev apt install pkg-config apt install libncurses5-dev apt install libaio1 libaio-dev # 그룹 및 유저 생성 $> groupadd mysql $> useradd -r -g mysql -s /bin/false mysql # Beginning of source-build specific instructions..
Quick Start # 비밀번호 정책 낮은 수준으로 처리 SET GLOBAL validate_password_policy=LOW; # 계정 생성 create user '{계정명}'@'%' identified by '{비밀번호}'; # 모든 권한 부여 [%의 경우 전체접근 허용] GRANT ALL PRIVILEGES ON *.* TO '{계정명}'@'%' IDENTIFIED BY '{비밀번호}'; # 모든 권한 부여 ( Mysql 8.0 이상 ) GRANT ALL PRIVILEGES ON *.* TO '{계정명}'@'%'; # SELECT 권한만 부여 GRANT SELECT ON *.* TO '{계정명}'@'%'; # 특정 함수 실행 권한 부여 GRANT EXECUTE ON FUNCTION `{데이터베이..
Quick Start mysql DB 모든 내용 덤프하기 $ mysqldump --routines -u 유저명 -p DB명 > 아웃풋.sql 위와 같이 DB를 dump하게되면 DB table 생성 정보(Create 명령어)와 table 내 정보(Insert 명령어)가 모두 아웃풋.sql에 저장된다. --routines를 해야 function, procedure 등을 포함하여 덤프된다. mysql DB 테이블 내용만 덤프하기(컬럼명 없이) $ mysqldump -u 유저명 -p DB명 --no-create-info > 아웃풋.sql mysql DB 테이블 내용만 덤프하기(컬럼명 함께) $ mysqldump -u 유저명 -p DB명 --no-create-info --complete-insert > 아웃풋.s..
### Cause: com.mysql.cj.jdbc.exceptions.PacketTooBigException: Packet for query is too large (14,209,738 > 4,194,304). You can change this value on the server by setting the 'max_allowed_packet' variable. ; Packet for query is too large (14,209,738 > 4,194,304). You can change this value on the server by setting the 'max_allowed_packet' variable.; nested exception is com.mysql.cj.jdbc.exceptions..
원인 Mysql에서 최소 기본 요구에 부합하지 않은 비밀번호인 경우에 발생되는 에러 validate_password% 로 확인해보면,policy가 MEDIUM으로 되어있음을 확인할 수 있다. 기본정책은 다음과 같다. LOW 8자 이상 MEDIUM 8자 이상 + 숫자 + 대문자 + 소문자 + 특수문자 이 값을 변경하고 싶은 경우, validate_password.number_count 및 validate_password.mixed_case_count을 수정 STRONG 4자 이상 + 하위 문자열이 지정된 사전 파일 단어와 일치 S 사전 파일을 지정하려면 validate_password.dictionary_file 설정 해결 정책을 변경하는 방법은 아래와 같다. MYSQL 5.X set global vali..