
ユーザー名にアンダーバーを含む場合のデータベース作成について
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で質問しましょう!
似たような質問が見つかりました
- MySQL MySQLのテーブル作成でハイフン - は使用できないのでしょうか? 2 2022/10/21 16:50
- MySQL 参考書に従って入力したつもりでしたが、最後はエラーがでました。 1 2022/09/28 03:45
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- MySQL PHP 画像のアップロード Qiita 2 2022/11/28 04:44
- PostgreSQL PostgressからMySQL(MariaDB)へ構造を変更する際のTimestamp等について 2 2023/04/04 12:09
- MySQL MySQLでcreateが使えない MySQLを使ってデータベースを作ろうと思い、CREATE を使 3 2022/06/19 15:32
- MySQL `picture` varchar(255) のコマンドで間違いないでしょうか? 1 2022/11/21 04:08
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- MySQL 【投稿情報用データベース posts】は必要ないと思います。 1 2022/06/02 21:25
- MySQL あと、MySQLの文字コードはutf8 気になりますね 1 2022/12/01 07:22
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エラー 1068 (42000): 複数の主...
-
mysqlがインストールされている...
-
SQLでカラムを追加し、条件に合...
-
【初歩】ラジオボタンをつかっ...
-
下の画像はSQLの4大命令の性質...
-
(初心者)MySQLやmaraDBで、crea...
-
SQLです教えてくださいお願いし...
-
php テーブルを作れない
-
SQLです教えてくださいお願いし...
-
SQLです教えてくださいお願いし...
-
mysqlのupdate構文についての質...
-
テーブル名が可変の場合のクエ...
-
PHP 画像のアップロード Qiita
-
`picture` varchar(255) のコマ...
-
MySQLのテーブル作成でハイフン...
-
SQLです教えてくださいお願いし...
-
SQLです教えてください。
-
SQLです!!教えてください。
-
SQLです。こんな感じですか?あ...
-
下記の問合せを行うクエリを、P...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
mysqlにおけるホストのパーセン...
-
メンテナンスプランについて
-
MySQLにログインできなくて困っ...
-
行ごとにアクセス権限
-
Access97でDBファイルを最適化...
-
ODBC登録の権限について
-
ユーザー名にアンダーバーを含...
-
ASP.NETからのデータベースの作成
-
MSDE2000のadministratorでイン...
-
ACCESSからリンクでのレコード...
-
phpmyadminでの特権が表示方法
-
Acronis True Image Personal 2...
-
MySQLのエラーメッセージ(エラ...
-
【NURO光のONUでroot権限が取れ...
-
ERROR 1044
-
データベースリンクについて
-
MySQLでDBが作成できない
-
MySQL のインポートでエラーが...
-
レンタルサーバーでトリガーを...
-
MSDEにて作成したユーザでデー...
おすすめ情報