Я устанавливаю «чистый» образ для своего домашнего Raspberry pi с последней версией Raspbian и обнаруживаю небольшую проблему при установке базы данных 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
).
Я предполагаю, что в руководствах по перемещению данных из одного места в другое пропущен какой-то процесс или еще что-то, так как я действительно могу войти в базу данных и выполнять запросы. Итак, что я здесь упускаю?
Хорошо, я нашел то, что осталось в моей конфигурации.
Имейте в виду, что это может быть немного излишним (читать :изменять больше файлов, чем нужно ), но если кто-то более мудрый не придет меня учить, я буду доволен этим:
Итак, начнем с чтения файла 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
Кажется, именно этот процесс и дал сбой.
Итак, tl;dr :Просмотрите все файлы, перечисленные в my.cnf
и на всякий случай измените значение сокета. Также debian.cnf
. И если вы чувствуете себя достаточно предприимчивым, измените только debian.cnf
и, пожалуйста, расскажите мне, что произошло.
Теперь, когда у меня работает база данных, мне нужно установить чертову кучу вещей.