반응형

일을 하던 도중

MySQL 에서 한 문자열에 여러개의 구분자가 있을 때,

예를 들면


'동해물과;백두산이;마르고;닳도록;하느님이;보우하사;우리나라;만세'


이런 테이블이 있다고 가정했을 때


 1절

 동해물과;백두산이;마르고;닳도록;하느님이;보우하사;우리나라;만세

 2절

 남산위에;저소나무;철갑을;두른듯;바람서리;불변함은;우리;기상일세

 3절

 가을하늘;공활한데;높고;구름없이;밝은달은;우리가슴;일편;단심일세

 4절

 이기상과;이맘으로;충성을;다하여;괴로우나;즐거우나;나라;사랑하세

 후렴

 무궁화;삼천리;화려강산;대한사람;대한으로;길이;보전하세



 1절

 동해물과

 1절

 백두산이

 1절

 마르고

 1절

 닳도록

 1절

 하느님이

 1절

 보우하사

 1절

 우리나라

 1절

 만세

 2절

 남산위에 

 2절

 저소나무

.

.

.


이런식으로 나누는 쿼리를 짜고 싶었습니다.


구글링을 해 본 결과


https://yamea-guide.tistory.com/88


이분의 블로그를 참고하였습니다.


저 위의 테이블이 akukka 이고 

컬럼명이 JUL, VERSE 라고 할 때


1
2
3
4
5
6
7
8
9
10
11
12
13
select
   SUBSTRING_INDEX (SUBSTRING_INDEX(akukka.VERSE,';',numbers.n),';',-1) 컬럼명
from 
   (select  1 n union  all  select 2  
    union  all  select  3  union  all select 4 
    union  all  select  5  union  all  select  6
    union  all  select  7  union  all  select  8 
    union  all  select  9 union  all  select  10) numbers INNER  JOIN 테이블명
    on CHAR_LENGTH ( akukka.VERSE ) 
      - CHAR_LENGTH ( REPLACE ( akukka.VERSE ,  ';' ,  '' ))>= numbers . n-1
-- 공백을 제거하기 위한 조건절
--  WHERE SUBSTRING_INDEX ( SUBSTRING_INDEX ( akukka.VERSE ,  ' ' , numbers . n ),  ' ' ,  -1 ) != ' '
;
cs


이런 코드를 사용하여 주시면 됩니다.

저 union all 의 개수를 이용하여 구분자의 개수를 더 늘릴수도 있는데

혹시 구분자의 개수가 10개를 넘어간다면

union all 의 개수를 늘이셔서 사용하시면 됩니다.



반응형
반응형

MySQL 에서 함수를 만들려고 하는데

CREATE FUNCTION 문을 선언하니


ERROR 1418 (HY000) : This function hasn none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)


이런 에러가 뜨면서 함수가 생성되지 않았습니다.


구글링을 하니 간단하게 해결 방법이 있었습니다.


http://www.mysqlkorea.com/gnuboard4/bbs/board.php?bo_table=community_03&wr_id=1965


이곳을 참조했구요


어떤 설정인지는 정확히 알 수 없지만


SET GLOBAL log_bin_trust_function_creators = 1;


이런 SQL 쿼리를 한번 날려준 뒤


동일한 함수생성문을 선언했더니 에러가 나지 않았습니다.


혹시 이 방법이 안되신다면 저 커뮤니티를 참조하셔서 다른방법으로 해결해 보시기 바랍니다.

반응형
반응형

일을 하던 중에

몇십만줄이 넘어가는 sql 파일을 DB에 임포트 시킬 일이 있었습니다.


보통 작업을 할 때는 tool 을 사용하기 때문에

평소와 다름 없이 툴을 이용하여 sql 파일을 임포트 시키려고 하였으나

엄청난 양 때문인지 sql 파일을 로드조차 하지 못하고

툴이 뻗어버리는 일이 발생했습니다.


구글링을 통하여 해결방법을 찾았고

그 방법을 알려드리려고 합니다.

출처는

https://sir.kr/pg_tip/14631


이분의 글을 참조하였습니다.


작업 DB는 MYSql 입니다.


1. Mysql command 를 실행시키고 DB에 접속합니다.





2. use dbname; 


라는 쿼리문을 이용해 대용량 sql 파일을 임포트 시킬 디비를 선택합니다.


