IT/DataBase
[MySql] 계정, DB, 권한 관리, 유용한 SQL
원창연
2020. 12. 8. 12:08
ㅁ 계정관련
▶ root계정로그인
$mysql -u root -p
Enter password:[패스워드]
※ Mysql(MariaDB동일)은 command나 Sql툴로 접근 command같은 내용이 처리됨
▶ 계정관련
select host, user, password from user; :조회
create user [계정아이디]@'[접속지제한]' identified by '비밀번호'; :생성
※ 접속지제한 % : 전체, localhost : 해당서버만, ip인경우 특정 ip 에서만 접근제어
※ 접속지제한에 싱글따옴표 필수, MariaDB는 패스워드 정책에 따라 10글자 필수
다른 방법으로는
INSERT INTO user (Host, User, Password) VALUES ('localhost', '계정아이디', password('비밀번호'));
FLUSH privileges;
delete from user where user='[계정아이디]';
다른 방법으로는
drop user '사용자ID'@localhost;
ㅁ 데이터베이스 관리(생성,권한, 권한반영)
▶ DataBase변경
use mysql
※ command 모드에만 적용
▶ DataBase(스키마) 관리
show databases; : 조회
create schema DB명; : 생성
옵션예) create database DB명 default character set utf8;
drop database DB명; : 삭제
▶ 설정변경에 대한 반영 command
flush privileges
ㅁ 테이블 관리
▶ 테이블 관련
- database 테이블조회
show tables;
- 권한 추가: localhost접속시만 처리가능
grant all privileges on '스키마명'.'테이블명' to '계정명'@'호스트' identified by '계정비밀번호' with grant option;
※스키마명.* 는 해당 스키마에 전부
- 권한조회
show grants for '계정명'@'호스트';
- 권한 삭제
revoke all on '스키마명'.'테이블명' from '계정명'@'호스트';
▶ primary key 관리
alter table 테이블명 drop primary key;
alter table 테이블명 add primary key(컬럼명, 컬럼명);
ㅁ 테이블 조회
SELECT
TABLE_SCHEMA 스키마
,TABLE_NAME 테이블영문명
,TABLE_COMMENT 테이블한글명
,TABLE_TYPE 테이블타입
,TABLE_COLLATION 테이블구조
,TABLE_ROWS 레코드건수
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA like '${schema}%'
AND (TABLE_NAME LIKE '${var}'
OR TABLE_COMMENT LIKE '${var}')"
스키마명, 테이블명(한글)
ㅁ 컬럼조회
SELECT ORDINAL_POSITION AS NO
, (CASE WHEN COLUMN_KEY !='' THEN 'Y'
ELSE '' END) PK
, COLUMN_NAME 영문명
, COLUMN_COMMENT 한글명
,IS_NULLABLE AS NULLYN
, DATA_TYPE 데이터타입
, (case when DATA_TYPE='int'
then NUMERIC_PRECISION
else CHARACTER_MAXIMUM_LENGTH end) 자릿수
, NUMERIC_SCALE 소수점
, ' ' 데이터
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA= '{$schema}'
AND TABLE_NAME = '${var}'
ORDER BY ORDINAL_POSITION"