はじめまして、学生アルバイトのYamamotoです。大学院に在学中の修士1年で、情報系の研究室に所属しております。

今回は、私が研修中に数時間格闘したMariaDBのログインエラーについて、

  • そもそもMariaDBとは何か
  • ログイン時に直面したエラーと解決法
  • 私がしてしまった間違い

の流れでご紹介いたします。

MariaDBとは?

MariaDBは、無料で使用することができるRDBMS(リレーショナルデータベース管理システム)の1つで、RDBMSの主流となっているMySQLから派生してできたものです。

MariaDBは、

  • MySQLとの互換性が高いこと
  • 高い処理性能をもつこと
  • 無料で使用できること

などの理由から現在注目を集めており、世界中でシェアを拡大しております。

ログイン時に直面したエラーと解決法

私は今回、WSL上でUbuntu18.04を使用しました。また、今回のMariaDBのバージョンは以下のようになります。

mysql  Ver 15.1 Distrib 10.4.17-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

この環境の下で、ログインを試みました。なお、ログインには以下のコマンドを使用します。

$ mysql -u ユーザー名 -p パスワード

すると、このようなエラーが出ました。

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

このエラーは、 /var/run/mysqld/mysqld.sockファイルが存在しないため接続できない ことを示しており、これが出た場合は そもそもMariaDBが起動されていない可能性 があります。

そこで、まず以下のコマンドで起動を試みました。

$ service mysql start
以下のような結果が出てきたら成功です。
 * Starting MySQL database server mysqld    [ OK ]

また、同じく起動させる方法として

$ systemctl mysql start
というコマンドがあります。

systemctlコマンドはserviceコマンドと比較すると、 システムを自動的に起動させることができる という点で強みがありますが、私は今回

  • そもそもsystemctlが使えなかった
  • 起動させるだけならserviceコマンドでよい

という理由で、serviceコマンドを使用しました。

そして再びログインすると…

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 40
Server version: 10.4.17-MariaDB-1:10.4.17+maria~bionic-log mariadb.org binary distribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

ログインに成功しました。

私がしてしまった間違い

次に、上で紹介したエラーが出たときに、私が間違えて行ってしまったことを紹介します。 解決法ではないので、真似しないようにしてください。

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

先ほどもご紹介したこのエラーですが、これが示すのは /var/run/mysqld/mysqld.sockファイルが存在しないため接続できない ということでした。

存在しないなら、新たに作ればよいのでは?

と考えた私は、以下のコマンドでソケットファイルを作成しました。

$ sudo touch /var/run/mysqld/mysqld.sock

そして再度ログインを試みた際、新たなエラーが発生しました。

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (13)

このように、ソケットファイルを手動作成することで新たなエラーが発生する場合があります。

本来ソケットファイルは、起動時に自動作成されるものであるため、 存在しないと言われたらまずは起動されているかの確認をするようにしましょう。

最後に

今回私は、WSL上でUbuntuを用いてMariaDBにログインする際の、エラーと原因、そして解決策についてご紹介しました。今回私がお伝えしたいことは、

  • ソケットファイルが存在しない場合は、まず起動されているかを確認する
  • 起動する場合、systemctlだけでなくserviceでも行える

の2点です。

最後までお読みいただきありがとうございます。本記事が、私と同様のエラーで苦労している方にとって少しでも参考になれば幸いです。

Pocket