• 締切済み

chroot環境とmysqlの接続について

現在、debian上でapacheをchroot環境で動かしています。chrootのcgi(perl)からDBI::mysql 経由でmysqlに接続しようとしているのですが、出来ません。 原因としては、mysqld.sockがcgiから読み書きできるpathにないためです。そこで、/chroot/mysql/ と /mysql/mysqld.sock をハードリンクしようとしたのですが、パーティションが違うためリンクが貼れません。そこでDBIでsock経由ではなく、tcp経由で接続しようとしているのですが、DBI connect('dbname:loc alhost','username',...) failed: Can't connect to local MySQL server through socket ' /var/run/mysqld/mysqld.sock' (2) となってしまいます。connect->host db port user password で接続しようとしています。どなたか解決方法をご教授頂けませんでしょうか?すいませんが、宜しくお願い致します。

  • Perl
  • 回答数1
  • ありがとう数1

みんなの回答

回答No.1

localhostではTCP経由での接続にはならなかったような気がします。 該当サーバに割り当てられているIPアドレスを使ってみてください。

関連するQ&A

  • failed: Can't connect to local MySQL serverこのようなエラーがでて悩んでいます。

    cygwin上でperlの $db = DBI->connect("DBI:mysql:$dbname:$host", $user, $passwd); この文を実行しようとすると DBI connect('project:localhost','root',...) failed: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) このようなエラーがでて悩んでいます。/tmpにはmysql.sockが見当たりません。いろいろなサイトを見てみてmy.cofを書き換えるなどの対処法があったのですが、そのmy.cofすらどこにもありません。DBD::mysqlなどのモジュールは一応入ったみたいなんです。どのように対処したらよいでしょうか?

  • socketの作り方。

    socketって どうやって作るのですか? ご回答の程、宜しくお願い申し上げます。 /wordpress# sudo mysql -u root -p Enter password: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) root@GD348ZZD9:~/wordpress# sudo mysql -u root -p Enter password: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) root@GD348ZZD9:~/wordpress# sudo mysql -u root -p Enter password: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

  • Mysqlの接続について

    現在、以下のようなperlのスクリプトを作っているのですが、mysqlへの接続,切断は以下の場合、どちらにした方がいいのでしょうか? (1)の場合 use DBI; $dsn="DBI:mysql:database=dbname:host=localhost"; $dbh=DBI->connect($dsn,'user','pass'); $sth = $dbh->prepare("SELECT no,title,name,date,host From `table1` where no='1'"); $sth->execute; $sth->fetchrow_array; $sth->finish; $sth2 = $dbh->prepare("SELECT no,title,name,date,host From `table2` where no='1'"); $sth2->execute; $sth2->fetchrow_array; $sth2->finish; $dbh->disconnect; (2)の場合 use DBI; $dsn="DBI:mysql:database=dbname:host=localhost"; $dbh=DBI->connect($dsn,'user','pass'); $sth = $dbh->prepare("SELECT no,title,name,date,host From `table1` where no='1'"); $sth->execute; $sth->fetchrow_array; $sth->finish; $dbh->disconnect; $dsn="DBI:mysql:database=dbname:host=localhost"; $dbh=DBI->connect($dsn,'user','pass'); $sth2 = $dbh->prepare("SELECT no,title,name,date,host From `table2` where no='1'"); $sth2->execute; $sth2->fetchrow_array; $sth2->finish; $dbh->disconnect; (1)の場合と(2)の場合の違いは、(1)の場合、最初にデータベースに接続して、一番最後に切断する事で、(2)の場合、毎回データベースへの接続と切断を行う事が違います。 (2)の場合、毎回接続と切断を行うので、2回ほどではあまり変わらないかもしれないのですが、もし10回とか接続と切断を行うとかなり負荷が高くなるような気がするのですが、他のHPなどを拝見すると接続をしたら切断を行うように癖をつけるようにした方がいいと書かれていたりします。 どちらの方が正しいやり方というか、負荷がすくなく使えるのでしょうか?

    • ベストアンサー
    • Perl
  • MySQLでlocalhost以外が接続できません

    Webサーバー上にMySQLを動作させていたため気付かなかったのですが、 外部からの接続が出来ませんでした。 内部からの接続もlocalhost指定以外は弾かれるようです。 例えばMySQL動作サーバーのIPアドレスが192.168.0.1の場合、 以下のPHPスクリプトでも弾かれます。 <?php $link = mysql_connect("192.168.0.1:3306", "username", "passwd") or die("Could not connect"); print ("Connected successfully"); mysql_close($link); ?> IPアドレス部分をlocalhostにするとconnectでエラーにはなりません。 以下がmy.cnfの設定抜粋なのです。 調べた所、skip-networkが指定されている場合、 外部から接続できないようなのですが、 コメントアウトされているのでよくわかりませんでした。 [mysqld] port = 3306 socket = /tmp/mysql.sock skip-locking key_buffer = 16M max_allowed_packet = 1M table_cache = 64 sort_buffer_size = 512K net_buffer_length = 8K myisam_sort_buffer_size = 8M #skip-network 最終的にはWebサーバー+DBサーバー(同一ノード)に、 別のWebサーバーからDB接続が出来るようにしたいです。 どうか、アドバイスをお願いいたします。

    • ベストアンサー
    • MySQL
  • MySQLをPHPで使おうとして

    FedoraCore(192.168.0.101)に /var/www/html/index.php: <?php $link=mysql_connect("localhost","root","12") or die("Could not connect"); print"Connected successfully"; mysql_close($link); ?> を入れて他のPC(192.168.0.100)からこれを呼びましたが Warning: mysql_connect(): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) in /var/www/html/index.php on line 2 Could not connect となり接続できません /var/lib/mysql/はありmysql.sockがありません どうしたらいいのでしょうか?

    • ベストアンサー
    • MySQL
  • MySQLが起動しない

    このテーマの質問はいくつもあるのですが、解決に結びつくものがなく困っています。 もともと正常に動いていたのですが、再インストールしたところ起動しなくなりました。 再インストールは「yum -y install mysql-server」で行いました。 いろいろと試してはいるのですがうまくいきません。 どなたかお分かりの方がいらっしゃいましたら、ご教授いただけますでしょうか。 よろしくお願いします。 --------------------------  エラーログ -------------------------- 110709 16:46:38 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql 110709 16:46:38 [Note] Plugin 'InnoDB' is disabled. 110709 16:46:38 [Note] Plugin 'FEDERATED' is disabled. 110709 16:46:38 [ERROR] Unknown/unsupported storage engine: InnoDB 110709 16:46:38 [ERROR] Aborting 110709 16:46:38 [Note] /usr/libexec/mysqld: Shutdown complete 110709 16:46:38 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended --------------------------  my.cnf -------------------------- [mysqld] skip-innodb max_connections=30 datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock bind-address=127.0.0.1 # Default to using old password format for compatibility with mysql 3.x # clients (those using the mysqlclient10 compatibility package). old_passwords=1 [mysql.server] user=mysql sort_buffer=512 net_buffer_length=8 [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid --------------------------  php.ini (一部抜粋) -------------------------- mysql.default_socket = mysql.default_host = mysql.default_user = mysqli.default_port = 3306 --------------------------  サーバー環境 -------------------------- OS: Red Hat Enterprise Linux ES release 4 MySQL: MySQL: 5.5.9-2 [ファイル構成] /var/run/mysqld/mysqld.pid /var/lib/mysql/mysql.sock ※上記のファイルは所定のディレクトリだけでなく、サーバー上に存在しません。 /var/lib/mysql  -mysql/  -performance_schema/  -test/

  • DBD::Mysql が使用する標準のsocketはどこから得ているか?

    以下のようなスクリプトで、以下のようなエラーになっています。 port(socket)を指定しているにもかかわらず使用されない理由も分からないのですが、エラーメッセージのsocketはどこで設定されているのでしょうか? /etc/my.cnf で /tmp/mysql.sock を指定し、サーバーとクライアントは問題なく通信できています。 よろしくお願いします。 ■perlスクリプト ---------------------------------------- #!/usr/local/bin/perl use DBI; $user = 'usr'; $passwd = 'password'; $ds = 'DBI:mysql:db_name;host=localhost;port=/tmp/mysql.sock'; $db = DBI->connect($ds, $user, $passwd); (以下略) ■perlスクリプトのエラー ---------------------------------------- $ ./script_name.pl DBI connect('db_name;host=localhost;port=/tmp/mysql.sock','root',...) failed: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) at ./script_name.pl line 9 ■環境 ---------------------------------------- mysql:バイナリの(rpmでないやつ)4.0.24-standard OS:Linux 2.4.20-31.9(REDHAT) DBD:DBD-mysql-2.9004

    • ベストアンサー
    • Perl
  • PHP+ApacheでMySQLに接続できない。プロンプトからは可能

    以下のようなコードでmysqltest.phpというファイルを作成しました。 これを php -f mysqltest.php とやると成功します。 しかし、ブラウザでhttp://パス/mysqltext.phpとやると失敗します。 双方がどう違うのか教えていただけないでしょうか。 以下コードです。 ----------------------- <html> <body> <?php $hostname = "localhost:/var/lib/mysql/mysql.sock"; $name = "root"; $password = "pass"; printf( "hostname:%s<br>\n" , $hostname ); printf( "username:%s<br>\n" , $name ); printf( "password:%s<br>\n" , $password ); mysql_connect($hostname, $name, $password ) or die('cannot connect to database'); ?> </body> </html> ---------------------------------- 単に「ホスト:ポート」「ユーザネーム」「パスワード」を指定してconnectしているだけです。 コマンドラインから実行すると成功します ---------------------- <html> <body> hostname:localhost:/var/lib/mysql/mysql.sock<br> username:root<br> password:komaba<br> </body> </html> ---------------------------- ブラウザで実行すると失敗します。 ----------------------------- hostname:localhost:/var/lib/mysql/mysql.sock username:root password:pass cannot connect to database -----------------------------

  • UbuntuサーバーにWordPress。

    いつも大変お世話になり誠にありがとうございます。 標記の件。 $ sudo mysqladmin create wordpress -p [sudo] kouzou のパスワード: Enter password: mysqladmin: connect to server at 'localhost' failed error: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)' Check that mysqld is running and that the socket: '/var/run/mysqld/mysqld.sock' exists! 上記のようになります。 どうすればWordPressができるようになるでしょうか? ご多忙中恐れ入ります。 ご回答の程、宜しくお願い申し上げます。

  • PDO_MYSQLを利用したDB接続ができない

    閲覧ありがとうございます。 次のコードを実行してMYSQLへの接続をしようとすると以下のようなエラーになってしまいます。 エラー!: SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) try { $dbh = new PDO('mysql:host=localhost;dbname=DB名', 'ユーザ名', 'パスワード'); } catch (PDOException $e) { print "エラー!: " . $e->getMessage() . "<br/>"; die(); } どなたか原因が分かる方はご教授いただければと思います。 ちなみにmysql_connect()でなら接続できます。 phpinfoを確認すると、確かにPDO、PDO_MYSQLは表示されています。

    • ベストアンサー
    • PHP

専門家に質問してみよう