Kali Linux에서 Mysql 설치 및 C++ 환경 설정(Mysql root password setting)
오늘은 Kali Linux환경에서 Mysql 설치 및 C++에서 이용하기 위한 환경 설정을 해보도록 하겠습니다.
우선 설치는 Mysql이 기본적으로 Kali Linux에 설치되어 있으므로 그것을 이용하도록 하겠습니다(MariaDB).
C++에서 Mysql을 연동하여 사용하기 위해 아래의 라이브러리가 이용됩니다.
따라서 아래 명령어로 설치를 먼저 진행합니다.
# apt-get install libmysqlcppconn*
그러면 C++과 Mysql을 연동하기 위한 라이브러리는 모두 설치되었습니다.
그런데, Mysql이용시 약간의 설정이 요구됩니다.
기본적으로 Mysql을 이용한 적이 없으시다면 아래의 명령어를 통해.Mysql에 접속할 때에, root에 대한 인증절차 없이 바로 root권한으로 로그인 되는것을 볼 수 있습니다.
# mysql -u root
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2 "No such file or directory")
에러가 발생한다면 mysql이 동작중이지 않은 것 이므로 아래의 명령어를 통해 서비스를 동작시킨다.# service mysql start
이렇게 되면 보안상의 문제가 있을 뿐더러, C++에서 연동하여 사용할때에 Database에 접속도 정상적으로 되지 않습니다.
따라서, 설정을 바꿔주어야 합니다.
위에서 확인하시는 바와 같이 root의 plugin이 unix_socketd 으로 되어 있습니다.
이것을 변경해주어야 하는데 그전에 아래의 명령어로 root 계정에 대한 Password를 설정 해줍니다.
MariaDB [mysql] > ALTER USER 'root'@'localhost' IDENTIFIED BY 'P@SSW0RD';
위의 명령어의 syntax error가 발생하시는 분들은 아래의 명령어로 시도해 보시길 바랍니다.
MariaDB [mysql] > SET PASSWORD FOR 'root'@'localhost' = PASSWORD('P@SSW0RD');
설정이 정상적으로 완료되었다면, 위의 plugin을 변경해 주도록 하겠습니다.
MariaDB [(none)] > USE mysql;
MariaDB [mysql] > UPDATE user SET plugin='mysql_native_password' WHERE User='root';
MariaDB [mysql] > FLUSH PRIVILEGES;
MariaDB [mysql] > exit;
# service mysql restart
여기까지 정상적으로 동작이 완료되었다면, C++에서 mysql을 사용할 수 있습니다.
다음에는 위의 과정으로 완료한 설정을 통해 C++에서 mysql을 연동 및 사용을 해보도록 하겠습니다.
참고 : https://stackoverflow.com/questions/39281594/error-1698-28000-access-denied-for-user-rootlocalhost