(1) MariaDB 로컬 사용자 추가

2021. 6. 8. 21:31개발공부/DB


회사 DB를 로컬로 다뤄보려고 코드 내 사용자/패스워드와 로컬 DB(localhost) 연동, DB파일 로컬 export 두 가지 과정을 진행했습니다. DB는 MariaDB 기준입니다.

 

1. localhost 사용자 추가

혼자서 프로젝트를 만들 땐 root 사용자만 있어도 충분했기 때문에 사용자를 추가해본 적이 없었지만, 회사에 들어오니 필수가 되었습니다. 사용 툴은 DB 툴, 윈도우 기준 cmd(커맨드 프롬프트) 입니다. 저는 MariaDB를 사용했는데 MySQL Workbench와 HeidiSQL 두 가지 툴을 사용했습니다. 제가 볼 땐 큰 차이는 없습니다. DB 툴을 사용하면서 cmd까지 사용하는 이유는 root 권한 때문입니다. 새로운 사용자를 추가할 때 root 권한이 필요한 경우 (grant privilege, set password...etc)가 있습니다. 그때마다 DB 커넥션을 바꿔주기 번거롭기 때문에 보고있는 로컬 DB를 DB 툴에서 다루고, 권한 명렁어는 cmd를 이용하는 것이 편합니다.

윈도우에서 MySQL cmd를 사용하려면 시스템 환경변수 path에 쓰고 있는 DB가 저장된 로컬경로(e.g. C:\programFiles\MySQL\bin)를 추가해주셔야 합니다.

1
mysql -u root -p
cs

root 권한으로 mysql 커맨드를 실행시키는 명령입니다.

1
USE mysql;
cs

DB, 사용자 등 config 하는 테이블 mysql로 DB를 이동합니다.

1
2
3
4
5
6
7
8
9
10
11
SELECT host, user, password FROM USER;b //모든 사용자 확인
 
CREATE USER 'USERNAME'@'IP또는localhost또는%' IDENTIFIED BY 'PASSWORD'//사용자 생성
 
GRANT ALL PRIVILEGES ON [DB명 or *].[테이블명 or *] TO 'USERNAME'@'IP또는localhost또는%'//사용자 권한 부여

// Access denied 오류가 계속해서 뜰 경우 아래 명령어를 추가해준뒤 권한을 제거해줍니다(revoke)
GRANT ALL ON *.* to hotelorder@localhost;
//https://kb.iu.edu/d/awmx#:~:text=You%20will%20get%20this%20error,mysql%3E%20GRANT%20ALL%20ON%20*.&text=Note%3A%20If%20you%20use%20ALL,privileges%20for%20the%20specified%20database.
 
SHOW GRANTS FOR 'USERNAME'@'IP또는localhost또는%'//사용자 권한 조회
  cs

이로써 사용자 추가가 완료됩니다. 사용자 권한 부여 후에 FLUSH PRIVILEGES 명령을 추가하면 RELOAD(새로고침) 기능이 발생해 변경된 사항이 적용된다곤 하는데 저는 사용하지 않았고 서버에서 호출할 때 자동 적용된 것 같습니다. 

1
2
3
4
5
SET PASSWORD FOR 'username'@localhost = PASSWORD("NEWPASSWORD");
cs

참고로 MariaDB 기준으로 유저 패스워드 변경 명령어입니다. ALTER USER ... IDENTIFIED BY...가 적용되지 않아 MariaDB 사이트에서 보고 사용했습니다.   

 

2. DB파일 로컬 Export

 

MySQL Workbench에서 Export 될 때 오류가 뜰 수 있습니다. 그러면 Workbench 버전을 낮춰서 (5~6버전) 다운받은 다음 일반적인 방식으로 Server > Data Export 한 파일을 백업으로 쓰면 됩니다.

더 좋은 방법을 찾음! 하기 링크참고

https://insomniachaos.tistory.com/197

Server > Export
Export to self-Contained File(하나의 파일로 다운로드)
Export 완료