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

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

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

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

5回答

2100閲覧

さくらサーバーのSQLに接続できない

zenobread

総合スコア44

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2019/01/09 15:15

編集2019/01/10 00:52

タイトルの通りです。さくらサーバーのプランにあるデータベースにphpファイルから接続しようとしたんですが
DB接続エラー:SQLSTATE[HY000] [2002] No such file or directory
と表示され接続できません。PDOで書いており

$db=new PDO('mysql:dbname=;host=mysql.db.sakura.ne.jp;charset=utf8','name','pass')

***にはそれぞれphpmyadminで作成したデータベース名とphpmyadminの左上部に”サーバー:”とかいてあったので
それを記述し、nameとpassにはphpmyadminのログインに使ったものを記述しています。

またSQLサーバーが起動していないのかと思いSQLの起動ボタンを探しましたが見つからず、公式ホームページで記載されている場所にも存在しません。

どなたか桜サーバーについて詳しい方お願いします。
プランはスタンダードです

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

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

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

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

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

guest

回答5

0

あなたのPCから直接 さくらのレンタルサーバーの mysql につなぐことは不可能です。

投稿2019/01/09 15:47

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2019/01/10 00:59 編集

さくらのレンタルサーバーの、 コントロールパネルから行けるデータベース管理(phpmyadmin)を利用するか、 さくらのレンタルサーバーにtelnet接続してから、 コンソールとしてデータベース接続するか、 くらいしかできない気がする。 直によそからデータベースに接続できる説明はないよね。 →ちょっと調べてみたら思い込みと違っていたので、別途回答を起こします
zenobread

2019/01/10 00:54

回答ありがとうございます。 すいません、初心者でまだよくわかってないのですがつまりはSQLを使ってデータの送受信を行うことはできない、ということですか?
m.ts10806

2019/01/10 01:01

プログラムをそのサーバー上にアップロードすれば、あるいは。
guest

0

kunaiさん情報をもとに、
Windows上のA5:SQL mkIIから接続できたことを報告します。

基本
SSH2トンネル


ガチでphpからpdo経由で接続できないって話なのだとしたら、
いまtelnet接続してレンタルサーバー上でテストコード書いたら動いたから載せとく。

php

1<?php 2try { 3 $pdo = new PDO('mysql:dbname=example_wp;host=example.db.sakura.ne.jp;charset=utf8mb4', 'foo', 'bar', [ 4 PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, 5 PDO::ATTR_EMULATE_PREPARES => false, 6 ]); 7 $stmt = $pdo->prepare('SELECT * FROM exampleposts ORDER BY `ID`;'); 8 $stmt->execute(); 9 foreach ($stmt as $row) { 10 echo $row['ID'] . PHP_EOL; 11 } 12 13} catch (PDOException $e) { 14}

投稿2019/01/10 01:11

編集2019/01/10 03:41
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2019/01/10 03:16

まあ、バックグラウンドでssh しているので直接ではないという、(笑) pfし続けると警告か強制切断食らうはず
退会済みユーザー

退会済みユーザー

2019/01/10 03:18

今まで試したことがなかったので、目からウロコでした。 (しかし特に目的もなにもないっていう。)
guest

0

さくらのレンタルサーバに詳しいわけではないですが、SSH接続出来るのであればポートフォワードで繋げると思いますよ。
さくら レンタルサーバー ポートフォワード mysql

投稿2019/01/10 01:42

kunai

総合スコア5405

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

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

退会済みユーザー

退会済みユーザー

2019/01/10 03:24 編集

teratermのssh転送記事を参考にしたらうまくいかず、うちはA5:SQL mk-2でのmysql直接接続で、SSH2トンネル設定を活用したら無事に繋がりましたね。わたし質問者さんじゃないけど、いい情報ありがとうございます。
CHERRY

2019/01/10 03:22 編集

うちでは、1つ目のターミナル上で、` ssh -L3306:mysql***.db.sakura.ne.jp:3306 example@example.sakura.ne.jp ` で、さくらのレンタルサーバーにポート転送した状態で、ローカルPCの別ターミナルから `mysql -h 127.0.0.1 -u username -p db-password ` でローカルの3306 ポートにログイン&SQL実行可能だなぁ... サーバーによって設定が違うとかあるのかなぁ...
退会済みユーザー

退会済みユーザー

2019/01/10 14:35

バックドア開けっ放し状態だから セキュリティ問題でそりゃ閉じられるよ /etc/ssh/sshd_config に AllowTCPForwarding no だ(にぱっ
退会済みユーザー

退会済みユーザー

2019/01/10 14:47

CHERRY mysql -h {hostname} -p {port} -u {username} -p{password} {dbname} -p の後ろには空白をいれてはいけない。
guest

0

自己解決

誠に申し訳ありません。自己解決することが出来たんですが、その解決法と質問の修正について。

何人かの方が想定されていたように、「同じさくらサーバー内にあるデータベースにphpファイルからアクセスできない」ということです。言葉足らずで申し訳ありません。

それでエラーについてですが、本当に単純で質問に書いてあるPDOの文に;を付けるのを忘れておりました。
お騒がせして申し訳ありません。

投稿2019/01/10 17:38

zenobread

総合スコア44

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

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

0

実装面については他の方からコメントがついているので、設定周りの確認提案をしてみます。

さくらインターネットのスタンダードプランであれば
https://secure.sakura.ad.jp/rscontrol/rs/db
でデータベースの接続情報が確認できるので、PDOで指定している接続情報に誤りがないか、念のため確認してみると良いと思います。

特に、データベース名については「自分で作る時に"入力した"データベース名」と「実際に作られるデータベース名」が異なりますのでよく確認することをおススメします。
(作成されるデータベースは「データベースユーザー名_ + 入力したデータベース名」になるので)

例:ユーザー名が"hoge"で、入力したデータベース名が"sampledb"の場合⇒実際に作成されるのは"hoge_sampledb"になる。

投稿2019/01/10 04:03

nak

総合スコア696

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

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

kunai

2019/01/10 04:07

いや、さくらのレンタルサーバではマネージドプランじゃないと外部からの接続は許可されていないらしいんですよ。 この質問者はスタンダードプランなので、穴があくまで設定画面を見ていてもつながるようには出来ないんです。
nak

2019/01/10 07:44

他の回答者さんの回答では「外部からの接続は~」と記載されていましたが、質問者さんの質問文中には「外部からの接続」と断定できる情報が含まれていないように思います。 質問文中には > さくらサーバーのプランにあるデータベースにphpファイルから接続しようとしたんですが としか書かれておらず、「どこのphpファイルから接続しようとした」ということが書かれていません。 「さくらのレンタルサーバー」のスタンダードプランには、PHPの実行環境とデータベース(MySQL)が含まれているため、 スタンダードプランで契約 ⇒さくらから自分用に割り当てられたアプリサーバーのディレクトリに自作PHPを置く ⇒そこから、さくらから自分用に割り当てられたデータベースにアクセスしようとした」 という可能性もありそうです(これは、さくらのレンタルサーバーをスタンダードプランで借りた場合の、ごく一般的な使い方です)。 その場合、上記の情報の確認が必要になるかと思います。 「さくらのレンタルサーバーのスタンダードプランで借りたデータベースに、ローカルPCに立てたPHP環境のPHPファイルからアクセスしようとして~」の場合は、私の回答の最初に > 実装面については他の方からコメントがついているので と書かせていただいているとおり、他の皆さんの回答が有用かと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問