
ユーザー名にアンダーバーを含む場合のデータベース作成について
mysql > create database demo_demo;
mysql > grant all on demo_demo.* to demo_demo@localhost
上記のSQL を発行した場合、「demo_demo」というデータベースと、ローカルから「demo_demo」データベースにALL の権限の範囲内でアクセスできる「demo_demo」というユーザーが作成されると思います。ここで2点教えてください。
質問1:
ALL権限には「create database」を許可するCREATE権限が含まれますが、上記「demo_demo.* 」のように、grant 時に特定のデータベースに対してのみALL権限を与えた場合の「create database」を許可するCREATE権限とはどういう意味を持つのでしょうか?
質問2:
mysql > create database `demotdemo`;
など、ユーザー名のアンダーバー部分に任意文字を当てたデータベースが無限に作成できてしまいます。アンダーバーがSQL的に「任意の一文字」に相当するとは理解していますが、「demotdemo」などのデータベースが作成できてしまうのはmysql の仕様でしょうか?また、ユーザーが「create database」可能かでないかの判定はどの権限で制御されているのでしょうか?
参考資料でもよいので教えてください。お願いします。
No.2ベストアンサー
- 回答日時:
アンダースコア脆弱性のことかな
http://news.livedoor.com/article/detail/546720/
概要、_ アンダースコアは、SQLのワイルドカードのため、そのままでは、何か1文字にマッチしてしまうということ(ワイルドカードを使いたい状況もあるので、使えなくはできない)
対策:データベース名にアンダースコアが含まれる場合、バックスラッシュで(Unixシェルによっては2つ)エスケープされるべき。どんなコマンドにおいても常にということ。
http://dev.mysql.com/doc/refman/5.1/ja/mysqlshow …
回答ありがとうございます。
アンダースコア脆弱性!まさにこれでした。ありがとうございます。
てっきりgrant の際のユーザー名のアンダースコアが今回の症状に影響していると思ってましたが、grant のデータベース名が影響してたんですね。
とってもすっきりしました。ありがとうございました。
No.1
- 回答日時:
ALL権限には「create database」を許可するCREATE権限が含まれます
>> そうではなく、CREATE TABLE の使用を許可するのではありませんか?
「demotdemo」などのデータベースが作成できてしまうのはmysql の仕様でしょうか?
>>OSのファイル名作成の仕様ではありませんか?
この回答への補足
回答ありがとうございます。
マニュアルにはCREATE権限は「create database」と「create table」の権限とあるのです。
また、「OSのファイル名作成の仕様」の部分が理解できなかったのですが、データベース名がなんであれ、最終的な作成可否についてはデータベースサーバーが判断するところと思うのですが、私の理解がまちがえてるのでしょうか?
お願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
mysqlのupdate構文についての質...
-
htmlコードで書かれた表にphpで...
-
エラー 1068 (42000): 複数の主...
-
mysqlがインストールされている...
-
MySQL NULLだけをカウントして...
-
SQLでカラムを追加し、条件に合...
-
「重複を間引いた数」をcountし...
-
SQLです教えてくださいお願いし...
-
SQLの検索について
-
同一日に複数レコードがある場...
-
MAMP 99ドル約1.6万円 高い...
-
あってますか?SQL
-
WHERE `年月日` = '晴' OR `年...
-
SQLです教えてくださいお願いし...
-
SQLを作ったのですがうまくいき...
-
(初心者)MySQLやmaraDBで、crea...
-
SQLです教えてくださいお願いし...
-
SQLです教えてくださいお願いし...
-
SQLです教えてください。
-
SQLです教えてくださいお願いし...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
mysqlにおけるホストのパーセン...
-
メンテナンスプランについて
-
ACCESSデータベースの権限
-
MySQLでアクセス権やパスワード...
-
PHPMyAdminでroot権限を誤って...
-
MySQLにログインできなくて困っ...
-
Access2002のセキュリティ(権...
-
MySQLで新規DB作成時、エラーが...
-
データベースユーザーを作成し...
-
ASP.NETからのデータベースの作成
-
ODBC登録の権限について
-
ユーザー名にアンダーバーを含...
-
phpmyadminでの特権が表示方法
-
Mysqlアップデートでワードプレ...
-
MYSQL CREATE DATABASE 権限
-
ACCESSからリンクでのレコード...
-
apacheとnamazu使用時にpermiss...
-
FILE権限があるはずなのにSQLフ...
-
ワークフロー承認システムを作...
-
mysql使用中エラー1044が出...
おすすめ情報