반응형
오랜만에 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 |
---|