• 締切済み

mysql_connect() のパスワードについて

数日前にPHPをはじめたばかりの初心者なのですが、 気になることがあるので質問させていただきたいと思います。 いろいろな書籍やネット上のサンプルを見る限り、 PHPからmySQLに接続するためには mysql_connect()の引数にパスワードを入れるようになっていますが、 これはセキュリティ上問題ないのでしょうか? 過去の質問を調べたところ、 No.1142292に対する回答に、 .phpファイルはまず中身を見られることがないから大丈夫、 というのがあったのですが、 サーバのPHPパーサが落ちていた場合など、 .phpファイルは丸見えになってしまうのではないでしょうか。 そして、そのSQLテーブルを作成したユーザーが (cookieによる認証で)phpMyAdminを使用していた場合、 第三者がphpMyAdminで容易にテーブルにアクセスできてしまうのではないかと思います。 サーバは生きているがPHPパーサが落ちている、という 状態はほとんどありえないとは思うのですが、 万が一この状態が起こった場合に取れる自衛手段 はありますでしょうか?

  • PHP
  • 回答数1
  • ありがとう数2

みんなの回答

回答No.1

ご心配であれば、公開ページの置いてあるディレクトリ以外に.phpファイルを置けばいいと思います。 >mysql_connect()の引数にパスワードを入れるようになっていますが、 >これはセキュリティ上問題ないのでしょうか? 今ひとつ質問の意味がわからないのですが、MySQLに接続するためには、パスワードが必要なので、引数にパスワードを書きます。

worldwind
質問者

お礼

お返事どうもありがとうございます。 心配していたケースとしましては、 1.サーバが生きていて、かつphpパーサのみがダウンしているときにphpファイルを開くと、中身が見えるのでは? (PHP環境のないローカルマシンでphpファイルを開いたときに中身が見えてしまう状態) 2.安易にルートディレクトリにphpMyAdminをおいていると、(パスワードを見た)悪意のある人から簡単にSQLにアクセスされてしまうのでは? というものです。 1の状態がすでにレアケースだとは思いますが、 2について、わかりにくいディレクトリ構成にする、 そもそもphpMyAdminを使用しない、など気をつけようと思います。 どうもありがとうございました。

