MySQL version : 8.0.33

시행착오 겪어서 이 글을 보시는 분들은 겪지 마시라고 글 적습니다. 별거 아닌거 가지고 2시간 잡아먹었네요;;;

(내가 겪은 에러 메세지 : ERROR 1410 (42000): You are not allowed to create a user with GRANT)

 

1 . MySQL 접속 과정

터미널 > mysql -u root -p
## 비밀번호 입력 및 접속
mysql > use mysql

 

2. 계정 생성

## 1. 설정할_아이디@ 뒤에 'localhost'와 '%'는 권한 부여하실 때 맞춰주시지 않으면 오류 발생합니다.
## 2. 두 명령어 모두 실행하는 것이 아니라 목적에 따라 1개만 실행하시면 됩니다.
CREATE USER '생성할_아이디'@'localhost' identified by '설정할_비밀번호';
CREATE USER '생성할_아이디'@'%' identified by '설정할_비밀번호';

 

3. 생성 계정 확인

SELECT user, host FROM user;

 

4. 권한 부여

## 1. 위에 계정 생성시 '아이디'@+뒷 부분인 'localhost' 또는 '%'를 맞추어 주지 않으면
## 하단의 오류 메세지가 발생합니다.
## 오류메세지 : ERROR 1410 (42000): You are not allowed to create a user with GRANT
## 2. 두 명령어 모두 실행하는 것이 아니라 계정에 따라 1개만 실행하시면 됩니다.
GRANT ALL PRIVILEGES ON 디비명.* TO '아이디'@'localhost'
GRANT ALL PRIVILEGES ON 디비명.* TO '아이디'@'%'

 

5. 권한 부여 반영(당시에 굳이 해당 명령어 실행 안 해도 반영은 잘 되었습니다.)

## 두 명령어 같은 내용입니다. 대소문자만 다릅니다.
flush privileges;
FLUSH PRIVILEGES;

 

6. 권한 확인

## 두 명령어 모두 실행하는 것이 아니라 계정에 맞추어 1개만 실행하시면 됩니다.
SHOW GRANTS FOR '아이디'@'localhost';
SHOW GRANTS FOR '아이디'@'%';

 

번외. 계정삭제

## 1. 두 명령어 모두 실행하는 것이 아니라 계정에 맞추어 1개만 실행하시면 됩니다.
## 2. root@'localhost'의 경우 mysql 최고관리자 계정이라 실행하지 않았습니다.
## (실행되어서도 안될 것 같습니다.)
DROP USER '아이디'@'localhost';
DROP USER '아이디'@'%';

 

출처 : 겪고 직접 작성

개발용 맥북에 Homebrew로 MySQL 설치하면서 참고하기위해 글작성하였습니다.

 

출처 : https://chobopark.tistory.com/237

 

[MYSQL] 계정 및 권한 생성 방법!!

오늘은 SQL 계정 및 권한 생성하는 방법에 대해 확인해보겠습니다. 프로젝트에 들어가기 전에 개발환경에서 가장 기초적인 부분이죠! 정리해보겠습니다. 우선 mysql 접속에 접속합니다. 계정정보

chobopark.tistory.com

 

아래의 쿼리문은 넷 다 같은 업데이트 문임

데이터 량은 약 15000개의 행으로 구성되어있음

 

한 테이블의 정보를 같은 기능의 다른 테이블에 데이터를 똑같이 붙여넣는 작업임

 

※ 23년 5월 25일 추가사항

측정된 시간은 DB가 설치된 서버컴퓨터 연산 성능에 따라 많이 차이날 수 있습니다.

 

1-1. (789.211ms = 약 13분)
UPDATE product_info AS pi, item AS i SET 
pi.purchase_date = SUBSTR(i.regdate,1,10), 
pi.purchase_price = i.buyprice, 
pi.retail_price = i.saleprice 
WHERE pi.product_code = i.itemcode

