質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

Q&A

解決済

2回答

4957閲覧

Centos7 phpmyadmin,WordPress localhostだと接続できない(127.0.0.1はOK)

leo

総合スコア11

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

0グッド

1クリップ

投稿2017/12/05 08:13

編集2017/12/06 07:52

###前提・実現したいこと
phpMyAdminのconfig.inc.phpを設定することなく、ログインしたい。
($cfg['Servers'][$i]['host'] = 'localhost';での接続)

###発生している問題・エラーメッセージ

#2002 MySQL サーバにログインできません centos7でmysqlとphpをソースインストールした際に、上記エラーとなりました。 centos6やdebian6,7ではこのようなことがなかったのですが、config.inc.phpの $cfg['Servers'][$i]['host'] = 'localhost'; を $cfg['Servers'][$i]['host'] = '127.0.0.1'; にすると接続できました。 socketの指定がうまくいってないのかと、my.cnfおよびphp.iniを確認しても問題なく /tmp/mysql.sockが指定されてました。 ちなみにwordpressも同様でした。 wp-config.phpのdefine('DB_HOST', 'localhost'); だとうまく接続できず、 wp-config.phpのdefine('DB_HOST', '127.0.0.1'); だと接続できます。

###該当のソースコード

ここにご自身が実行したソースコードを書いてください

###試したこと
試しに、yumでphpとMySQLをインストールしなおすとconfig.inc.phpがなくても接続できました。
問題の切り分けのため、phpはソース、mysqlはyumにしても、接続できました。

なので、yumとソースインストールでMySQLのsocketの挙動が違うのではないかと想像できるのですが、
ソースインストールしたmysqlのどこを修正すればうまく動作するのかが不明でした。

###補足情報(言語/FW/ツール等のバージョンなど)
CentOS Linux release 7.4.1708 (Core)
PHP 7.1.10(php5.6系も同様でした。)
MySQL 5.6.38

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

恐らくターミナルからも

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

ではログイン可能で

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

ではログイン不可ではないかと思います。

MySQLサーバーにログインして

