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

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

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

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

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

PHP

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

Q&A

2回答

4462閲覧

phpmyadminによる限定的なDB公開

progman

総合スコア66

MySQL

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

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

PHP

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

0グッド

0クリップ

投稿2016/04/10 09:39

###前提・実現したいこと
mysqlのDB(データ)を公開したいとおもっています。
利用者にはselect文をつかって、自由にDBアクセスしてほしいとおもいます。
そこで、phpmyadminを利用して、
ログイン不要、
参照のみで、一部のテーブル、カラムは隠して
公開したいとおもうのですが、そのような例や方法はないでしょうか?
phpmyadminにこだわるものでもないですが、そのデータを利用したphpのアプリ
をweb公開していて、内部的な運用でphpmyadminも使用しているので、
それを使えればリソースを有効につかえるとおもいます。
現在運用中のphpmyadminは3.4.9ですが、バージョンアップしてもいいです。
mysql 5.5.28
php 5.4.31
centos 5.7
です。

###発生している問題・エラーメッセージ

###該当のソーード

###試したこと
ネットでそのような事例を探すのですが、見つかりません。
phpはあまり得意ではありませんが、phpmyadminのソースをみたのですが、どこをどう直せばというのは、さっぱりわかりません。
以前、phpmyadminの機能を限定してDBアクセスするツールを運用しているのを見たことあるので、できるとおもっているのですが、phpを相当駆使しないと無理でしょうか?

###補足情報(言語/FW/ツール等のバージョンなど)

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

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

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

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

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

guest

回答2

0

基本的には利用者に任意のSQLを実行させるのはリスクが高いです。また、phpMyAdminを外部に公開するのもリスクが高いです。データに公開/非公開の区別があるならなおさらです。

Web I/FかAPIを作ってそれ経由でアクセスさせる方がよいでしょう。

あまりお勧めはしませんが、別サーバに公開してもかまわないデータをコピーしてphpMyAdminを動かす、MySQLで適切な権限を設定したユーザーを作りphpMyAdminの接続ユーザーとしてそのユーザーを設定する、という方法も考えられなくはないです。

投稿2016/04/10 12:48

suzukis

総合スコア1449

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

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

0

select文の「勉強用サイト」の構築をお考えでしょうか。それであれば既存の物を利用される方が良いと思います。

【SQL Fiddle】
http://sqlfiddle.com/

データの公開及び検索を目的とされるのであれば、Webサイトとして公開している場所で検索を実装されるのが現実的だと思います。検索結果をAPI的に外部から利用したいのであれば、そういった機能を持つフレームワークなどを探されてはいかがでしょう。

ソースを変更してしまうと、脆弱性を生む可能性が極めて高く、お勧めできません。


追記:

【権限の種類と設定されている権限の確認(SHOW GRANTS文) - ユーザーの作成 - MySQLの使い方】
http://www.dbonline.jp/mysql/user/index5.html

【ユーザー管理・権限|MySQL|PHP & JavaScript Room】
http://phpjavascriptroom.com/?t=mysql&p=grant

投稿2016/04/10 09:51

編集2016/04/10 10:28
kei344

総合スコア69366

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

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

progman

2016/04/10 10:12

早速のレスありがとうございます。 データへの任意アクセス(参照のみ)手段の提供であって、 sqlの勉強サイトの提供ではありません。 sql文を知っている利用者に任意のselectを実行して、検索 させたいということです。
kei344

2016/04/10 10:28

追記しました。
progman

2016/04/12 11:25

レスありがとうございます。 DBMSの機能で、アクセス制限をつけるということですね、 特定のテーブル、カラムを見せたくないのも、viewなどで実現できます。 しかし ・ログイン手続きをなくす。 ・phpmyadmin上でアクセスされたくない、オブジェクト(他のスキーマ)、機能(エキスポート)は隠したい。 というところが実現できません。 通常使用している、phpmyadminとは別にインストールして、 そこでカスタムするでもよいのですが、そうするとなるとphpmyadminのソース をおって修正することになるでしょうか?
kei344

2016/04/12 13:19

> ログイン手続きをなくす。 そういう設計にはなっていませんが、仮にできたとしてprogmanさんもphpmyadmin上でSELECT以外使えなくなります。 > phpmyadminのソースをおって修正する 回答にも書きましたが、お勧めできません。 suzukisさんのおっしゃるように、Web I/FかAPIを作ってそれ経由でアクセスさせる方がよいでしょう。
progman

2016/04/16 10:24

レスありがとうございます。 「Web I/FかAPI」とはREST,Web APIのようなものですか httpクライアントからSQL文を投げて、JSONで結果を受け取るようなものでしょうか? 私は、ブラウザ上でSQL入力、結果を確認するのというサービスを提供したいとおも っています。 RESTにしたらリスク低減するでしょうか? よくわからず、phpmyadminで公開するのは、危険ですよ! というなら、そうでしょう。 ですから、私はphpmyadminのカスタマイズについて知りたいとおもって投稿 しています。 他にWebベースのものが、たとえばjavaででもあれば、それはうれしいですが、 現運用のphpmyadminは、パスワード以外にも容易にアクセスできない仕組みに なっていますから、それと併用とはいかないです。 前の投稿で「phpmyadminの環境を二重にもって公開用にカスタマイズ」といっ たことを書いていますよね 0からつくるより、phpmyadminをカスタマイズするほうが、はるかに楽ですし、 実際そういう運用例もみたので、似たようなことをされてる例があればとおもって 投稿したのですが、そのようなレスがつかないということは、自分で相当中身を 理解してやるといったことしかないようですね
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問