로컬외에 DB서버를 따로 운영한다면 내 DB에서 외부접속이 가능하도록 해당 계정에 설정을 바꿔줘야 한다. 그런데 mysql 8.0 이하는 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '패스워드'
명령어로 가능했었는데 8.0 부터는 안먹힌다고 한다.
해당 stackoverflow https://stackoverflow.com/questions/50177216/how-to-grant-all-privileges-to-root-user-in-mysql-8-0
CREATE USER '<유저명>'@'%' IDENTIFIED BY '<비밀번호>';
# ex: CREATE USER 'root'@'%' IDENTIFIED BY '12345678';
GRANT ALL PRIVILEGES ON *.* TO '<유저명>'@'%' WITH GRANT OPTION;
# ex: GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
'%'
는 모든 곳에서 외부접속을 허용한다는 뜻이다. '%'
대신 특정 ip만 허용하고 싶다면 '172.25.0.11' 이나 '172.25.0.%' 처럼 특정 ip나 대역을 지정할 수도 있다.
*.*
는 모든 db에 접근권한을 준다는 것이다. 제한하려면 특정 db명만 적으면 된다.
# ex
GRANT ALL PRIVILEGES ON dbname.* TO 'root'@'%' WITH GRANT OPTION;
GRANT ALL
은 모든 기능 권한을 준다는 것이다. 제한하려면 select, insert, update 등 제한하려는 기능만 추가하면 된다.
끝나면 아래 명령어로 확인 가능하다.
SELECT User, Host FROM mysql.user;
DROP USER '<유저명>'@'<권한>';