Raspbian의 Mariadb: 소켓을 통해 로컬 MySQL 서버에 연결할 수 없습니다.

Raspbian의 Mariadb: 소켓을 통해 로컬 MySQL 서버에 연결할 수 없습니다.

최신 Raspbian을 실행하는 내 집 Raspberry pi에 대한 "깨끗한" 이미지를 설정하고 있는데 mariadb 데이터베이스를 설치할 때 작은 문제를 발견했습니다.

지금까지 내가 취한 조치는 다음과 같습니다.

  sudo apt-get install -y mariadb-server

  sudo nano /etc/mysql/my.cnf

my.cnf에 다음 줄을 추가합니다.

  [mysqld]
  datadir=/mnt/RaspberryData/mysql
  socket=/mnt/RaspberryData/mysql/mysql.sock
  [client]
  port=3306
  socket=/mnt/RaspberryData/mysql/mysql.sock

경로에는 /mnt/RaspberryData/mysql하드 링크를 통해 구성된 이전 설치의 데이터베이스 정보가 포함되어 있습니다. 이는 문제가 될 수도 있고 아닐 수도 있습니다.

그런 다음 다음을 실행합니다.

  sudo sytemctl start mariadb
  journalctl -u mariadb

이것은 내가 문제에 직면했을 때입니다.

Jun 22 19:18:33 raspberrypi systemd[1]: Starting MariaDB 10.3.22 database server...
Jun 22 19:18:34 raspberrypi mysqld[2623]: 2020-06-22 19:18:34 0 [Note] /usr/sbin/mysqld (mysqld 10.3.22-MariaDB-0+deb10u1) starting as process 2623 ...
Jun 22 19:18:35 raspberrypi systemd[1]: Started MariaDB 10.3.22 database server.
Jun 22 19:18:35 raspberrypi /etc/mysql/debian-start[2662]: /usr/bin/mysql_upgrade: the '--basedir' option is always ignored
Jun 22 19:18:35 raspberrypi /etc/mysql/debian-start[2662]: Looking for 'mysql' as: /usr/bin/mysql
Jun 22 19:18:35 raspberrypi /etc/mysql/debian-start[2662]: Looking for 'mysqlcheck' as: /usr/bin/mysqlcheck
Jun 22 19:18:35 raspberrypi /etc/mysql/debian-start[2662]: Version check failed. Got the following error when calling the 'mysql' command line client
Jun 22 19:18:35 raspberrypi /etc/mysql/debian-start[2662]: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
Jun 22 19:18:35 raspberrypi /etc/mysql/debian-start[2662]: FATAL ERROR: Upgrade failed

보시다시피, 소켓을 통해 연결을 시도하는 일종의 업데이트 프로세스가 있지만 /var/run/mysqld/mysqld.sock해당 경로에는 아무것도 없습니다( mysqld.pid파일만 있음).

한 위치에서 다른 위치로 데이터를 이동하는 방법에 대한 가이드에는 실제로 데이터베이스에 들어가서 쿼리를 실행할 수 있기 때문에 일부 프로세스 등이 생략된 것 같습니다. 그렇다면 내가 여기서 무엇을 놓치고 있는 걸까요?

답변1

좋아, 내 구성에 남은 것을 찾았습니다.

이것은 아마도 약간 과잉일 수 있다는 점을 명심하십시오(읽기: 필요한 것보다 더 많은 파일 수정). 그러나 더 현명한 사람이 나를 가르쳐주지 않는 한 나는 이것에 만족할 것입니다:

이제 파일 읽기를 시작해 보겠습니다 my.cnf.

# The MariaDB configuration file
#
# The MariaDB/MySQL tools read configuration files in the following order:
# 1. "/etc/mysql/mariadb.cnf" (this file) to set global defaults,
# 2. "/etc/mysql/conf.d/*.cnf" to set global options.
# 3. "/etc/mysql/mariadb.conf.d/*.cnf" to set MariaDB-only options.
# 4. "~/.my.cnf" to set user-specific options.

내 문제는 정의된 소켓을 사용하려는 업그레이드 프로세스가 있다는 것입니다.어딘가에. 분명히 "어딘가"는 "구성 파일에"를 의미하므로 파일을 자세히 살펴보았습니다.

계속해서 sudo nano나열된 파일(특히 아래 파일)을 살펴보면 /etc/mysql/mariadb.conf.d/*.cnf/run/ 폴더의 원래 값을 유지하는 소켓에 대한 여러 항목이 표시되었습니다. 그래서 "만일의 경우"라는 새 폴더로 변경했습니다. 밝혀졌습니다. 파일 중 하나가 제가 작성했어야 할 댓글로 나열되어 있었습니다 Not forget to update debian.cnf if you change the socket. 데이터베이스 빌더님, 감사합니다. 왜냐하면 당신이 제게 진짜 답변을 주셨기 때문입니다. 왜냐하면 debian.cnf, 엄청난 "건드리지 마세요" 댓글이 있음에도 불구하고 이 부분이 포함되어 있기 때문입니다. 아래에:

[mysql_upgrade]
host     = localhost
user     = root
password =
socket   = /var/run/mysqld/mysqld.sock
basedir  = /usr

이것이 바로 붕괴가 일어나는 방식인 것 같습니다.

따라서 요약하자면, 나열된 모든 파일을 확인 my.cnf하고 만약을 대비해 소켓 값을 변경하세요. 반품 debian.cnf. 충분히 모험심이 느껴진다면 변화를 주고 debian.cnf무슨 일이 일어나는지 말해주세요.

이제 데이터베이스가 작동하고 있으므로 아직 설치해야 할 것들이 많이 남아 있습니다.

답변2

Raspberry Stretch에서 Buster로 업데이트한 후에도 동일한 오류 메시지가 나타납니다. 비어 있지 않지만 /var/run/mysqld/mysqld.sock( ls -all) 내부 데이터를 구성할 수 없습니다.

모든 파일( sudo nano)을 살펴보았는데 그 중 하나가 내 문제를 해결했습니다! 다행히 이전 구성( /etc/mysql/mariadb.conf.d/50-server.cnf.old)이 저장되었습니다!

  • 50-server.cnf문제가 발생할 경우를 대비해 새 파일을 새 이름으로 저장하세요. 예:50-server_very_old
  • sudo nano열기 50-server.cnf.old, 삭제 및 저장을 사용하여 old새 버전으로 만드세요 50-server.cnf.
  • 시스템을 다시 시작하면 모든 것이 이전과 같습니다!

관련 정보