ほぼ自分専用 MySQL TipS

このエントリで特に言及されていない場合は下記のとおりになります。

MySQL Version 4.0.25
Windows Server 2000
ユーザー = データベースユーザー

基本的に nic が使用する範囲内のものなので、広範な情報を得るならば
MySQL リファレンスマニュアルなどを参照してください。
Version 4.0.2 以降から有効とかそういうのが結構まぎれているので注意。
つうかこのエントリは俺がコピーするための書式セットということでひとつ。

一覧


初期設定

匿名ログインをできないように設定
インストール直後の MySQL サーバーには匿名ユーザーというユーザーがいるのでそいつを削除しよう。
匿名ユーザーなんて残してたっていいことなんてないのだからインストール直後には削除するくらいがベター。

MySQL サーバーのユーザーリストは mysql.user というテーブルに格納されているので、そのテーブルをいじれる権限のあるユーザーでログインしよう。
mysql> DELETE FROM mysql.user WHERE user = '';// 名前のない ( 匿名 ) ユーザーを削除
mysql> SELECT host,user FROM mysql.user;// 削除ができているか確認

環境変数の設定

システムのプロパティを開き詳細タブの環境変数ボタンをクリック システム環境変数の Path を選択して編集ボタンをクリック 変数値の末尾に ;C:\mysql\bin と入力して完了

ユーザーのパスワード変更

// root の場合
C:\mysql\bin> mysql -u root -pパスワード†1// root 権限で MySQL サーバにログインする
mysql> SELECT current_user();// root でログインできていることを確認
mysql> SET PASSWORD = password('新しいパスワード'); // root のパスワードを変更
mysql> EXIT // ログアウト
C:\mysql\bin> mysql -u root -p新しいパスワード// current_user(); で root でのログインを確認
mysql> SET PASSWORD FOR user_name@localhost = password('新しいパスワード')// 左の様にすることで root は任意のユーザーのパスワードを変更することができる
†1--「-p」とパスワードの間にはスペースが入りません

ユーザーの追加と権限

例)
mysql> GRANT INSERT,SELECT ON *.* TO user_name@localhost IDENTIFIED BY 'password';
解説)
ユーザー「user_name」は全てのデータベースとテーブルで INSERT 文と SELECT 文が使用できる。パスワードは「password」でホストはローカル。
書式)
grant 権限名 ( 列名 ) on データベース名.テーブル名 to ユーザー名@ホスト名 by 'パスワード';
パラメータ)
書式に付加できる句
説明
IDENTIFIED BY 'password'ユーザーのパスワードを設定
REQUIRESSL 接続の条件を設定
WITH GRANT OPTIONGRANT 文を実行したユーザーの権限と同じ権限を与える
WITH MAX_QUERIES_PER_HOUR **1時間辺り実行できる SQL の数 **回
WITH MAX_UPDATES_PER_HOUR **1時間辺り実行できる UPDATE 文の数 **回
WITH MAX_CONNECTIONS_PER_HOUR **1時間辺りサーバーに接続できる回数 **回
権限
権限名内容説明、備考
ALLWITH GRANT OPTION 以外全ての権限
ALTERALTER TABLE 文の実行テーブルの定義を変更する
CREATECREATE DATABASE, CREATE TABLE 文の実行データベースやテーブルを作成する
CREATE TEMPORARY TABLESCREATE TEMPORARY TABLE 文の実行テンポラリテーブルを作成する
DELETEDELETE 文の実行データの削除
DROPDROP DATABASE, DROP TABLE 文の実行データベースやテーブルの削除
INDEXCREATE INDEX, DROP INDEX 文の実行インデックスの作成、削除
INSERTINSERT 文の実行データの挿入
RELOADFLUSH 文の実行サーバ各種ステータス、ログのリセット
REPLICATION CLIENTレプリケーションのスレーブおよびマスタのサーバーの情報を知る権限
REPLICATION SLAVEレプリケーションのマスタからバイナリログを読み取るための権限 ( スレーブに必要 )
SELECTSELECT 文の実行データの検索
SHOW DATABASESSHOW DATABASES 文の実行データベースの一覧表示
SHUTDOWNMySQL サーバーの停止権限
UPDATEUPDATE 文の実行データの更新
GRANT OPTIONWITH GRANT OPTION と同意テーブル単位での設定
ホスト
user_name@localhostローカル接続ホストのドメイン名もしくはIPアドレスが使用でき、ワイルドカード「 % 」( 任意の文字 )と「 _ 」( 任意の1文字 )を利用することでホストをネットワークごとに管理することが可能。
例)user_name@'192.168.1.%'
user_name@'sv_.anywhere.net'
// よく使うであろう GRANT 文リスト
mysql> GRANT INSERT,SELECT,SHOW DATABASES ON db_name.* TO user_name@localhost IDENTIFIED BY 'password'; // ローカル接続で INSERT と SELECT と SHOW DATABASES が実行できるユーザー mysql> GRANT ALL ON db_name.* TO user_name@localhost IDENTIFIED BY 'password'; // ローカル接続で WITH GRANT OPTION 以外全てのコマンドを実行できるユーザー
既存のユーザーに GRANT を実行すると権限の追加ができるよ。

ユーザーの削除

MySQL サーバーのユーザーリストは mysql.user テーブルに格納されている。 最初に REVOKE で全ての権限を取り上げてから DELETE 文で mysql.user テーブルから削除しよう。
mysql> REVOKE ALL ON *.* FROM user_name@localhost;// ユーザー user_name の全ての権限を取り上げる
mysql> DELETE FROM mysql.user WHERE user = 'user_name';// ホストで選択する場合は AND host = 'remote_host' を付け加えること
mysql> FLUSH PRIVILEGES;// メモリ上のキャッシュも更新
mysql> SELECT host,user FROM mysql.user;// 削除ができているか確認

トラックバック

このエントリーのトラックバックURL:
http://o29.s1.xrea.com/spais/mt-tb.cgi/14

コメント

コメントしてください




保存しますか?