본문 바로가기
프로그래밍/database

[220216] Mysql 최초 설치 / 사용할 수 있게 세팅하기

by 한코코 2022. 2. 21.

1.   mysql 최초 설치

sudo brew install mysql //이게 안되면
brew install mysql //이거 입력

brew services start mysql
sudo mysql_secure_installation

마지막 코드까지 치고나면 질문이 총 5개 나오는데 다음 키를 누르면 된다.

1. mysqul 초기 비밀번호 없게 enter 입력

2. root 계정 패스워드 설정 y 입력 : 작성후 적어놓고 기억하기

3. 익명사용자 y 입력

4. 원격접속 권한 y 입력

5. test db 삭제 y 입력

 

 


 

 

2.   mysql 시작하기

user와 root와 계정에 관한 간단한 관계도

방 안에 있는 가구나 소품은 계정이 갖고있는 데이터.

데이터 별로 다른 데이터를 가질 수 있다.

최고관리자인 root 계정을 관리 잘 해야하는 이유 : 얘가 뚫리면 다른건 다 뚫렸다고 봐야함.

 

나 root계정인데 들어갈게?
네가 root계정이 맞으면 비밀번호 입력해! 

를 코드로 바꾸면 이렇게 된다.

아까 적어놨던 root계정 패스워드를 작성하면 mysql이 시작된다.

mysql -uroot -p비밀번호

 

 


 

 

3.   계정설정하기

데이터베이스의 저장단위

데이터 베이스를 보여달라는 명령문.

  • table : 구현할 데이터를 저장할 수 있는, 한가지 기능에 대한 저장공간. 데이터 묶음.
  • database : 그런 공간들인 table을 묶은 저장단위. 객체처럼 그 안에 있는걸 꺼내다가 쓰려고 만든 형태라고 생각하자.
  • mysql에 접속한 상태에서 입력해야 한다.
show databases;

 


 

 

5.   sql의 문법 / 그냥 알아만두기

DDL : 데이터베이스나 테이블을 만들때 씀

DML : 테이블 안에 있는 데이터를 조작할때 씀 -> 가장 많이 쓸 문법

DCL : 권한설정할때 사용. 자주 사용 안 할거임.

 

DML 문법 4가지

DML -> SELECT문 : 내용을 가져옴 ---> SELECT 필드명 FROM 테이블명

DML -> UPDATE : 내용을 수정할때 씀
DML - Delete : 내용을 삭제함
DML - Insert : 내용을 삽입함

 

 

제일 비유하기 좋은 프로그램 = 엑셀

//인증 플러그인 조회
SELECT User,Host,plugin FROM mysql.user;

명령어는 보기 쉬우라고 관습적으로 대문자로 적는것.

마지막에 ;을 입력해야 문장이 끝난다. 입력하지 않고 엔터를 치면 다음줄로 넘어감.

User 필드 영역에서 root의 plugin을 보면 내용이 Auth_socket 인증방식으로 사용하는 것을 볼 수 있다.

이걸 caching_sha2_password 방식으로 변경할 것이다.

use mysql
UPDATE user SET plugin='caching_sha2_password' WHERE User='root'

이후에 root계정에 비밀번호가 세팅되는 초기 비밀번호가 있는지 알아보기

select host,user,plugin,authentication_string,password_last_changed from user;

출력되는 root줄에 authentication_string이 비어있다면 초기 비밀번호가 없다는 것.

alter user 'root'@'localhost' identified by '변경할 비밀번호';

아마 ERROR 1819로 시작하는 에러문구가 뜰텐데, 패스워드 보안정책 이슈때문에 어렵게 만들어달라고 말하는 문장이다.

보안 정책을 확인하려면 다음 코드를 입력하자

show variables like 'validate_password%';

그러면 보안정책이 떠야하는데 나 왜 안뜨냐. 나 왜 empty냐.