Database changed

라는 응답이 돌아오면 데이터베이스가 변경된 것입니다.


3. source sql파일경로/sql파일명


예를들어 C드라이브 아래에 test 라는 폴더 아래에 big.sql 이라는 파일을 임포트 시키고 싶다면

source C:/test/big.sql;


이런 명령어가 되겠죠?



예시를 들기위해 sql 문을 간단하게 만들어서 그렇지만

저 방법을 사용하여

쿼리툴로는 실행시킬 수 없는 대용량 sql 파일을

임포트시킬 수 있었습니다.


반응형
반응형

내 로컬 MYSQL DB에 접속할때는

MySql 8.0 Command Line Client - Unicode

파일을 실행시켜도 되지만



원격으로 접속하거나 cmd 창에서 접속하려면 약간의 과정이 필요합니다.


그래서 오늘은 MySQL 을 cmd 창에서 접속할 수 있도록 하는 법과

원격으로 IP 주소를 입력하여 접속할 수 있는 방법을 알려드리도록 하겠습니다.


1. 우선 내 PC 아이콘을 우클릭 하거나


내 PC 를 열고 비어있는 아무곳에서 우클릭을 하여



속성에 들어가 줍니다.



2. 왼쪽 탭 중 고급 시스템 설정에 들어갑니다.




3. 고급 탭의 환경 변수(N)... 를 눌러주고




4. 아래쪽의 시스템 변수(S)에 Path 라는 이름의 변수를 클릭한 후

편집(I)...을 눌러줍니다.




5. 그 전에 내 mysql 이 설치된 폴더를 찾아 주소를 복사해 옵니다.

mysql 설치폴더 아래의 MySQL Server 8.0 폴더 아래의 bin 폴더의 경로를 가져오셔야 합니다.





6. Path 의 환경변수를 편집하는 창에서

새로 만들기(N) 을 누른 후

제일 아래에 MySQL 설치경로의 server 폴더 아래의 bin 폴더의 경로를 입력해주고

확인 확인 확인을 눌러 빠져나옵니다.




7. cmd 창을 열고

mysql -u root -p

라는 명령어를 입력하고

비밀번호를 입력하면

아래와 같이 cmd 창에서 mysql 에 접속할 수 있게 됩니다.



그리고 마지막으로 ip 주소를 이용하여 외부의 Mysql DB 에 연결하는 명령어는

mysql -u root -p --port 3306 --host 0.0.0.0

입니다.


root 에는 계정 ID 가

3306 에는 해당 db의 포트번호가

0.0.0.0 에는 해당 ip 주소가 와야합니다.


이상 MySQL 환경변수 등록 및 cmd 로 원격 ip 접속 방법이었습니다.

반응형
반응형

글을 시작하기에 앞서

댓글을 달아주신 분들의 의견중

root 계정에 모든 권한 허용시

DB 가 외부에 노출이 되면 위험하다는 의견이 있었습니다.

만약 해당 사항이 있으시다면 이점 참고하여 주시기 바랍니다.


 

MYSQL 에서 DB를 생성하고 유저에게 권한을 주려고 할 때

 

root 로 접속했음에도

 

ERROR 1410 (42000): You are not allowed to create a user with GRANT

 

라는 에러를 내뿜으며 유저에게 권한주기 권한이 없다는 에러가 발생한 적이 있었습니다.

 

약간의 구글링을 통하여 해결방안을 찾아냈습니다.

 

우선

 

CREATE DATABASE testDB;

 

쿼리로 데이터베이스를 생성해 준 후

 

CREATE USER testUser@localhost identified by 'password';

 

쿼리로 유저를 생성 해 주었습니다.

그리고

 

GRANT ALL PRIVILEGES ON testDB.* TO 'testUser'@'localhost' WITH  GRANT OPTION;

 

쿼리를 날려서 권한을 주려고 했는데

위와같은 에러가 발생을 하였습니다.

 

해결방안은

 

CREATE USER 'root'@'%' IDENTIFIED BY 'root';

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

 

위의 두 쿼리로 루트 계정을 생성하고 

생성된 계정에 먼저 권한을 부여 한 후

 

권한을 주는 쿼리를

 

GRANT ALL PRIVILEGES ON testDB.* TO 'testUser'@'%' WITH GRANT OPTION;

 

