HeidiSQL은 보통 리눅스에 설치된 MySQL 또는 MariaDB 서버를 윈도우에서 원격으로 연결할 때 많이 사용한다. 원격으로 연결한다는 개념이 중요하다. 왜냐하면 로컬과 원격 개념 분간을 못하면 HeidiSQL 세션 연결이 안 될 때 이유를 제대로 파악하지 못하고 “비밀번호가 틀렸나?” “방화벽이 안 열렸나?” “root 계정은 분명 있는데…”하며 삽질을 하게된다.
MariaDB root 외부 접속 허용
mariadb 설치 시 최초에 생성되어 있는 root 계정으로는 HeidiSQL로 연결할 수가 없다. 원격으로 연결할 수 있는 root 계정이 없기 때문이다. 혹시 이게 무슨말인지 이해가 안 되면 아래 내용을 천천히 보면 된다.
아무튼 최초 root 계정은 리눅스에서
mysql -u root -p
처럼 로그인하는 방법은 가능한데 이게 바로 로컬 연결이다. mariadb 서버가 설치된 컴퓨터에서 직접 로그인하기 때문에 접근이 가능한 것이다.
반면 HeidiSQL로 세션을 연결한다는 건 윈도우 컴퓨터에서 리눅스 컴퓨터로 접속을 하는 거기 때문에, 다시 말하면 원격으로 세션을 연결하는 거라서 원격 연결이 허용된 root 계정을 mariadb에 생성해야 한다.
create user 'root'@'%' identified by 'root123!@#';
이게 원격(%)에서 접속할 수 있는 아이디는 root 패스워드는 root123!@#인 사용자를 만드는 쿼리다. 리눅스 쉘에서 mariadb에 접속해서 위 쿼리를 사용해 원격 접속용 사용자를 만들어 준다.
3306 포트 방화벽 해제
mariadb 서버 포트를 여는 것도 당연한 거긴한데 은근히 놓치는 경우가 많다. 다시 말하지만 HeidiSQL은 원격으로 사용자 연결을 하는 거기 때문에 방화벽에서 mariadb 서버 포트가 열려있어야 된다.
firewall-cmd --zone=public --permanent --add-port=3306/tcp
centos 7 이상이면 firewall 명령어를 쓸 수 있다. 혹시 안 되면 운영체제에 맞는 방화벽 오픈 명령어를 찾아서 사용한다.
HeidiSQL 외부 접속 허용
HeidiSQL 세션 연결 후 사용자 인증 및 권한 관리를 누르면 사용자 관리자 탭이 나온다. 여기서 사용자를 추가하고 해당 사용자가 접근할 수 있는 데이터베이스, 권한 수준을 정할 수 있다. 물론 다 쿼리로 할 수 있는 작업이지만 UI로 하면 더 편하다.
예를 들어 test라는 사용자를 HeidiSQL로 생성하고 원격 접속을 허용하려면 호스트에서 옵션에 모든 곳에서 접근을 선택하면 된다.
객체 추가를 누르면 구체적으로 어떤 데이터베이스에 어떤 권한 수준을 부여할지 정할 수 있다.
이제 test라는 계정으로도 HeidiSQL 연결이 된다.