
ユーザー名にアンダーバーを含む場合のデータベース作成について
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ランキング
-
メンテナンスプランについて
-
MySQLにログインできなくて困っ...
-
mysqlにおけるホストのパーセン...
-
行ごとにアクセス権限
-
データベースファイル(.db)を開...
-
PL/SQLで@ファイル名が反応しま...
-
sql*loader 数値のロード
-
複数行をINSERTで『ORA-00911: ...
-
PL/SQLをWindowsのBATファイル...
-
レプリケーション
-
badファイルの内容を知る方法
-
あるDBから別のDBのテーブルをs...
-
phpmyadminを使って商品のカテ...
-
ユーザにインフォメーション ス...
-
create databaseがうまくいきま...
-
お世話かけますが、エラー内容...
-
Mysqlのデータベースのリンク
-
DBファイルの中身を直接見れな...
-
同じSQL文で極端に検索が遅くな...
-
データベースの複製の仕方(mysql)
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
mysqlにおけるホストのパーセン...
-
メンテナンスプランについて
-
ユーザー名にアンダーバーを含...
-
PHP+MySQL初心者・参考サイトな...
-
MySQLでDBが作成できない
-
MySQLのエラーメッセージ(エラ...
-
MySQL のインポートでエラーが...
-
ワークフロー承認システムを作...
-
phpmyadminでのエクスポートに...
-
ASP.NETからのデータベースの作成
-
行ごとにアクセス権限
-
XAMPPのSQLの「エラー#109」とは
-
ACCESSからリンクでのレコード...
-
phpmyadminでの特権が表示方法
-
権限に関して
-
phpMyAdminのログインユーザー追加
-
phpmyadminでデータベースを見...
-
MSDE2000のadministratorでイン...
-
ODBC登録の権限について
-
MySQLにログインできなくて困っ...
おすすめ情報