로 수정하여 권한을 부여하니 잘 동작하였습니다.

 

 


 

+ 추가

 

댓글을 달아주신 분들에 의하면

 

CREATE USER 'root'@'%' IDENTIFIED BY 'root';


root권한을 가진 유저를 만드는 거라 외부로 노출된 db이면 상당히 위험합니다.

프로젝트나 내부에서만 쓰이는 거면 괜찮을 수도 있지만 그 외에는 안됩니다.

정말 필요한 작업만하시고 외부 권환하고 삭제하셔야 합니다.

 

 

라고 알려주셨습니다.

 

꼭 필요한 경우만 사용하시고 삭제하시거나 

혹시나 더 좋은 해결 방안이 있으신 분들은

댓글로 알려주시면 감사하겠습니다.

 

반응형
반응형

MYSql 을 이용하여 작업을 하던 중


Developer tool 로 mysql 접속을 하려 하니


client does not support authentication protocol requested by server consider upgrading mysql client


같은 에러를 내뿜으며 연결이 안 될 때가 있었습니다.


일반 콘솔창 기반으로는 연결이 잘 되는데


툴만 연결이 안되어서


검색을 해보니


설치과정중에 약간의 수정사항이 필요할 것 같아 이렇게 포스팅을 하게 되었습니다.

혹시 저와 같은 에러로 어려움을 겪으셨던 적이 있다면 도움이 되시길 바랍니다.


https://www.inflearn.com/dwquestion/nodejs%EC%99%80-mysql-%EC%97%B0%EB%8F%99-%EC%97%90%EB%9F%AC/


해당 게시글을 참조하였습니다.


방법은 

1. MYSQL installer 를 실행시킵니다.



2. MySQL Server 오른쪽의 Reconfigure 를 눌러 속성을 변경해 줘야합니다.





3. 앞의 두개는 Next > 를 눌러 넘어간 후

Authentication Method 에서


Use Legacy Authentication Method 에 체크를 해줍니다.





4. Next 를 눌러서 넘어가면 비밀번호 인증을 한번 해야합니다.





5. 비밀번호를 입력하고 check를 눌러 확인을 해준 후

Next > 로 넘어가서 Execute 로 다시 설치를 해주면






다른 Developer tool 들에 잘 연결이 되시는걸 확인하실 수 있으실 겁니다.


반응형
반응형

mysql 작업을 하던 중 한참을 헤메다 답을 찾은 문제가 있어서,

혹시나 저와 같은 문제로 시간낭비 하시는 분이 있을까봐

간단한 내용을 하나 포스팅 하려 합니다.


mysql 에서 여러개의 행을 동시에 수정하고 싶을 때 구글링을 해보면


ALTER TABLE table_name MODIFY (

column1     datatype    NOT NULL,

column2     datatype    NULL, 

column3     datatype    NOT NULL,

.....

);


이런식으로 혹은 MODIFY 뒤에 COLUMN 을 붙여 수정하라는 방법이 많았는데요

이상하게 저는 저런 방식으로 하면 오류가 나더군요

저는 MYSQL 8 버전을 사용하고 있는데

버전에 따른 차이때문인지 저 방식은 

mysql syntax error 를 내뿜으며

쿼리가 수행되질 않았습니다.


그렇게 한참 구글링을 하던 중 답을 알아냈습니다.


제가 수정한 쿼리는


ALTER TABLE table_name 

MODIFY COLUMN     column1     datatype    NOT NULL,

MODIFY COLUMN     column2     datatype    NULL,

MODIFY COLUMN     column3     datatype    NOT NULL,

.....

MODIFY COLUMN     column_last     datatype    NOT NULL;



이렇게 하니까 한 쿼리문 안에 모든 행들이 수정되었습니다.


혹시나 저와 같은 문제로 고민하신 분들이 계셨다면,

조금이나마 도움이 되셨길 바랍니다.

반응형
반응형

이번에는 Database 중 가장 널리사용되고 

기업이나 실무에서도 가장 많이 사용하는 DB 중 하나인

오라클 11g 버전을

윈도우 10 에 설치하는 방법을 

설명해드리겠습니다.


1. 오라클 홈페이지

https://www.oracle.com/index.html

혹은

한국어 홈페이지
https://www.oracle.com/kr/index.html

둘중 한군에데 접속합니다.