이럴때는 다음코드를 입력해주고 다시 한번 위 코드를 입력하면 잘 뜬다.

install plugin validate_password soname 'validate_password.so';

우린 이제 저 2개 속성을 바꿔서 비밀번호 보안 레벨을 낮춰줄 것이다.

LOW : 패스워드 길이 최소 길이

MEDIUM : 숫자, 대문자, 소문자, 특수문자 포함

STRONG : dictionary file을 등록해서 사용. 어려움.

set global validate_password_policy=LOW; // 비밀번호 난이도 등급
set global validate_password_length=4; // 비밀번호 4자리
set global validate_password_mixed_case_count=0; // 대소문자 최소 1회 이상 사용 해제
set global validate_password_number_count=0; // 숫자 최소 1회 이상 사용 해제
set global validate_password_special_char_count=0; // 특수문자 최소 1회 이상 사용 해제

//바뀌었는지 다시 한번 코드를 입력해 확인하자
show variables like 'validate_password%';

validate_password_length일수도, validate_password.length일 수도 있으니 목록 이름을 잘 살펴보고 작성하자.

이제 다시 비밀번호를 바꿔보자.

# 이건 업데이트 전 버전
alter user 'root'@'%' identified by '변경할 비밀번호';

# 업데이트 된 후로는 이걸로 수정하자
ALTER user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '변경할 비밀번호';



# 수정을 통해서 비밀번호 생성
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '내 루트 비밀번호'
# OR
CREATE USER 'foo'@'%' IDENTIFIED WITH mysql_native_password BY 'bar';

# 계정과 비밀번호를 생성하는 코드
create user '계정명'@'%' identified by '비밀번호'
create user '계정명'@'%'identified WITH mysql_native_password By '비밀번호';

# 마지막 확정코드 -> 이걸 해야 적용이 됨
FLUSH PRIVILEGES;

% : 누구나 접속을 허용할거야 (권한낮음)

localhost : 내 컴퓨터 안에 있는 사람만 접속을 허용할거야

ip : 해당 ip만 접속을 허용할거야

 

 

잘 생성되어있는 계정

만들어 놓은 계정과 비밀번호는 따로 작성해서 잊지말기

만약 위 문구로 나오지 않으면 아래 문구로 User를 체크하자

Select user from mysql.user;

 

 

 

 

exit
mysql -u계정명 -p비밀번호

exit으로 계정을 로그아웃하고 만들어놓은 계정으로 로그인해서 확인하자.

 

 

 

비밀번호가 이렇게해도 수정이 되지 않을 경우

https://hancoco.tistory.com/285

 

mysql에서 validate 등급을 낮춰도 비밀번호가 간단하게 바뀌지 않을때.

보통 이 코드로 보안등급을 확인해서 낮춘 후에 비밀번호 변경을 진행하는데, 업데이트가 된건지 모르겠는데 예전 방법이 안먹히더라. $ show variables like 'validate_password%'; 1. 권한등급 수동으로 제

hancoco.tistory.com

 

 


 

 

4.   권한부여하기

create database sample

새로 만든 계정명으로 데이터베이스를 생성하려고하면 권한이 없어서 에러코드가 뜬다.

새로 만든 계정도 생성할 수 있도록 권한을 주자. root 계정으로 다시 돌아가서 다음 코드를 입력한다.

grant all privileges on *.* to '계정명'@'%' with grant option;

계정을 생성할때 접속을 허용했던 권한등급을 그대로 작성해준다.

local이면 local, ip면 ip.

다시 데이터베이스 생성을 해보면 잘 생성되어있다.

 

 

윈도우 기반 컴퓨터는 이후에 외부접속 설정을 해야하지만, 맥은 기본적으로 되어있으므로 하지 않아도 된다.

(서버 내 IP localhostfmf 0.0.0.0으로 모든 IP를 허용할 수 있게 변경하는 과정)

그러면 mysql 기본 세팅이 끝났다.

댓글