최고사용자(root) / 일반사용자(guest)
DB hosting - root안줌, 일반사용자
자체 DB Server - root 有 - 일반사용자 생성,권한 제공
DataBase Package
한 사이트 당 각각의 DB로 설정
일반 사용자를 각각 배치
1인 기준 사용자가 여러개의 database 권한을 가질 수 있음
1개의 datatbase에 여러명의 일반 사용자를 접근허용 할 수 있음(주로 협업시)
Version
MYSQL 5.1 or 5.5 이상 / 서로다른 자료형 및 구조를 가지고 있음
∴ 한번 구축된 database는 버전 업그레이드가 매우매우 어려운 작업임
Database에 외부 접속시 접속 방식
SSH라는 Tool 이용 (key로 접속)
SQL Developer 이용(잘안씀 )
Telnet오픈 - 아주별로임,접속은 가능하나 지금은 사용x (보안 뚫리기 쉬움 , 기본 port사용하기 때문에)
Database의 구조
⭐⭐⭐🔥 [ MySQL > Database > Table > Column > Data ]
=> 순자적으로 생성
프로젝트 start시 database 제일 먼저 설계 (ERD 설계)
Database 접속 port
3306
❗ (내부)Database 및 (외부)Database 끼리 연결시 port가 다를 경우 접속 불가
언어셋 세팅 필수
서로 다른 databse끼리 복구 안됨
👀
Mysql 최적화 할줄 알면 good
cmd
\status : Database 정보 확인(언어셋,셋팅방식,port,가동시간,version 등)
설치시 언어셋 세팅 필수
- uft8
255byte - 자료형(char) 로 세팅시
varchar로 세팅시 765byte로 인식
- utf8mb4
191byte까지 입력 가능 , 그 이상시 error발생 - 자료형(char) 로 세팅시
varchar로 세팅시 1020byte 인식가능
Server characterset : 서버에서 받을때 언어셋
Db characterset : db에서 받을때 언어셋
Client characterset : 외부 접속시 언어셋
Conn characterset : connection의 약자
ctrl + c : 빠져나가기
set names utf8mb4; => 전부다 utf8mb4로 언어셋 변경(임시 - 재접속시 기본세팅으로 원복됨)
\status
- my.ini or my.cnf : mysql 환경설정(메모리 증가/Buffer 백업,복구,데이터삽입/언어셋)
-> 해당 파일에서 언어셋,buffer size등 변경 가능
show databases; => 현재 생성된 database list 출력
show tables; => 현재 database의 table list를 출력
create database database명; => 신규 데이터베이스를 생성 - 동일한 이름 생성 불가
drop database database명; => 해당 데이터베이스를 삭제
table과 column은 같이 생성해야 정상 작동
⭐ use database명; - database 이동
char(30) : 문자 기반 생성 / 15글자까지 받겟다- 한글자당 2byte / 특수문자 미적용 될 수 있음 / 범위 : char(1~255)
varchar(30) : byte문자 기반 / 15글자까지 받겟다- 한글자당 2byte / 특수문자및 암호화 적용 가능 / 범위 : char(1~255)
not null : 필수로 받겠다
null : 필수 아님(선택)
desc 테이블명; => 자료형 확인이 가능함
desc column명; => column 확인(colomn == field)
[insert 문법] - 데이터 삽입
insert into 테이블명 (colomn명, colomn명, colomn명) values ('데이터값',' 데이터값 ',' 데이터값 ');
=> 데이터 저장 , 갯수 잘 맞춰야함 / null(선택사항)일 경우 '' or null로 삽입 가능
* 주의사항 : column명 갯수에 맞춰서 데이터 갯수가 입력되어야 함
단, null일 경우 '' or null로 자바에서 핸들링 할 수 있음
[select 문법] - 검색,리스트 출력
select * from table명; => 해당 테이블의 데이터를 확인하는 명령어 (전체출력)
검색
select * from table명 where column명='찾을데이터'; => 테이블 안에 있는 데이터를 검색
select column명, column명 from table명; => 해당 컬럼에 관련한 데이터만 출력
select user(); => 현재 접속한 사용자의 아이디를 출력
select database(); => 내가 지금 어느 database안에 들어와 있는지 확인
[delete 문법] - 바로 삭제됨 주의
delete from table명; => 해당 table 안에있는 모든 데이터 삭제
delete from table명 where column명 ='데이터값'; => 해당 데이터만 삭제
delete from notice where nidx in (2,5); // 이런식으로 해도 됨 (단, 좀 위험함 ㅋ.. )
[update 문법] - 수정
update table명 set colomn명 = '변경데이터' where column명='삽입할데이터';
=> 해당 데이터 colomn에 대한 값 변경
update table명 set colomn명 =' 삽입할데이터';
=> set작성하지 않을시 모든 colomn이 변경됨
[drop]
drop table 테이블명; => 해당 table을 삭제 (column은 delete, drop은 table 삭제시 사용)
primary key() : 중복되지 않은 데이터 선정 시 사용하는 key
-> 테이블 생성시 primay key(colomn명, colomn명) : 해당 컬럼명들은 중복 내용 방지됨 - error 발생
ex) 상품등록 시 상품번호 중복방지
중복 삽입 방지
❗ 주의 : 다중키로 primary key 설정시 auto_increment가 기준으로 잡히며
여러개의 다중키를 사용하더라도 단한개의 칼럼 데이터가 다를 경우 insert가 가능하다
❗ 주의 : not null 아닌 null (빈값 가능)로 받으려면 int 불가 - char or varchar로만 가능!!
[ mysql db ]
사용자 추가
=> mariaDB동일
/ root는 최고사용자이기 때문에 모든 database를 확인할 수 있지만 사용자 추가시 database를 따로 지정해줘야함
/ 사용자는 지정된 이름의 database만 삭제,생성 할 수 있음 (단 ,새로운 database는 생성할 수 없다 - root만 가능)
use mysql : mysql database로 이동
🔽
insert into user (host,user,password) values ('localhost','hong', password('a123456')); 해당 사용자에게 database주기
=> mysql v5.5 이하에서만 해당 방식으로 사용자 추가 가능
(or)
create user 'hong'@'localhost' identified by 'a123456';
=> mysql v5.5 이상
!!!!!!!!!!!!!!!!!!!
create시 % 때리면 insert 할때도 % => insert into db values ('localhost','db명','사용자'....) 하면 안댐...
%는 외부사용자 , localhost는 내부사용자
java에서 사용 시 %%
두개 맞출것
!!!!!!!!!!!!!!!!!!!
🔽
해당 사용자에게 database 권한주기 :
desc db; - db라는 table의 filed 확인 가능
insert into db values ('localhost','erp','hong','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y');
: ('localhost','생성한db','생성한 아이디','y'....) => colomn 총 갯수만큼 작성,버전마다 다름
* mysql 에 user라는 database가 있음 거기에 db라는 table에 데이터 추가하는거임 (db - 접속 가능 user ...? )
-> data가 22개이면 그에 맞춰 갯수를 맞춰서 넣어줘야함
select * from db where user='hong'; : 해당 database 확인
select * from user where user='hong'; : 해당 권한 확인
🔽
확인
C:\Program Files\MySQL\MySQL Server 8.4\bin>mysql -u hong -p
비번 입력
show databases;
root에서 mysql restart 하면 해당 사용자에게 보여준 database 추가 확인 가능 ( show databases; )
restart ==> 서비스에서 리부트 or 다른창 cmd에서 C:\Program Files\MySQL\MySQL Server 8.4\bin>mysqladmin -u root -p reload
해당 사용자에게 database 권한 삭제
root에서
delete from user where user='사용자아이디'; => mysql 접속 사용자 삭제
delete from db where user='사용자아이디'; => 해당 db에 사용자와 연결된 사항을 삭제
후 reload
'CLASS > DATABASE' 카테고리의 다른 글
#3-2 / 외부 사용자 추가 방법 (0) | 2024.06.04 |
---|---|
#3-1 / unique, alter문법 (0) | 2024.06.04 |
#2-3 / database table 설계 (0) | 2024.06.03 |
#2-2 / 사용자에게 권한주기 (0) | 2024.06.03 |
#1-1 / MYSQL start,setting (0) | 2024.05.30 |