次の mysqld オプションはセキュリティに影響します。
メイン関数しか持っていないユーザ定義関数をロードすることが出来るかどうかを制御する。(xxx
という名前のユーザ関数を定義するとき。)
デフォルトでは、このオプションはオフで、少なくとも一つの追加関数を持ったユーザ定義関数だけをロードできる。これによって、不正なユーザ定義関数がロードされる危険性を防ぐ。詳細は
項25.3.4.6. 「User-Defined Function Security Precautions」 を参照。
--local-infile=0
を使用すると、クライアントで LOAD
DATA
ステートメントの
LOCAL
を使用できなくなる。
項4.6.4. 「LOAD DATA LOCAL
のセキュリティ関連事項」 を参照のこと。
新たなパスワードに古いパスワード形式でのハッシュの生成を強制する。(MySQL 4.0 以前のパスワードを強制する。) これは、サーバが古いクライアント プログラムをサポートする必要がある場合に有用である。詳細は 項4.7.9. 「MySQL 4.1 のパスワードハッシュ」 を参照。
--safe-show-database
(OBSOLETE)
前バージョンの MySQL
では、このオプションが SHOW
DATABASES
ステートメントに影響し、どのユーザにどのような権限が与えられているかを示すデータベース名を表示していた。MySQL
5.1
では、このオプションはデフォルトで使用不可としています。
ユーザ毎にデータベース名へのアクセスを制御することができるものは
SHOW DATABASES
権限が存在します。項12.5.1.3. 「GRANT
構文」
を参照のこと。
このオプションが有効になっている場合、ユーザに
mysql.user
テーブルへの
INSERT
権限がなければ、そのユーザは
GRANT
コマンドを使用して新規
MySQ
Lユーザを作成できない。事前設定された権限で新規ユーザを作成できるようにするには、対象ユーザに以下の権限を設定する。
GRANT INSERT(user) ON mysql.user TO 'user_name
'@'host_name
';
これで、ユーザは権限カラムを直接変更できないが、GRANT
コマンドを使用して他のユーザに権限を与えることができるようになる。
4.1 より前のパスワードでのアクセスを認証しない。
mysql
クライアントには、--secure-auth
オプションもあり、これは、サーバがそのクライアントに対して古い形式のパスワードを要求する場合に、サーバへの接続を拒否する。
サーバが一切の権限システムを使用しないようにする。これによりすべての人が、すべてのデータベースにアクセスできる ようになる。実行中のサーバに権限テーブルの使用を再開するには、mysqladmin flush-privileges または mysqladmin reload をシステム シェルから実行する。またはサーバ接続後に MySQL FLUSH PRIVILEGES ステートメントを発行する。このオプションは、プラグインとユーザ定義関数 (UDF) のロードを抑圧する。
MERGE
ストレージ
エンジンを無効化する (MySQL 5.1.12
での追加)。ユーザに MyISAM
テーブル t
にアクセスできる場合に、そのユーザが、t
へアクセスする MERGE
テーブル
m
を作成できる。しかし、t
でのこのユーザ権限が連続して呼び出だすときは、m
を経由して、t
へアクセスを継続できる。
ホスト名を決定できない。権限テーブルの
Host
カラム値すべてが、IP
アドレスまたは localhost
である必要がある。
TCP/IP 経由の接続を認めない。mysqld への接続をすべて Unix ソケットで行う。
ユーザが SHOW DATABASES
権限を持っていない場合に、SHOW
DATABASES
コマンドを無効にする。ステートメントはすべてのデータベース名を表示する。このオプションをセットしない場合、SHOW
DATABASES
はすべてのユーザが利用できるようになるが、ユーザが
SHOW DATABASES
権限、またはそのデータベースに関する何らかの権限を持っているときには、それぞれのデータベース名だけが表示される。注意:すべての
グローバル権限がデータベースに対する権限として扱われる。
--ssl
で始まるオプションで、SSL経由での接続をクライアントに許可するかどうかを指定し、SSL
キーと証明書
がどこにあるかを示す。詳細は
項4.8.7.3. 「SSL コマンド オプション」 を参照。