mysql dump
원격 접속시
# mysql -h 서버주소 -u root -p
DB백업
> mysqldump -u DB계정 -p DB명 > 경로/저장할 파일명.sql
또는
> mysqldump -h 서버주소 -u DB계정 -p DB명 > 경로/저장할 파일명.sql
DB복원 - DB먼저 생성 후
CREATE DATABASE DB명 default CHARACTER SET UTF8;
SHOW DATABASE 확인
> mysql -u DB계정 -p DB명 < 경로/저장할 파일명.sql
=> 이미 테이블이 있다면 업데이트 됨
특정 테이블만 백업
> mysqldump -u DB계정 -p DB명 테이블명 > 경로/저장할 파일명.sql
특정 테이블만 복원 (DB복구와 동일한 명령, 테이블의 데이터는 복원하는 데이터로 변경, 구조도 함께 변경)
> mysql -u B계정 -p DB명 < 경로/저장할 파일명.sql
AWS
- 백업
> mysqldump -h엔드포인트 --set-gtid-purged=OFF -u계정 -p -v 디비명 > 경로/저장할 파일명.sql
--set-gtid-purged=OFF 이 메소드가 문제라면 뺴도됨
- 복원
> mysql -h엔드포인트 -u계정 -p 디비명 < 경로/저장할 파일명.sql
- 복원 (AWS 인스턴스 에서)
> sudo mysql --login-path=설정명 디비명 < 파일명.sql
DB 접속 설정하기
$ sudo mysql_config_editor set --login-path={설정명} --host={엔드포인트} --user={계정명} --password
Enter password: {패스워드를 입력}
DB확인
mysql> show databases;
Table 확인
mysql> use [DB명];
mysql> show tables;
=============
사용자 계정 생성
# 계정 생성
# localhost, % 또는 특정 ip가 호스트로 사용됨
create user '사용자계정'@'localhost' identified by '비밀번호';
# DB 권한 부여
grant all privileges on *.* to '사용자계정'@'localhost'; -- 모든 DB에 권한 부여
grant all privileges on DB명.* to '사용자계정'@'localhost'; -- 특정 DB에 권한 부여
# 계정 생성과 함께 권한 부여
grant all privileges ON DB명.* to '사용자계정'@'localhost' identified by '비밀번호' ;
-- (local접속만 허용하는 [사용자계정] 사용자에게 [DB명] 데이터베이스에 대한 select,insert,update,delete,create,drop,index,alter 권한을 추가)
# 기존 계정에 개별 권한 추가
grant select,insert,update,delete,create,drop,index,alter ON DB명.* to '사용자계정'@'localhost' ;
-- local접속만 허용하는 test2 사용자에게 test 데이터베이스에 대한 select,insert,update,delete,create,drop,index,alter 권한을 추가
-- * 누적으로 추가가 됨
/*
ALL - 모든 권한 부여
ALTER - ALTER TABLE 사용 가능
CREATE - CREATE TABLE 사용 가능
CREATE TEMPORARY TABLES - CREATE TEMPORARY TABLES 사용 가능
SELECT, DELETE, UPDATE, DROP - 조회,수정,삭제 권한 가능
EXCUTE - 실행권한
FILE - SELECT.. INTO OUTFILE LOAD DATA INFILE 사용 가능
INDEX - CREATE INDEX , DROP INDEX 가능
LOCK TABLES - SELECT 권한있을 때 LOCK TABLES 가능
PROCESS - SHOW FULL PROCESSLIST 가능
SHUTDOWN - SHUTDOWN 가능
SHOW DATABASES - SHOW DATABASES 가능
RELOAD - FLUSH 가능
*/
# 계정 삭제
drop user '사용자계정'@'localhost';
-- 변경사항 적용
flush privileges;
# 사용자 확인
use mysql;
select user, host from user;
# 사용자 권한 확인
SHOW GRANTS FOR '사용자계정'@'호스트';
SHOW GRANTS FOR CURRENT_USER; -- (현재 접속된 사용자 권한 확인)
패스워드 변경
use mysql;
// mysql 5.x
update user set password=password('1234') where user='root';
update user set authentication_string=password('1234') where user='root';
// mysql 8.x
alter user 'root'@'localhost' identified with mysql_native_password by '1234;
-- 변경사항 적용
flush privileges;
https://zetawiki.com/wiki/MySQL%EB%8D%A4%ED%94%84_mysqldump