최신 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
.- 시스템을 다시 시작하면 모든 것이 이전과 같습니다!