
CentOS6.xのhttpdにphpMyAdminをセットアップし、別マシンにおいてあるMySQLに接続しようとしています。
外部マシンにtcpで接続するため、内部ソケットは使用しないと考えておりますが、アクセスしますと、なぜか#2002 Can't connect to local MySQL server ...というエラーメッセージが出ます。
お心あたりがあれば、ご教授ください。
ちなみに、別マシン上(CentOS5.x)で同様にphpmyadmin-2.11.11.3-2を稼動させておりますが、こちらは問題なく稼動しております。
要は、現在稼動しているphpmyadmin2をDBを含めphpMyAdmin3にマイグレーションしたいと考えているわけです。
(DBは現行稼動のものをバックアップして別マシンに再構築しています)
諸元値(関連あると思われるもの抜粋)
OS=CentOS6.3
phpMyAdmin-3.5.2-1(EPELからyum)
php-5.3.3-14(CentOS BASEよりyum)
php-mysql-5.3.3(同上)
mysql-5.1.61-4(同上)
mysql-libs-5.1.61-4(同上)
mysqlクライアントでは問題なくアクセスが可能です。
※アクセスしたときのエビデンスは以下
# mysql -u root -h 10.9.1.7 -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 74
Server version: 5.1.61 Source distribution
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
config.inc.phpには以下のように設定してあります。
/* Authentication type */
$cfg['Servers'][$i]['auth_type'] = 'cookie';
/* Server parameters */
$cfg['Servers'][$i]['host'] = '10.9.1.7';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['compress'] = false;
/* Select mysql if your server does not have mysqli */
$cfg['Servers'][$i]['extension'] = 'mysqli';
$cfg['Servers'][$i]['AllowNoPassword'] = false;
※ちなみにphpmyadmin2では、hostとextensionが異なるのみ
/etc/httpd/conf.d/phpMyAdmin.confの内容は以下
Alias /mysql /usr/share/phpMyAdmin
<Directory /mysql>
Order deny,allow
Deny from all
Allow from all
</Directory>
※現在はテスト中なのでInetから切断されたネットワーク環境においてあります
/etc/my.conf
[client]
socket=/var/lib/mysql/mysql.sock
port=3306
host=10.9.1.7
user=mysql
--
この状態で、httpdを起動し、phpmyadminのフォルダをアクセスすると、userとpassword入力画面まで行きます。
そこで、先にmysqlクライアントで接続可能であったユーザとパスワードを指定すると、冒頭のエラーメッセージが表示されるという具合です。
ちなみに、phppgadminもセットアップしておりますが、こちらは良好に動作しております。
よろしくお願いします。
No.4ベストアンサー
- 回答日時:
CentOS5.xが現に稼動しており、CentOS6.xにマイグレーションしようとしているのですね。
CentOS5.xのphpMyAdminのインストール方法について特に明示はないようですが・・・
CentOS6.xをyumでインストールしているとの記載がありますので、同様にしてyumでインストールしたと推察します。
質問には、config.inc.phpの内容は明記されていますが、格納位置は明示されていません。
phpMyAdmin2では、config読み込みインスタンスは、
new PMA_Config('./config.inc.php')
と、ハードコーディングしています。
これに対してphpMyAdmin-3.5.2では、間接指定となっています。
new PMA_Config(CONFIG_FILE);
このCONFIG_FILEはどこで定義されているかと言うと、
libraries/vendor_config.php:define('CONFIG_DIR', '/etc/phpMyAdmin/');
libraries/vendor_config.php:define('CONFIG_FILE', CONFIG_DIR . 'config.inc.php');
という具合になっています。
従いまして、/usr/shere...ではなく
/etc/phpMyAdmin/config.inc.php
の内容をご確認ください。
ちなみに
phppgadminは当初から
/etc/phpPgAdmin
においてあるので気が付かなかったのではないですか?
回答ありがとうございます。まさにご指摘の通りです。
rpm -qliv でリソース類を確認すべきでした。
/etc/phpMyadin/config.inc.phpはrpmデフォルトのままであり、host='localhost'となっていたままだったので、質問内容のエラーが出ていたわけです。
/usr/shere/phpMyAdmin/config.inc.phpを/etc/phpMyadin/config.inc.phpコピーし、無事想定通りの動作になったことを確認いたしました。
コピーして動作を確認しましたが、単純に
$cfg['Servers'][$i]['host'] = '10.9.1.7';
の部分のみの変更でも想定通りの動作になっていることをあわせてご報告しておきます。
No.3
- 回答日時:
こんにちは。
私の環境でも試してみました。
確かにphpMyAdmin3.xだと外部サーバーに接続できませんでした。
(2.xだとすんなり接続できました。)
色々手直しして接続できるようになりましたので、手順を記載します。
config.php
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['host'] = '10.9.1.7';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['compress'] = false;
$cfg['Servers'][$i]['extension'] = 'mysql';
私の場合ここで「#2000」エラーが発生。
my.cnfの「old_passwords=1」を削除し、MySQLを再起動
次に「#1045」エラーが発生。
該当のMySQLユーザーを削除し、再度作成。
これで外部のDBに接続できるようになりました。
ただ、f_userさんは「#2002 Can't connect to local MySQL server」のエラーが発生しているということなので・・・
CentOS6.xのサーバーのMySQLは接続可能でしょうか?
この回答への補足
phpMyAdminが動いているhttpdサーバのipは、202.xxx.yyy.zzzです。
外部とは、ルータ用としてたてたサーバでPPPoE UnNumberedで接続しています。
現在は、Inetと切り離し、マシン単体で擬似Inetネットワーク環境を構築して接続テストをしています。
(擬似外部サーバはPPPoEサーバが稼動している)
この擬似外部サーバにFireFoxを載せて、http://202.xxx.yyy.zzz/mysql と打鍵してphpMyAdmin画面を表示させています。
DMZのセグメントは10.9.1.0/16で、ここにPostFIXやLDAPやらが、それぞれ別サーバでおいてあります。
MySQLのサーバには、PostgreSQLが同居しており、OSレベルでのFWは通り抜けるようにセットアップしてあります。
(設定の詳細は割愛)
phpMyAdminが載っているhttpdサーバからMySQL稼動サーバへの接続確認は、phpMyAdminの稼動サーバにmysqlクライアント(サーバではない)をyumで載っけて、mysqlコマンドにて接続確認をしております。
※上記の# mysql -u root -h 10.9.1.7 -p 以下のところです
つまり、mysqlで接続確認できているのと、既に稼動しているphpMyAdmin2の設定をほぼそのまま踏襲した設定になっているため、なぜphpMyAdmin3で接続できないのかが謎でした。
どうみても、localhostにアクセスしているわけではないので、ソケットでつなげに行こうとして「内部サーバは動いていません」というエラーメッセージが出るのが腑に落ちないのです。
そりゃそうです。localhost,127.0.0.1にはmysqldなんて動いていないですから。
そのために、tcp接続、10.9.1.7というように書いているのですから。
回答ありがとうございます。
別回答者のお礼欄に記載の通り、epelリポジトリにおいてあるphpMyAdmin3のrpmは、phpMyAdmin2とちがい、config.inc.phpを/etc/phpMyAdminに入れる仕様となっていたのを確認しなかったのが原因でした。
ちなみに、kaz33が実施した場合エラーになったとご報告がありますが、私がインストールしたrpmではhostを変更しただけで、エラーなしに想定通りの動作をいたしました。あわせてご報告しておきます。
No.2
- 回答日時:
接続先のサーバーのポート3306は開けましたか?
デフォルトは閉じていると思いますので、開けていないのでしたらポートを開けてください。
この回答への補足
不明瞭な表現で申し訳ないです。
WEBサーバは直接Inetからアクセス可、DBサーバはDMZにいるとイメージしていただければと。
WEBサーバにmysqlクライアントがおり、クライアント単体で操作すると問題なくDBに対して読み書きが行えております。
※上記の# mysql -u root -h 10.9.1.7 -p 以下のところです
つまり、phpMyAdmin3が入っているWEBサーバからアクセスターゲットとなるMySQLが稼動しているDBサーバに対して、ネットワーク的、FW的、さらにはGRANT的にも問題なく接続できているとお考えください。
なので、yumで入れたPHPライブラリかphpMyAdmin3本体がおかしいのかな、と思っているしだいです。
ちなみに、まったく別なサーバ(CentOS5.x)にphpMyAdmin2を入れておりますが、向け先を上記DBサーバにしてアクセスするとうまく表示してくれています。
要は、ネットワーク構成は同じで、CentOS5.xをCentOS6.3に、phpMyAdmin2をphpAdmin3にマイグレーションしようと考えているわけです。
とりあえず
「回答ありがとうございます」
と書いておきます。
私の説明不足が悪かったということで。
webサーバからsqlサーバにアクセスしようとしていて、webサーバにインストールしたmysqlクライアントから、mysqlサーバには問題なくアクセス可能、DB更新可能と説明したつもりだったのですが。
(これを以ってしてphpライブラリかphpMyAdmin3がおかしいと切り分けたしだい)
もう少し日本語力を磨いておきます。
No.1
- 回答日時:
状況がよくわからないのですが
mysqlをインストールしてある外部サーバーにhttpdとphpMyAdminをインストール
するという選択肢はないのですか?
また、mysql外部、httpdとphpMyAdmin内部だとして、mysqldに接続できるポートは
確保されていますか?
さらにmysqlデータベースのhostやuserテーブルできちんとアクセス制限を
外してありますか?
この回答への補足
不明瞭な表現で申し訳ないです。
WEBサーバは直接Inetからアクセス可、DBサーバはDMZにいるとイメージしていただければと。
WEBサーバにmysqlクライアントがおり、クライアント単体で操作すると問題なくDBに対して読み書きが行えております。
※上記の# mysql -u root -h 10.9.1.7 -p 以下のところです
また、まったく同様なネットワーク構成で、現状としてphpMyAdmin2が動いておりますので、phpMyAdmin3本体かWEBサーバに入れたphpのライブラリがおかしいと考えておりますが・・・
よく目にするのは
「tcp接続にして、localhostではなくIPを直接指定する」
です。
別サーバに立てたMySQLで成功したよ!というページにはまだお目にかかっていません。
とりあえず
「回答ありがとうございます」
と書いておきます。
私の説明不足が悪かったということで。
一発で解決に至る回答を期待しているわけではないですが、状況が分からないまま、回答してほしくなかったです。
そのために、構成やcinfigをさらしているわけですから。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL 参考書に従って入力したつもりでしたが、最後はエラーがでました。 1 2022/09/28 03:45
- その他(プログラミング・Web制作) mariadbでのエラー 1 2022/11/15 12:31
- MySQL MySQLのテーブル作成でハイフン - は使用できないのでしょうか? 2 2022/10/21 16:50
- MySQL Mac です。ローカルホストの phpMyAdmin にアクセスできません。 1 2023/06/06 17:14
- MySQL テーブル作成です。どこかのスペルが間違っているか記号など スペースかな? 1 2022/10/01 05:08
- MySQL mysqlがインストールされているのかどうか 1 2023/06/05 14:19
- MySQL 何にかが違うから エラーなんでしょうね! 2 2022/09/18 05:28
- PostgreSQL PostgressからMySQL(MariaDB)へ構造を変更する際のTimestamp等について 2 2023/04/04 12:09
- MySQL mysqlがインストールされているのかわかりません 1 2023/06/05 02:26
- PHP PHP & MySQL: Server-side Web Development ペーパ 1 2022/04/19 19:23
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バージョンの違うMySQLのリモー...
-
MySQLサーバのコンピュータ名変...
-
mysql_close();の必要性について
-
XAMPPのMySQLを外部から接続で...
-
副問合せにLIKE文を使う方法は...
-
mysqlがインストールされている...
-
SQLのVARCHARとVARCHAR2の違い
-
rootのパスワード
-
MYSQLサービス停止時にWindows...
-
SQL開発環境ソフトウェアである...
-
MySQLカラム名は日本語と英数字...
-
実行ファイルのパス
-
INT型は金額の型に使用するべき...
-
ODP.NETのバージョン確認
-
プライマリーキーの昇順でソー...
-
VBAで変数内に保持された二次配...
-
パスワード入力を省略したい
-
phpで複数のDBを使用した場合の...
-
Movable type【ブログ】の設置...
-
ERROR 1054 (42S22) 原因不明です
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
MySQL sleep が溜まる
-
XAMPPのMySQLを外部から接続で...
-
MySQLでエラーがでて前に進めま...
-
MySQLサーバのコンピュータ名変...
-
クエリー実行中に強制終了した場合
-
cseの使い方について
-
MySQLにリモートホストから接続...
-
さくらVPSで mysql_connect出き...
-
mysql_close();の必要性について
-
データベースについて
-
ログイン履歴について
-
Puttyでサーバー上のMySQLを操...
-
VB.NETからMYSQLへ接続 (する...
-
DBから取得した値を加工して別...
-
PHPとデータベースの接続ができ...
-
ブラウザからの接続
-
win7でphpMyAdminが使えない?
-
localhostで接続できない!
-
ACCESSとXサーバーをODBCで接続...
-
MySQLのリモート接続
おすすめ情報