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

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

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

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

PHP

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

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

1回答

2041閲覧

【MySQL】アプリからのコネクションを確認する方法が分かりません。

wasi300

総合スコア66

MySQL

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

PHP

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

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2017/06/19 00:43

編集2017/06/19 00:47

お世話になります。いつもありがとうございます。
表題の件、知見のある方がおられましたら、
ご教示お願いいたします。

###前提・実現したいこと
LAMP環境でアプリを作成しております。
PHPで作成中のアプリからどのアカウントからどのスキーマにコネクションが張られたのかを確認したいです。

###現状と課題
・ドメイン名と接続情報が保存されたテーブルを持つスキーマA
・アプリの情報が保存されたテーブルを持つスキーマB
2つのスキーマがあります。

PHPでスキーマAのテーブルより、接続情報を引き当て、
別スキーマへの接続を実現しております。

スキーマBに投げたクエリが期待通りの結果を返すので、
結果として、別の接続情報で繋げておりますが、
本当に意図した接続情報で、対象スキーマに接続しているのかを
調査して欲しいと言われたので、ログの出力と接続の監視を行いました。
しかし、どちらも、スキーマBの情報が確認できず、困っています。
アプリからのコネクションを皆さんどのように確認しているのでしょうか…。

###試したこと

詳細ログの出力(general-log)
スキーマAに接続したというログが流れるのですが、
スキーマBに接続したというログが流れません。

workbenchのClient Connections(Show Processlist)5秒ごとに監視
スキーマAの接続情報が出てスキーマBの接続情報がでません。

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

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

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

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

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

t_obara

2017/06/19 03:52

Aの結果をもとに、Bにアクセスするのですよね?わたしの場合は、次のような確認をすると思います。その場合のログの場所が異なっていないか、デバッグログではどうか、Aの内容を意図的にアクセスできない情報に書き換えてどのように動作するか、Bにアクセスする直前に渡している情報を確認するなど
wasi300

2017/06/19 06:13

お返事ありがとうございます。Aに接続できない情報に書き換えれば、エラーになり、Bに接続できない情報に書き換えればエラーになります。直前に渡してる接続情報を見ても、正常に渡されています。ログのは記載されているので、ログの出力場所は間違っていないと思います。デバックログとは、general-logとは違うのでしょうか。違う場合、どこを見れば良いのでしょうか。
t_obara

2017/06/19 08:26

「mysqladmin debug」でググってみてください。Aを介さずにBにアクセスする、コマンドラインなどからアクセスしても同様にログが出ないのでしょうか?
wasi300

2017/06/19 10:01

お返事ありがとうございます。こちらをググった結果、MySQLを管理をするコマンドだということが分かりました。debugオプションを付ける事で、エラーログにデバッグ情報を書き出してくれるということが分かりました。疑問が二つあります。1つは、mysqladmin debugは、一度実行すると、永遠にエラーログにデバック情報が書き込まれるのでしょうか?2つ目は、エラーログの出力先は何処でどのように制御するのでしょうか。
guest

回答1

0

ベストアンサー

プログラムを修正できるのであれば、SQLでSELECT DATABASE()とすると、現在接続中のデータベース名が取れると思います。

php

1$dsn = 'mysql:host=localhost;dbname=test;charset=utf8;'; 2$username = 'test'; 3$password = 'test'; 4$options = [ 5 PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION 6 , PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC 7]; 8$oPdo = new PDO($dsn, $username, $password, $options); 9 10$sql = 'SELECT DATABASE()'; 11$stmt = $oPdo->prepare($sql); 12$stmt->execute(); 13 14$rows = $stmt->fetchAll();

イメージ説明

投稿2017/06/19 07:47

motuo

総合スコア3027

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問