私は最新の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 /フォルダの元の値を保持するソケットに関するいくつかのエントリが表示されました。だから「もしあれば」という新しいフォルダに変更しました。判明しました。ファイルの1つが私が書いたべきコメントとしてリストされていました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
)を見ましたが、そのうちの1つが私の問題を解決しました!幸い、以前の設定(/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
。- システムを再起動すると、すべてが以前と同じです!