mysql 데이터베이스는 기본 포트의 localhost에서 TCP 연결을 허용하지 않습니다.

mysql 데이터베이스는 기본 포트의 localhost에서 TCP 연결을 허용하지 않습니다.

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';

이것이 다른 누군가에게 도움이 되기를 바랍니다. 이것은 이상한 일입니다. 모든 분들의 도움에도 감사드립니다.

관련 정보