Help us understand the problem. What is going on with this article?

MySQLには2つの通信方式があるんですってことを知った話

とある古いプロダクトのDBに入れない・・・

いつもの下記コマンドでログインを試みましたところ・・・

$ mysql -uroot -p

下記の出力が出てきてしまい、入れません。

Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'

sockファイルが無いみたいなので、これを使って、

$ ps aux | grep mysql
root      9004  0.0  0.0 115356  3204 ?        S    Jan22   0:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/tmp/mysql.sock --pid-file=/var/run/mysqld/mysqld.pid --basedir=/usr --user=mysql
mysql     9208  0.0 11.3 1504812 459820 ?      Sl   Jan22 133:13 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/tmp/mysql.sock

これを見る限り、tmpの下にありそうですね。

シンボリックリンクを貼ってあげればよさそう・・・と思ったのですが、このサーバーあまりにも昔のものすぎてサーバー管理者不明、ドキュメントも無いのでsudoでコマンド実行するためのパスワードが不明ということで、OMG状態でしたので今回は、mysqlになんとか接続できる方法をベテランのエンジニアの方に教えてもらいました。

解決策

mysqlの二つ目の通信方法、TCP接続を利用する。

mysqlのデータベースでのユーザーはhostと紐づけられており、

mysql> select host,user from mysql.user;
+-----------+------------------+
| host      | user             |
+-----------+------------------+
| localhost | dev-user         |
| localhost | mysql.infoschema |
| localhost | mysql.session    |
| localhost | mysql.sys        |
| localhost | root             |
+-----------+------------------+

上記のようになっているので、-hのオプションを指定することによって、ソケット通信を使用せずに、TCP接続で入ることができる。ソケットファイルが無くて通信できなくても、こっちを使えばいいじゃないっていうお話でした。

$ mysql -h 127.0.0.1 -u ユーザー名 -p

もしくは

$ mysql -h localhost -u ユーザー名 -p

こちらでもDBに接続することができる。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away