![mysql 데이터베이스는 기본 포트의 localhost에서 TCP 연결을 허용하지 않습니다.](https://linux55.com/image/162828/mysql%20%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4%EB%8A%94%20%EA%B8%B0%EB%B3%B8%20%ED%8F%AC%ED%8A%B8%EC%9D%98%20localhost%EC%97%90%EC%84%9C%20TCP%20%EC%97%B0%EA%B2%B0%EC%9D%84%20%ED%97%88%EC%9A%A9%ED%95%98%EC%A7%80%20%EC%95%8A%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
C++ 프로그램을 사용하여 데이터베이스에 연결하려고 합니다. 나는 사용하고있다mysqlcpp 커넥터프로그램은 내 로컬 컴퓨터에서 실행되지만 SSH 로그인 후 원격 우분투 서버에서 실행하려고 하면 다음과 같은 메시지가 나타 tcp://localhost:3306
납니다 .tcp://127.0.0.1:3306
terminate called after throwing an instance of 'sql::SQLException'
what(): Unknown MySQL server host 'tcp' (2)
방금 기본 포트 3306에서 localhost에 연결을 시도했습니다. mysql -u root -p
그런 식으로 입력하고 로그인하여 수동으로 연결할 수도 있습니다 .
을 사용하여 데이터베이스에 로그인한 후 mysql -u root -p
입력할 수 있으며 설정이 "꺼짐"으로 show variables;
표시됩니다 .skip-networking
MySQL은 네트워크에서 수신 대기 중입니다.
netstat -a | grep mysql
tcp 0 0 localhost:mysql 0.0.0.0:* LISTEN
unix 2 [ ACC ] STREAM LISTENING 20025 /var/run/mysqld/mysqld.sock
변경하는 것을 잊은 구성이 있습니까? "(2)"은(는) 무슨 뜻인가요?
답변1
귀하의 제안에 감사드립니다. C++ 코드를 변경하지 않고 mysqlcppconnector를 다시 설치하여 문제를 해결했습니다. 나는 이것이 빌드와 관련된 것이라고 의심하기 시작하여 이것을 물었습니다.여기.
두 설치의 차이점에 대한 참고 사항: 1.1.12를 사용하는 대신 최신 버전으로 다시 설치했으며, 파일을 수동으로 복사하여 설치하지 않았습니다.
sudo apt-get install libmysqlcppconn-dev
우연인지는 모르겠지만, 다운로드 페이지에서 "이전 GA 버전을 찾으시나요?"를 클릭하면 더 이상 버전 1.1.12로 리디렉션되지 않고 대신 1.1.13으로 리디렉션된다는 점도 확인했습니다.
그 후 프로그램이 실행됩니다. 글쎄, 오류가 발생했지만 다른 오류가 발생했으며 이 문제에 대한 수정은 매우 간단했습니다. 그만한 가치가 있는 만큼,
Access Denied for User 'root'@'localhost'
입력하여 권한을 확인한 SELECT user,authentication_string,plugin,host FROM mysql.user;
결과 localhost에 mysql_native_password 권한(auth_socket만)이 없음을 발견하여 다음을 수행하여 변경했습니다.
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'secret_password_here';
이것이 다른 누군가에게 도움이 되기를 바랍니다. 이것은 이상한 일입니다. 모든 분들의 도움에도 감사드립니다.