728x90

네이버 클라우드 mysql 서버 생성이 아닌
mysql -u root -p

root 계정 비밀번호 변경 ( 필수 : 안바꾸면 정상 이용이 불가능 )
 > alter user 'root'@'localhost' identified by '비밀번호'; 

원격으로 접속가능한 root 계정을 만든 경우 root % 계정에 DBA 권한 주기 
 > GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
 > flush privileges;

그외 계정의 Mysql GLOBAL 권한 부여
- SHOW DATABASES , 
  REPLICATION CLIENT , 무중단 부하 분산(CREATE , INSERT , UPDATE)
  REPLICATION SLAVE, 무중단 부하 분산(SELECT)
  PROCESS , ( 실행중인 PROCESS )
  SUPER ( FUNCTION, EVENT 필수 )
 
최종 반영하기
 > flush privileges;

비밀번호 정책 확인
 > show variables like 'validate_password%';

low PW 정책으로 변경하기
 > set global validate_password.policy=LOW; 

함수 사용하기
 > SET GLOBAL log_bin_trust_function_creators = 1;

덤프 파일을 Restore Database 하려고 할때
Authentication plugin 'caching_sha2_password' cannot be loaded 에러가 나는 경우.
:: 보안 연결이나 RSA 보안을 사용하지 않으면 아래와 같은 에러가 발생한다.
 > ALTER USER '사용자'@'%' IDENTIFIED WITH mysql_native_password BY '비밀번호';
 > ALTER USER '사용자'@'localhost' IDENTIFIED WITH mysql_native_password BY '비밀번호';

Access denied for user 'root@'@'localhost' 해결방법 : 기본적으로 초기설정되어있는 mysql의 root 계정의 패스워드 타입때문인데 이 타입을 변경해주면된다.
 > SELECT User, Host, plugin FROM mysql.user;
 > ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '본인 Mysql root 패스워드';
 > flush privileges;


특정 계정으로 원격접속해서 함수 생성할때 오류 : Error Code: 1419. You do not have the SUPER privilege and binary logging is enabled
SET Global log_bin_trust_function_creators='ON'

사용자 확인
 > select host,user,authentication_string from mysql.user; 
 > SELECT User, Host, plugin FROM mysql.user;

사용자 삭제
 > drop user '사용자'@'%';

사용자 생성
 > create user '사용자'@'%' identified by '비밀번호'; 
 > create user 사용자@localhost identified by '비밀번호';

특정 계정에 root 권한 주기
 > grant all privileges on *.* to '사용자'@'localhost'; 
 > grant all privileges on *.* to '사용자'@'%';

사용자 에게 test 데이터베이스 모든 테이블에 대한 권한 부여  
 > grant all privileges on 사용자.* to '사용자'@'localhost';
 > grant all privileges on 사용자.* to '사용자'@'%';
    
user 에게 사용자 데이터베이스 모든 테이블에 select, insert, update 권한 부여 
 > grant select, insert on DB이름.테이블명 to '사용자'@'localhost';

사용자에게 부여된 권한 확인 
 예시.. SHOW GRANTS FOR 사용자@'200.100.100.50';
 >  show grants for 사용자@localhost; 

데이터 베이스 확인
SHOW DATABASES;

=================================================================
쉘스크립트 

수정모드 >> a
Bash 파일 만들기 vi 파일명.sh
파일 저장  >>    :w
파일 저장하고 종료 >>  :wq
파일 저장안하고 종료  >>  :q

현재 줄 지우기 >  Ctrl + u

_________________________________________________________
새로운 사용자 및 데이터 베이스 생성 쉘 스크립트 명령 
 
#!/bin/bash

USER="$1"
NEWDB="$2"

mysql -u 사용자 -p비밀번호 -e "create database $NEWDB"
echo "================= $NEWDB가 생성되었습니다.========================"
echo ""

mysql -u 사용자 -p비밀번호 -e "create user $USER@'%' identified by '비밀번호'"
mysql -u 사용자 -p비밀번호 -e "create user $USER@localhost identified by '비밀번호'"
echo "================= $USER 가 생성 되었습니다.========================"
echo ""

mysql -u 사용자 -p비밀번호 -e "GRANT ALL PRIVILEGES ON $NEWDB.* to $USER@'%'"
mysql -u 사용자 -p비밀번호 -e "GRANT ALL PRIVILEGES ON $NEWDB.* to $USER@localhost"
echo "================ $USER 에게$NEWDB Database 권한이 부여 되었습니다.========================"
echo ""

mysql -u 사용자 -p비밀번호 -e "GRANT SHOW DATABASES, REPLICATION CLIENT, REPLICATION SLAVE, PROCESS, SUPER ON *.* TO $USER@'%'"
mysql -u 사용자 -p비밀번호 -e "GRANT SHOW DATABASES, REPLICATION CLIENT, REPLICATION SLAVE, PROCESS, SUPER ON *.* TO $USER@localhost"
echo "================ $USER 에게administrative Role 권한이 부여 되었습니다.========================"
echo ""

mysql -u 사용자 -p비밀번호 -e "USE $NEWDB"
mysqldump -u root -p비밀번호 -n --routines --triggers bb_smart | mysql -u root -p비밀번호 $NEWDB

 

## 데이터 제외하고 Dump

mysqldump -d -u aiportal -pqwer1234!@ -n --routines --triggers bb_smart | mysql -u aiportal -pqwer1234!@ $NEWDB
echo "============================ DB Dump ..... =========================="
echo ""

 

mysql -u aiportal -p비밀번호 -e "insert into $NEWDB.tc_std_cd select * from TestDB.tc_std_cd"
mysql -u aiportal -p비밀번호 -e "insert into $NEWDB.tc_std_cd_grp select * from TestDB.tc_std_cd_grp "
mysql -u aiportal -p비밀번호 -e "insert into $NEWDB.tn_auth  select * from TestDB.tn_auth "
mysql -u aiportal -p비밀번호 -e "insert into $NEWDB.tn_menu select * from TestDB.tn_menu "
mysql -u aiportal -p비밀번호 -e "insert into $NEWDB.tn_menu_auth select * from TestDB.tn_menu_auth "
mysql -u aiportal -p비밀번호 -e "insert into $NEWDB.tn_bbs_auth select * from TestDB.tn_bbs_auth "
mysql -u aiportal -p비밀번호 -e "insert into $NEWDB.tn_bbs_div select * from TestDB.tn_bbs_div "
mysql -u aiportal -p비밀번호 -e "insert into $NEWDB.tn_bbs_mng select * from TestDB.tn_bbs_mng "
mysql -u aiportal -p비밀번호 -e "insert into $NEWDB.tn_bbs_qna select * from TestDB.tn_bbs_qna "
echo "============================ Base Data Insert ..... =========================="


mysql -u 사용자 -p비밀번호 -e "flush privileges"
echo "=============== 반영완료!!!!!!! ========================"

_________________________________________________________
0. cd /home
1. bash 파일 만들고 >>  vi 파일명.sh
2. execute 파일로 변경  >> chmod u+x 파일명.sh
3. Bash 파일 실행  >> ./파일명.sh  $1  $2

 

728x90

+ Recent posts