저는 한국어 홈페이지에서 다운받아 해보겠습니다.






2. 다운로드 버튼을 눌러줍니다.





3. 데이터베이스 버튼을 눌러줍니다.





4. Database 11g Enterprise/Standard Edition 을 클릭하여 줍니다.

아래에 있는 Express Edition 도 많이들 사용을 하시는데

둘의 차이점이라고 함은

Express Edition이 조금 더 가볍고 경량화 되었습니다.

기능들도 제한을 많이 두었다고 하구요

그래서 저는 Enterprise 버전으로 받도록 하겠습니다.





5. You must accept the OTN License agreement to download this software.

에 체크를 꼭 해주시구요





6. 아래쪽으로 내려와 Oracle Database 11g Release 2 탭에 있는

본인의 컴퓨터 운영체제와 bit 에 맞게 설치 파일을 다운받아 줍니다.

설치파일은 File1, File2 모두 받아주어야 합니다.





7. 파일을 다운로드받으려면 회원가입을 해야합니다.

이미 회원이신분들은 로그인을 해주시고 아니신 분들은 계정 만들기 버튼을 눌러 회원가입을 해줍니다.





회원가인은 저런 양식으로 되어있구요 본인의 정보를 모두 입력해주고

계정 만들기를 누릅니다.

아 비밀번호는 영어 대문자 + 소문자 + 숫자 + 특수문자까지 모두 포함하고 있어야 합니다.





그러면 이메일을 확인하라는 페이지가 뜨고

회원가입시 적어놓은 이메일 확인을 해보니






이렇게 확인 메일이 와있습니다.


이메일 주소 확인 버튼을 눌러 확인을 해줍니다.


그리고 로그인 한 후 다시 파일을 다운로드받아주시면 됩니다.



8. 두개의 파일이 모두 받아졌으면 압축파일을 풀어서 한곳에 모아주시기 바랍니다.

저의 경우는 압축이 자동으로 한 폴더에 풀렸는데요

혹시 폴더 두개가 나눠져 있으신 분들은

2번 폴더 안의 stage 폴더를 1번폴더로 옮겨주시면 되겠습니다.


그렇게 한곳으로 합치셨다면


설치파일인 setup 파일을 실행해 줍니다.





이런 콘솔창도 잠깐 뜨고





이런창도 잠깐 뜨고





9 최소 요구 사항을 충족하지 않는게 아니라 너무 뛰어넘어서 그런 것 같습니다.

예를 눌러줍니다.





10. 전자메일을 안적어주셔도 상관 없고

보안 갱신 수신 안하셔도 상관 없습니다.

하실분들은 체크를 유지해주시고 저는 체크를 해제하겠습니다.

다음(N)> 버튼을 눌러줍니다.





11. 예(Y)를 눌러줍니다.





12. 데이터베이스 생성 및 구성에 체크하여주시고 다음(N)> 을 눌러줍니다.





13. 데스크톱 클래스에 체크하여 주시고 다음(N)> 을 눌러줍니다.






14. 설치 환경 구성을 하는 단계입니다.

혹시나 다른 드라이브나 다른 폴더에 설치하실 분들은

오른쪽의 찾아보기를 누르셔서 경로를 바꿔주시고 설치해주시면 됩니다.

비밀번호는 대문자 + 소문자 + 숫자만 포함해야하며 특수문자는 포함하지 않아도 괜찮습니다.

아 그리고 본인만 쓰실 거라면 1234나 abcd 같은 간단한 비밀번호를 설정하실 수 있습니다.





15. 완료버튼 눌러 설치를 진행합니다. 





16. 본격적으로 설치를 하는데 굉장히 오래 걸립니다.

식사를 하고 오셔도 되고 게임을 한판하고 오셔도 괜찮습니다.

제기준 한 20분정도 걸린 것 같습니다.





17. 중간에 이런 창도 한번 뜨고





18. 설치를 마무리 하는데 비밀번호 관리를 누르면 해당 데이터베이스에 기본적으로 생성되어 있는

사용자들의 비밀번호를 관리할 수 있습니다.

큰 의미는 없으니 확인을 눌러줍니다.





20. 닫기(C) 버튼을 누르면 설치가 끝납니다.



자세한 데이터베이스 사용 방법은 차차 포스팅 하도록 하겠습니다.


반응형

+ Recent posts