1-2.
UPDATE product_info AS pi INNER JOIN item AS i ON pi.product_code = i.itemcode 
SET 
pi.purchase_date = SUBSTR(i.regdate,1,10), 
pi.purchase_price = i.buyprice, 
pi.retail_price = i.saleprice 

 

1-3.

UPDATE product_info AS pi, 
(
SELECT itemcode, regdate, buyprice, saleprice FROM
item WHERE del_f_cd = '0'
) AS i 
SET 
pi.purchase_date = SUBSTR(i.regdate,1,10), 
pi.purchase_price = i.buyprice, 
pi.retail_price = i.saleprice 
WHERE pi.product_code = i.itemcode

 

1-4.

UPDATE product_info AS pi 
INNER JOIN 
(
SELECT itemcode, regdate, buyprice, saleprice FROM
item WHERE del_f_cd = '0'
) AS i 
ON pi.product_code = i.itemcode 
SET 
pi.purchase_date = SUBSTR(i.regdate,1,10), 
pi.purchase_price = i.buyprice, 
pi.retail_price = i.saleprice

 

SUBSTR 함수 사용 여부와 관계없이
업데이트해야하는 1개의 행당 약 15000개의 행을 조회해야 하므로
속도 개선을 하지 못하였음

 

** 단발성 업데이트라 그냥 실행하였음

** 서버 사양에 따라 속도 천지 차이남

 

출처 : 직접 작성

1. SET을 사용하여 rownum 값 초기화 후 조회

<!--초기화 후 -->
SET @rownum:=0; 
 
<!--조회 -->
SELECT
@rownum:=@rownum+1, b.*
FROM tableName b

2. WHERE에서 초기화

SELECT
@rownum:=@rownum+1, b.*
FROM tableName b
WHERE (@rownum:=0)=0;

3. FROM에서 초기화

SELECT
@rownum:=@rownum+1, b.*
FROM tableName b, (SELECT @rownum:=0) TMP
<!-- 옵션 -->
LIMIT 0, 5000;

출처 : https://developer-jjun.tistory.com/23

 

[MySQL] ROWNUM을 사용하여 번호매기기

MySQL에서 Oracle처럼 ROWNUM 사용법 SET구문을 사용하여 ROWNUM 값을 초기화 후 조회 SET @rownum:=0; SELECT @rownum:=@rownum+1, b.* FROM buyingboard b WHERE절에서 초기화 SELECT @rownum:=@rownum+1, b.* FROM buyingboard b WHERE (@rown

developer-jjun.tistory.com

 

 

MySQL에서 쿼리입력

> SHOW PROCESSLIST

 

출처 : https://unabated.tistory.com/entry/MySQL-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4-%EB%A6%AC%EC%8A%A4%ED%8A%B8-%EB%B3%B4%EA%B8%B0

 

 

SELECT 

TABLE_NAME 

FROM 

INFORMATION_SCHEMA.TABLES 

WHERE TABLE_SCHEMA = '(스키마명(DB이름))'

AND table_name LIKE '(앞 이름 키워드)%'

AND table_name LIKE '%(뒷 이름 키워드)'

 

INFORMATION_SCHEMA는

스키마(DB, schema)를 생성하면 자동으로 생기는 스키마입니다.

스키마 안에 들어있는 테이블 구성을 정리해 놓은 스키마입니다.

 

출처 : https://javarevisited.blogspot.com/2012/10/sql-query-to-find-all-table-on-database-mysql-sqlserver.html#axzz7bjNUccK9

 

 

MYSQL 에서

중복되는 항목이 있는지 찾고싶을 때

SELECT  COLUMN_NAME ,  -- 중복되는 데이터
         COUNT(COLUMN_NAME) -- 중복 갯수
FROM TABLE_NAME              -- 중복조사를 할 테이블 이름
GROUP BY COLUMN_NAME      -- 중복되는 항목 조사를 할 컬럼
HAVING COUNT(COLUMN_NAME) > 1 ;  -- 1개 이상 (갯수)

 

출처 : https://dzzienki.tistory.com/39

+ Recent posts