関連するQ&A

  • mysql_connect関数の使い方

    mysql_connect関数の、戻り値の使い方についての質問です。 mysql_connectで検索すると、 【使い方例】 $link = mysql_connect('localhost', 'mysql_user', 'mysql_password'); mysql_close($link); みたいなのが見つかります。(エラー処理は省略) そこで、mysql_connectとmysql_closeの間に、クエリを処理する関数を入れるとします。 【例】 $link = mysql_connect('localhost', 'mysql_user', 'mysql_password'); test();←この関数の処理についての質問です。 mysql_close($link); test(){ mysql_query(”sql文”);} 上記の例の test()関数についてですが、mysql_connectの戻り値の$linkを渡さなくてもいいのでしょうか? いつもは、test($link)見たいにしていました。 しかし、今回は戻り値を渡すのを忘れていたのに、ちゃんと希望通りに動いていました。 今回のように、mysql_connect関数をひらいて、dbの処理をする場合は、 途中の関数に、戻り値を渡さなくてもいいのでしょうか?

    • ベストアンサー
    • PHP
  • mysql_connectについて

    こんにちは。PHPの解説書を見ながらMYSQLへの接続するコマンドを理解しようとしているのですが、仕組みがいまいちよくわかりません。その本で紹介しているやり方は、以下のとおりです。 $dbcnx = @mysql_connect('localhost', 'root', 'mypasswd'); if (!$dbcnx) { exit('<p>Unable to connect to the ' . 'database server at this time.</p>'); } 後にデータベースを選択し、編集するコマンドが続きます。何が解らないかといいますと、一行目です。この時点でおそらくmysqlに繋がるのだと思いますが、でもこれだけでは$dbcnxに値を代入しているだけではないのでしょうか?う~ん、そういうものだと理解するのが一番だと思うのですが、いまいちプログラムの理屈が良くわかりません。 砕いて説明していただけるととても助かります。ご存知の方おられましたらよろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PHPでデータベースにアクセスするには?

    データベース初心者です。 レンタルサーバーはロリポップを使っています。 これからphpMyAdminを使ってデータベースを作ることが出来たらと考えております。先ずはその流れを把握しておきたいと思いましてPHPファイルからの接続を成功できたらと考えましたが、PHPについても知識に乏しくどのような記述にすればphpMyAdminに接続できるのかというところで止まってしまってます。 どなたかお詳しい方がいらっしゃいましたらご指導いただけたら幸いです。よろしくお願いいたします。 以下は他のサイトで見つけたのですが接続できないようです。 //接続 $connect = mysql_connect($server,$user,$pw); //データベース選択 mysql_select_db($database,$connect); //sql実行 $result = mysql_query($sql); //データ取得 mysql_data_seek($result,0); $a=mysql_fetch_array($result,MYSQL_NUM);

    • 締切済み
    • PHP
  • PHP+MySQL on さくらサーバー

    さくらサーバーで、プレミアムプランで契約しています。 PHP4.3.10、MySQL 4.0.26で、以下のPHPファイルを埋め込んだphpファイルを実行すると、エラーが生じます。なんか、初歩的なことを勘違いしているのではないかと言う気がするのですが、何が問題なのでしょうか。 データベースのユーザー名は、xxx パスワードは、yyy データベース名は、xxx(一つのみ割り当て) Userというテーブルがあります。 <?php $conn = mysql_connect("mysql11.db.sakura.ne.jp","xxx","yyy"); mysql_select_db("xxx", $conn); $sql = 'SELECT * from User'; mysql_query($sql, $conn)); ?>

    • ベストアンサー
    • MySQL
  • mysqlのupdateはどこでやるのですか?

    ものすごい愚問だったらすみません。 mysqlのデータをupdateするのはどこでするのですか? 今はhp上に xxx.phpをつくり、phpで今日の日付を取得し、複数のmysqlテーブルから条件抽出selectし、、、と値を出し、xxx.phpで $sql_l = "UPDATE table名 SET tyo{$month} = '{$ticket_city_month[price]}' WHERE cityname = '{$cityname}'"; $result = mysql_query($sql_l); とし、ブラウザ上から更新して、updateしています。 一応UPDATEはできているのですが、数が多く一気にできません。 (select時にデータ量を少なくするため、あえてwhereで一部ずづやってます。) phpMyAdmin 2.6.0 MySQL 4.1.20 で、 phpMyAdminとNavicat MySQLも利用しています。

  • mysql_select_db()関数に関して・・・。MySQLでテーブルの作成ができません。

    こんにちは、さくらインターネットのレンタルサーバでMySQLとphpを連動させたサイトを作っているのですが、初歩的なことでつまずいてしまい困っています。 まず、フォームで入力させたデータをPOSTで受け取り、その受け取ったデータをテーブル名として、データベース上にテーブルをつくりたいのですが、エラー文が表示されるだけでできません。 データベース自体への接続はできているようなのですが、phpMyAdminで見ても全くできていません。SQL文をphpMyAdminで実行するときちんと正常にテーブルができますので、そもそもデータベースが使用できないとか、もしくはSQL文の間違いでもなさそうです。 $t1 = $_POST['test1']; $t2 = $_POST['test2']; echo"{$t1}を受け取りました<br>"; $link = mysql_connect('mysql**.db.sakura.ne.jp', 'ユーザー名', 'パスワード'); if (!$link) { die('接続失敗です。'.mysql_error()); } print('接続に成功しました。<br>'); //1.さくらインターネット内にあるデータベースの選択 $db_name = "自分のデータベース名"; $selectDB = mysql_select_db($db_name,$link) or die("接続できません。"); //2.データベース内にテーブルを作成。 echo"{$t1}がテーブル名になります。<br>"; //3.テーブル作成用SQL文 $str_sql = "CREATE TABLE {$t1}" . "(" . "{$t2} INT(7) NOT NULL," . ");"; //4.上のSQL文を実行してテーブルを作る。 mysql_query($str_sql,$selectDB); echo"データベース内にテーブル「{$t1}」を作成しました。<br>"; //データベースへの接続を切断 $close_flag = mysql_close($link); if ($close_flag){ print('切断しました。<br>'); } 実行結果:Warning: mysql_query(): supplied argument is not a valid MySQL-Link resourceとなってテーブルは作成されず。 自分でも調べて見たところ、mysql_connect()での接続はちゃんとできているようなのですが、その次のmysql_select_db()関数がうまく働いていないようです。 つまりデータベースの選択ができていないので当然エラーとなるようです。 もう何日も悩んでいます。わかる方がいましたらどうぞよろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPでのMySQL接続エラーについて

    PHPを使用してMySQLサーバに接続しようと思うのですが、どうしても "Warning: mysql_connect() [function.mysql-connect]: Can't connect to MySQL server on 'localhost' (10061) in C:\Server\Apache2.2\htdocs\htdocs\connect.php on line 2" と表示されて接続できません。いろいろ試してみたので、情報を列挙いたします。 動作環境 OS:WindowsXP Pro Apache2.2.8 PHP5.2.6 MySQL5.0 1.コマンドプロンプトからはMySQLに正常に入ることが可能です。 2.上記のエラーが出るPHPプログラムは以下の通りです。 "<?php %conn = mysql_connect("localhost", "root", "password"); ?> 3.phpMyAdminを使って接続しようとしても以下のエラーが出ます。 #2003 - サーバが応答しません" 4.セキュリティソフトを終了させて接続しても同様の症状でした。 5.phpinfo()関数は正常に動作し、mysqlやmysqliの情報も表示されます。 以上の内容ですが、よろしくお願いいたします。

    • ベストアンサー
    • MySQL
  • PHPからMySQL・異なるDBにコピー

    PHPからMySQL・異なるDBに接続し同じ構造のテーブルのデータをコピーすることは可能ですか? 以下を実行するとクエリが実行されず「コピーできません」が表示されてしまいます。 どのようにすればコピーできるか教えてください。 $connect1 = mysql_connect("localhost", "user1", "pass1") ; mysql_select_db("db1", $connect1); //db1内にtable1 $connect2 = mysql_connect("localhost", "user2", "pass2") ; mysql_select_db("db2", $connect2); //db2.内にtable2 $sql = "INSERT INTO `db1` . `table1` SELECT * FROM `db2` .`table2`;"; $result = mysql_query($sql, $connect1)or die("コピーできません"); //$result内「$connect1」でも「$connect2」結果は同じです。 //table1とtable2の構造は同じです。

    • ベストアンサー
    • PHP
  • PHPのMySQL接続について

    Mysqlの超初心者なので質問に不備などがございましたらすみません。 次のサイト(http://blog.nextbird.com/?p=23)に掲載している通りに会員システム構築を行っております。 レンタルサーバー(Cside:mySQl使用可能)のphpmyadminでデータベースを作成しました。データベースサーバー名やパスワードなどもiniファイルに記入して接続用のファイルでincludeしています。 すべてアップロードし、試しに自分でフォーム(名前やEmailアドレスなど)に記入したところ、『Can't connect to local MySQL server through socket '/tmp/mysql.sock' 』というエラーが出ます。 『local MySQL server』ということはローカルのMysqlに関係しているようなのですが、レンタルサーバーですべてを行っているのにローカルでMySQLをインストールして設定することなどが必要なのでしょうか?Csideのphpmyadminで『phpMyAdmin 2.6.4-pl3 へようこそ』の下に 『MySQL 4.0.24 は localhost 上 *******@localhost として実行しています。』と書いてあるのも気になります。 php自体は経験有りなのですが、MySQLの接続で困っている状況です。とにかく、、『Can't connect to local MySQL server through socket '/tmp/mysql.sock' 』だけは回避したいのですが、どなたかわかりやすくお教えして頂けませんでしょうか? 分かりづらい質問で誠に申し訳ございません。

  • MySQL の設定で行き詰っております・・・。

    こんにちは。 ある海外のフリーソフトをサーバーにインストールしようとして、行き詰っております。宜しくお願い致します。 そのソフトは、MySQLのデータベースを必要とします。 私は今までMySQLのデータベースを使った事はあるのですが、データベースさえ作ればその他は自動的にやってくれるものばかりだったので、今回手動(?)で分からなくなっております。インストールの説明文に次のようにあります。[5]までは済ませています。 ----------------------------------------------- [5] Create the mysql database (usually tinylink) with mysqladmin. mysqladmin -u<your_mysql_user> -p<your_mysql_pass> create tinylink (tinylink というのはソフトの名前なので、データベースの名前も通常その名前だという説明だと思います。mysql admin を使ってここまではできました。) [6] Create the mysql tables. You have 2 options : 1) mysql -u<your_mysql_user> -p<your_mysql_pass> tinylink < db_structure.sql 2) use phpMyAdmin to run the SQL file 'sql/db_structure.sql' ここがわかりません。(1)でも(2)でも良い、という事なのですが、(1)は私には意味が不明です。(特に tinylink < db_structure.sql の部分が不明) (2)はphpMyadminを使って、テーブルの作成に次のファイル('sql/db_structure.sql')を実行するように設定してね、という意味だと思うのですが、phpMyAdminのどの部分でファイルを実行するように設定できるのかが不明です。 "db_structure.sql'"ファイル自体はすでにアップロードしてあるのですが・・・。 なにぶん分かっていない事が多いのでちんぷんかんぷんな事を言っているかも分かりませんが、どうぞお手柔らかに宜しくお願い致します。

    • ベストアンサー
    • MySQL

専門家に質問してみよう