programing

MariaDB 연결 문제(Digital Ocean)

css3 2023. 8. 8. 21:46

MariaDB 연결 문제(Digital Ocean)

많이 논의된 ER_NOT_Supported_를 받고 있습니다.Digital Ocean Droplet에서 실행되는 Ubuntu 20.04에 설치된 최신 MariaDB 버전 10.4.14의 AUTH_MODE.컨텍스트:

  1. 원격(dev PC의 MySQL Workbench에서)과 로컬(SSH에서 Ubuntu MariaDB 클라이언트 실행에서) 모두 Ubuntu MariaDB 인스턴스에 연결할 수 있습니다.
  2. 내 Vue 앱(익스프레스 백엔드 포함)이 ER_NOT_SUPPORTED_를 수신합니다.앱이 데이터베이스를 처음 쿼리하려고 할 때 AUTH_MODE 오류가 발생했습니다.
  errno: 1251,
  sqlMessage:
   'Client does not support authentication protocol requested by server; consider upgrading MariaDB client',
  sqlState: '08004',
  fatal: true }
  1. 내 앱(동일 코드)은 내 로컬 dev PC의 MariaDB 인스턴스(버전: 10.4.13)에서 실행하는 데 문제가 없습니다.그것은 몇 달 동안 견고했습니다.

나는 MariaDB 서버와 클라이언트를 업그레이드했습니다.저는 웹을 검색하여 이 문제에 대한 많은 활동을 발견했고, 가장 일반적인 해결책, 즉 mysql_native_password 인증을 사용하도록 MariaDB 사용자를 변경하는 방법을 시도했습니다.ALTER USER 'admin'@'localhost' IDENTIFIED WITH mysql_native_password BY PASSWORD('password')

저는 관련이 있을 것 같은 긴 샷을 몇 개 더 시도했습니다.이 중 어떤 것도 차이를 만들지 않았습니다.플러시 권한을 수행했고 서버를 다시 시작했으며 제가 생각할 수 있는 모든 것을 했습니다.내가 제대로 하고 있는지 확인하기 위해 적어도 2~3번은 모든 것을 시도했습니다.저는 수년간 MariaDB를 사용해 왔지만(Linux 포함) MariaDB에 대한 전문가로는 다른 요령을 알 수 없습니다.

MariaDB를 포기하고 MySQL(Ubuntu의 이전 버전에서 작업)로 돌아가기 전에, 제가 무엇을 더 시도할 수 있을까요?Windows나 Raspbian Linux가 아닌 Ubuntu를 통해 배포해야 합니다!

답은 아니지만 댓글을 달기엔 너무 길 수도 있어요 (문자를 미리 세지 않았어요 :-

ER_NOT_SUPPORTED_AUTH_MODE는 서버 오류이며 다음과 같은 상황에서 발생합니다.

  • 클라이언트가 4.1 이전 인증을 보내고 서버가 3.23 프로토콜을 더 이상 지원하지 않음

  • 인증 간 스크램블 기간이 이전에서 새 스크램블 기간으로 변경된 클라이언트

  • 서버에서 클라이언트 측 인증을 알 수 없거나 지원하지 않습니다.

정확한 이유를 찾기 위해서는 다음과 같은 여러 가지 방법이 있습니다.

  1. 가장 쉬운 방법은 wireshark 또는 tcpdump로 트래픽을 캡처하고 wireshark를 통해 시각화하고 서버 및 클라이언트 hello 패킷을 확인하는 것입니다.인증이 재협상되기 때문에 세 개 이상의 hello 패킷이 있을 가능성이 높습니다.

  2. MariaDB 서버의 디버그 세션을 시작하고(DO?!에서는 불가능할 수 있음) sql/sql_acl.cc에서 중단점을 설정합니다. 이 파일은 사용자 인증을 담당합니다.

vue 앱에 대해 잘 모르지만, 정말로 node.js를 사용하고 있습니다. MariaDB Nodejs를 사용하여 구성했습니까?

행운을 빕니다.

언급URL : https://stackoverflow.com/questions/64071541/mariadb-connection-issue-digital-ocean