Database/MySQL, MariaDB
Mysql 계정 정보 복사, 이전 (DB 마이그레이션 시)
BabyTT
2023. 3. 8. 17:21
pt-show-grants를 사용하지 않더라도
아래 스크립트를 .sh 로 생성하여 실행하면 비밀번호와 grant 옵션을 얻을 수 있음
#!/bin/bash
HOST=localhost
USER=
PASSWORD=
for i in `mysql -Ns -h$HOST -u$USER -p$PASSWORD -e "select concat('\'',user,'\'@\'',host,'\'') from mysql.user where user not in ('mysql.session','mysql.sys','debian-sys-maint','root','mysql');"`
do
mysql -Ns -h$HOST -u$USER -p$PASSWORD -e 'SHOW CREATE USER '"$i"';' >> users.sql
mysql -Ns -h$HOST -u$USER -p$PASSWORD -e 'SHOW GRANTS FOR '"$i"';' >> users.sql
done
sed -i 's/$/\;/' user_privileges.sql
-- 패스워드 명을 알 경우
ALTER USER '계정명'@'%' IDENTIFIED with mysql_native_password by '비밀번호';
-- 패스워드 명을 모르고 기존 DB의 패스워드를 그대로 복사해서 가져올 경우
ALTER USER '계정명'@'%' IDENTIFIED with mysql_native_password AS 'mysql.user테이블에 있던 비밀번호 그대로';
-- 적용
FLUSH PRIVILEGES;
-- 권한 확인
SHOW GRANTS FOR 계정명;
참고!
MySql5.7 은 계정 생성과 동시에 DB에 권한을 부여 가능
mysql> grant all privileges on DB이름.* to '계정명'@'%' identified by '비밀번호' with grant option;
MySQL 8 부터는 계정 생성과 DB 권한 부여를 각각 실행
mysql> create user '계정명'@'%' identified by '비밀번호' ;
mysql> grant all privileges on DB이름.* to '계정명'@'%' with grant option;