select user,host from mysql.user; ```の結果が

+-----------+-----------+
| user | host |
+-----------+-----------+
| ユーザー | 127.0.0.1 |
| ユーザー | ::1 |
+-----------+-----------+

多分このようにlocalhostが無いのが原因だと思います。 なので

CREATE USER 'ユーザー名'@'localhost' IDENTIFIED BY 'パスワード';

を実行してlocalhostに対するユーザーを追加して以下のようになればlocalhostでログインできるようになると思います。

+-----------+-----------+
| user | host |
+-----------+-----------+
| ユーザー | 127.0.0.1 |
| ユーザー | ::1 |
| ユーザー | localhost |
+-----------+-----------+

投稿2017/12/06 08:42

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

leo

2017/12/06 12:32

ご回答ありがとうございます! 返事が遅くなり申し訳ありません。 試したところ、 mysql -h localhost -u ユーザー名 -p で接続ができており、 以下のコマンドを実行したところ、 mysql> select user,host from mysql.user; +-------------+-----------+ | user | host | +-------------+-----------+ | root | 127.0.0.1 | | root | ::1 | | | localhost | | test | localhost | | root | localhost | | | user2 | | root | user2 | +-------------+-----------+ 7 rows in set (0.00 sec) と、localhostの設定がある状態でございます。 しかしながら、phpMyAdminで接続すると、#2002 MySQL サーバにログインできません のエラーが表示され、localhost接続ができてない状況でございました。 ほかに確認事項や対象方法等ございましたら、ご教授いただけますでしょうか。 よろしくお願いいたします。
退会済みユーザー

退会済みユーザー

2017/12/06 13:08

違いましたか・・・ エラー内容を書かれてたのですね。失礼しました。 このサイトとか参考になりませんか? 【phpMyAdmin】#2002 MySQL サーバにログインできませんのときの対処法 http://tweeeety.hateblo.jp/entry/2015/07/11/191823
leo

2017/12/06 14:47

早速のご確認ありがとうございます。 いただきました、リンク先ですが、既に確認済みの内容でございました。 この手のエラーはこのリンクの問題で解決できているようで、 グーグルで検索してもほぼこの情報しか見つけることができませんでした。 根本的な原因は一緒なのかもしれませんが、php.iniもmy.cnfも 実際稼働しているsocketの指定は同一の場所を指定してました。 centos6では問題なく接続できること、Centos7の場合でも、yumだとうまくいくのがなぞで、何か設定でうまく動作すればと試してはいるのですがうまくいかな状況でございます。 また、確認事項やアイデア等ございましたら、ぜひご教授くださいませ。 よろしくお願いいたします。
退会済みユーザー

退会済みユーザー

2017/12/07 08:15

>実際稼働しているsocketの指定は同一の場所を指定してました。 この意味が分からないです。 http://www.eastforest.jp/esthome/mysql/3600 上記サイトを参考にMySQLをソースからインストールしてphpMyAdminを開いたら、確かにconfig.inc.phpがlocalhostではログインできず127.0.0.1に直すとログインできました。 PHPは面倒だったのでremiの7.1です。 以下の修正でlocalhostでログイン可能になりました。 尚、my.cnfにsocketの指定はしていません。 mysql.sockの場所を調べる # find / -name mysql.sock /usr/local/mysql/mysql.sock php.iniでsocketに何も未指定なので/usr/local/mysql/mysql.sockを指定 # vi /etc/php.ini pdo_mysql.default_socket= mysqli.default_socket= ↓ pdo_mysql.default_socket= /usr/local/mysql/mysql.sock mysqli.default_socket= /usr/local/mysql/mysql.sock # systemctl restart httpd でもYUMでインストールしたMySQLの場合、何も触らなくてもlocalhostでアクセスできるのは何故か?となるんでしょうね? CentOSデフォルトのMySQLのインストール先が/var/lib/mysql/で、デフォルトでそれを見るようになっており、php.iniに指定が無ければ/var/lib/mysql/を見るんでしょう(多分) なので ディレクトリが無ければ作成 # mkdir /var/lib/mysql シンボリックリンク作成 # ln /usr/local/mysql/mysql.sock /var/lib/mysql/ またはMySQLをコンパイルする際に/var/lib/mysql/にインストールするように指定するのが正しい方法なのかもしれませんが詳しくは分かりません。
leo

2017/12/07 10:32

>>実際稼働しているsocketの指定は同一の場所を指定してました。 >この意味が分からないです。 きちんと伝える文章になっておらずすみません。。 ソースインストールの際にはmy.cnfにて/tmp/mysql.sockを指定しております。 実際にも/tmp配下にmysql.sockができており、php.iniも/tmp/mysql.sockを指定して接続を試したのですが、うまくいかない状況でした。 ご指摘いただいた、シンボリックリンク作成 # ln /usr/local/mysql/mysql.sock /var/lib/mysql/ で、php.iniの指定も/var/lib/mysql/mysql.sockを指定するとつながるようになりました。 /tmp/mysql.sockだとなぜダメなのか不明ですが、一度この設定で様子を見ようと思います。 Space-Monkeyさんのおかげで、やりたいことは実現できました。 何度もお付き合いいただきありがとうございました。 改めてお礼申し上げます。
退会済みユーザー

退会済みユーザー

2017/12/07 11:08

シンボリックリンクを作れば多分php.iniのmysql.sockの指定は不要だと思います。 色々試してみてください。
TaichiYanagiya

2017/12/07 14:14

CentOS 7 で systemd 配下の httpd の場合、/lib/systemd/system/httpd.service で `PrivateTmp=true` となっていて、/var/tmp/, /tmp/ は独自のネームスペースとなるため、/tmp/mysql.sock にはアクセスできません。
leo

2017/12/08 03:40

Space-Monkeyさん、 何度もコメントいただきありがとうございます! php.iniは消すと2022エラーがでましたので、php.iniのデフォルトは/tmp/mysql.sockあたりになっているのかなと思われます。で、/tmp/mysql.sockは指定してもうまく動かないため、/var/lib/mysql/mysql.sock等の指定が必要な感じでした。
leo

2017/12/08 03:40

TaichiYanagiyaさん ご回答ありがとうございます。 Cent7のsystemdのserviceではそのような設定がなされていたのですね。勉強不足でした。 試しにhttpd.serviceの設定をfalseにしたのですが、それだけだとうまく/tmp/mysql.sockを読み込んでくれないのか、これまで通り2022エラーとなっておりました。 ちなみにfalseにした場合、デメリットや不都合な状況は発生するのでしょうか。であれば、falseにしない設定で調整が必要なのかなと思ってます。
guest

0

/etc/hosts で localhost::1 (IPv6) に解決されるからだと思います。
::1 行の localhost, localhost.localdomain を削除するといいと思います。

投稿2017/12/06 08:04

TaichiYanagiya

総合スコア12141

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

leo

2017/12/06 14:48 編集

ご回答ありがとうございます。 返信が遅くなり申し訳ありません。 /etc/hostsで ::1 localhost6 localhost6.localdomain6 のようにして、localhost, localhost.localdomainを除外してみたのですが、#2002 MySQL サーバにログインできません のエラーが表示され、localhost接続ができてない状況でございました。 yumでmysqlをインストールしたときは/etc/hostsは特にいじらずとも接続できたのですが。。。 ほかに確認事項や対応方法はございますでしょうか。 お手数おかけいたしますが、よろしくお願いいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問