소소한개발팁
article thumbnail
반응형

오랜만에 MySQL을 사용하기 위해 서버에 접근하려고 했지만 비밀번호가 생각나지 않아서 이를 해결한 방안을 메모해둡니다.

서버 시작 및 재시작 방법

# 1. MAC
# mysql 서버 시작 및 재시작
mysql.server start
mysql.server restart

# 2. Linux
# mysql 서버 시작 및 재시작
service mysql start
service mysql restart

systemctl start mysql.service
systemctl restart mysql.service

 

서버 접속 방법

mysql -u root -p

 

같은 명령어로 서버에 접속하려고 했지만 비밀번호 분실로 진행이 되지 않아서 아래와 같이 해결했습니다.

 

MySQL 초기화 작업

mysql.server stop
mysql.server start --skip-grant-tables

# --skip-grant-tables 옵션을 주면,
# root 인증 없이 MySQL 서버에 접근가능

mysql -u root


MySQL 서버 내에서 루트 유저의 비밀번호 변경 후 플러시

update mysql.user set authentication_string=null where user='root';
flush privileges;

# 버전 8.0 부터는 alter user 를 이용하여 비밀번호를 변경해야 하는데 
# 우리가 사용한 --skip-grant-tables 옵션으로는 DDL문이 실행이 안되기 때문에 
# 임시로 일단 비밀번호를 초기화한다.


서버 재접속

mysql -u root;


서버 내에서 루트 계정 비밀번호 변경

alter user 'root'@'localhost' identified with caching_sha2_password by '변경할 비밀번호';
mysql -u root -p / 1234

# DDL이라 별도 flush privileges가 필요 없음

 

서버 데이터 베이스 생성 및 사용자 추가 (권한)

# 비밀번호 분실로 인한 에러 처리 후 재접속 완료
mysql -u root -p

# 데이터 베이스 생성 (CREATE DATABASE)
Create database sqc default character set utf8;

# 데이터 베이스 생성 확인
Show database;

# 현재 데이터베이스를 mysql로 변경하고 유저정보 확인
Use mysql;
select host, user from user;

# 사용자 추가 방법 1
create user sqc_user@‘localhost’ identified by ‘1234’;

# 계정에 외부 접근 권한을 부여하려면, 
# Host를 '%' 로 하여 똑같은 계정을 추가한다
create user sqc_user@‘%’ identified by ‘1234’;

# 사용자 추가 방법 2 
INSERT INTO user (Host, User, Password) VALUES ('localhost', '계정아이디', password('비밀번호'));
INSERT INTO user (Host, User, Password) VALUES ('%', '계정아이디', password('비밀번호'));
FLUSH privileges;

# 사용자 권한 추가
GRANT ALL PRIVILEGES ON sqc.* TO sqc_user@localhost
GRANT ALL PRIVILEGES ON sqc.* TO sqc_user@‘%’
# sqc_user에게 sqc 데이터베이스 내의 모든 테이블에 대한 권한을 전부 부여한다. 
# 이때 파일 관련권한은 별도로 추가해야 한다.

# 파일 권한 추가 부여
GRANT FILE ON sqc.* TO sqc_user@localhost
GRANT FILE ON sqc.* TO sqc_user@‘%’;
반응형

'데이터베이스 > MySQL' 카테고리의 다른 글

조회에서 사용하는 쿼리  (0) 2023.04.28
profile

소소한개발팁

@개발자 뱅

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!