문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판 이전 판 다음 판 | 이전 판 | ||
database:mysql:basic [2018/06/21 15:11] kwon37xi [사용자 추가/삭제] |
database:mysql:basic [2023/10/31 09:49] (현재) kwon37xi [테이블/컬럼 정보보기] |
||
---|---|---|---|
줄 1: | 줄 1: | ||
====== MySQL 기본 명령어 정리 ====== | ====== MySQL 기본 명령어 정리 ====== | ||
+ | * [[database: | ||
MySQL의 기본 명령어와 SQL문 정리. 내가 RDBMS에 완전 문외한이기 때문에 기본 SQL쿼리까지... | MySQL의 기본 명령어와 SQL문 정리. 내가 RDBMS에 완전 문외한이기 때문에 기본 SQL쿼리까지... | ||
줄 19: | 줄 19: | ||
외부 서버에서 접속이 불가하면 [[database: | 외부 서버에서 접속이 불가하면 [[database: | ||
+ | |||
+ | 원격 서버 접속 | ||
+ | <code sh> | ||
+ | # hostname: | ||
+ | mysql --protocol=tcp -h ' | ||
+ | </ | ||
+ | |||
+ | ===== SSL mode 오류 ===== | ||
+ | * '' | ||
+ | * SSL 접속이 기본값으로 바뀌면서 SSL 설정이 안 된 서버 접속시 오류 발생 '' | ||
+ | * [[https:// | ||
+ | |||
+ | 혹은 '' | ||
+ | < | ||
+ | [client] | ||
+ | ssl-mode=DISABLED | ||
+ | </ | ||
+ | |||
===== 비밀번호 변경 ===== | ===== 비밀번호 변경 ===== | ||
MySQL을 설치한 직후에는 root 계정에 암호가 지정되어 있지 않다. | MySQL을 설치한 직후에는 root 계정에 암호가 지정되어 있지 않다. | ||
줄 50: | 줄 68: | ||
-- 권한 확인 ' | -- 권한 확인 ' | ||
- | SHOW GRANTS FOR ' | + | SHOW GRANTS FOR user_name; |
+ | SHOW GRANTS FOR ' | ||
</ | </ | ||
- | ===== 사용자 추가/삭제 | + | ===== 사용자 추가 / 권한 |
* [[https:// | * [[https:// | ||
* [[https:// | * [[https:// | ||
<code sql> | <code sql> | ||
- | GRANT ALL PRIVILEGES ON dbname.* TO username@localhost IDENTIFIED BY ' | + | -- 생성 후 필수 권한만 부여. - 실서비스 계정은 가급적 이렇게 필요 권한만 부여할 것. |
+ | CREATE USER username@localhost identified by ' | ||
+ | GRANT SELECT, | ||
+ | |||
+ | -- 생성과 전체 권한 일괄 부여 | ||
+ | GRANT ALL PRIVILEGES ON dbname.* TO 'username'@'localhost' | ||
</ | </ | ||
줄 66: | 줄 90: | ||
<code sql> | <code sql> | ||
- | GRANT ALL PRIVILEGES ON dbname.* TO username@' | + | GRANT ALL PRIVILEGES ON dbname.* TO 'username'@' |
</ | </ | ||
위를 또한 번 실행한다. ' | 위를 또한 번 실행한다. ' | ||
줄 72: | 줄 96: | ||
특정 권한만 주려면, 아래와 같은 형태로 권한을 나열한다. | 특정 권한만 주려면, 아래와 같은 형태로 권한을 나열한다. | ||
<code sql> | <code sql> | ||
- | GRANT INSERT, | + | GRANT INSERT, UPDATE, SELECT, DELETE,SHOW DATABASES, SHOW VIEW ON dbname.* TO 'username'@' |
+ | </ | ||
+ | |||
+ | <code sql> | ||
+ | -- 권한 뺐기 | ||
+ | REVOKE CREATE, | ||
+ | ON dbname.* | ||
+ | FROM ' | ||
</ | </ | ||
줄 86: | 줄 117: | ||
</ | </ | ||
- | < | ||
- | -- 권한 뺐기 | ||
- | REVOKE CREATE, | ||
- | ON dbname.* | ||
- | FROM ' | ||
- | </ | ||
===== 불필요한 사용자 삭제는 ===== | ===== 불필요한 사용자 삭제는 ===== | ||
<code sql> | <code sql> | ||
줄 103: | 줄 128: | ||
# 데이터베이스를 생성하고, | # 데이터베이스를 생성하고, | ||
mysql> CREATE DATABASE dbname; | mysql> CREATE DATABASE dbname; | ||
+ | |||
+ | # 없으면 생성한다. | ||
+ | mysql> CREATE DATABASE IF NOT EXISTS dbname; | ||
+ | |||
+ | mysql> CREATE DATABASE dbname CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; | ||
# 현재 존재하는 데이터베이스 목록을 보여준다. | # 현재 존재하는 데이터베이스 목록을 보여준다. | ||
줄 170: | 줄 200: | ||
Open tables: 1 Queries per second avg: 0.021 | Open tables: 1 Queries per second avg: 0.021 | ||
-------------- | -------------- | ||
+ | </ | ||
+ | |||
+ | ===== 호스트별 커넥션 갯수 ===== | ||
+ | <code sql> | ||
+ | select SUBSTRING_INDEX(HOST,':', | ||
+ | from information_schema.processlist | ||
+ | group by SUBSTRING_INDEX(HOST,':', | ||
</ | </ | ||
줄 236: | 줄 273: | ||
WHERE T2.key IS NULL; | WHERE T2.key IS NULL; | ||
</ | </ | ||
+ | |||
+ | ===== STRAIGHT_JOIN ===== | ||
+ | * MySQL 이 join 순서 최적화를 잘 못할경우 **무조건 왼쪽 테이블 먼저 조회하게** 강제하는 옵션 | ||
+ | * 인덱스 힌트와 비슷한 역할을 하므로, 가급적 사용하지 않는게 좋다. | ||
+ | <code sql> | ||
+ | -- C, A, B 순서로 데이터를 읽어서 조인한다. | ||
+ | SELECT STRAIGHT_JOIN * FROM C | ||
+ | LEFT JOIN A | ||
+ | ON C.A_ID = A.A_ID | ||
+ | LEFT JOIN B | ||
+ | ON C.B_ID = B.B_ID | ||
+ | ORDER BY < | ||
+ | </ | ||
+ | * [[https:// | ||
===== mysql에서 쿼리 결과 세로로 보기 ===== | ===== mysql에서 쿼리 결과 세로로 보기 ===== | ||
줄 276: | 줄 327: | ||
SHOW TABLE STATUS like ' | SHOW TABLE STATUS like ' | ||
- | -- 테이블의 컬럼 정보를 주석까지 포함해 보여준다. | + | -- 테이블의 컬럼 정보를 |
SHOW FULL COLUMNS FROM [테이블이름]; | SHOW FULL COLUMNS FROM [테이블이름]; | ||
</ | </ | ||
줄 296: | 줄 347: | ||
inner join `COLUMNS` c on t.TABLE_NAME = c.TABLE_NAME | inner join `COLUMNS` c on t.TABLE_NAME = c.TABLE_NAME | ||
order by t.TABLE_SCHEMA, | order by t.TABLE_SCHEMA, | ||
+ | </ | ||
+ | |||
+ | ===== Group By 의 비 Grouping 컬럼 정보 concat ===== | ||
+ | * [[https:// | ||
+ | <code sql> | ||
+ | SELECT keyword, GROUP_CONCAT( syn SEPARATOR | ||
+ | FROM syn_common | ||
+ | GROUP BY keyword | ||
+ | </ | ||
+ | |||
+ | ===== GROPU BY, DISTINCT ===== | ||
+ | * '' | ||
+ | * [[https:// | ||
+ | |||
+ | ===== 전체 테이블의 행수 ===== | ||
+ | * 특정 데이터베이스 스키마에 있는 테이블들의 행수를 조회한다. | ||
+ | <code sql> | ||
+ | select TABLE_NAME, TABLE_ROWS | ||
+ | from information_schema.TABLES | ||
+ | where TABLE_SCHEMA='< | ||
+ | order by TABLE_ROWS desc; | ||
</ | </ | ||