Presentation is loading. Please wait.

Presentation is loading. Please wait.

3-10. MySQLシステムの管理  2004年6月10日  大北高広                01T6010F.

Similar presentations


Presentation on theme: "3-10. MySQLシステムの管理  2004年6月10日  大北高広                01T6010F."— Presentation transcript:

1 3-10. MySQLシステムの管理  2004年6月10日  大北高広                01T6010F

2 ◆MySQLサーバー(mysqld)の起動ユーザー
   /etc/rc.d/rc.localファイルに、マシン起動時にmysqldが立ち上がるように設定した場合は、rootユーザーが起動したことになります。他のユーザーで起動したい場合には、インストール時./configureで、prefixに読み書きのできるディレクトリを指定します。手動でmysqldを起動した場合は、そのときのログインユーザーが起動したことになります。

3 ◆rootのパスワード変更   最初に、MySQL起動時のパスワード設定をしましたが、このrootのパスワードを変更する場合は、mysqladminという管理ユーティリティを使います。    シェルから次のコマンドを発行し、フルパスでmysqladmin1を指定したあと、 -u root に続けて-pのオプションでパスワードを追加します。 $ / path_to_mysql / bin / mysqladmin -u root -p password “新 パスワード” Enter password : (現在のrootのパスワードを入力)

4   MySQL起動後にSQLコマンドを使って、MySQLのrootのパスワードを変更することも可能です。ユーザーのパスワード管理は、MySQLの中のmysqlというDBが行っています。その中の「user」というテーブルを変更することで、パスワードを変更します。 mysql > use mysql; mysql > update user set password = password(“新パスワード”) - > where user = “root”;   このあと、いったんexitしてMySQLを起動してみてください。もし新しいパスワードが機能せずにMySQLを起動できなければ、以下のシェルを発行し、パスワードのテーブルを更新してください。 $ / path_to_mysql / bin / mysqladmin -u root -p reload

5 ◆MySQLを起動できるユーザーの登録    MySQLを起動できるユーザーを新規登録します。mysqlというDBの中のuserテーブルに対して、新しいユーザーを追加します。 mysql > use mysql; mysql > insert into user set user = “tanaka”, -> password = password(“12345”),host = “localhost”; Query OK, 1 row affected(0.00 sec)   設定後の新ユーザーはMySQLを起動することが可能です。デフォルトでは、中にあるDBのうち「test」のみを使用することが可能です。    設定直後にこのユーザーでMySQLを起動できない場合は、パスワードテーブルの更新を行ってください。 $ /path_to_mysql/bin/mysqladmin -u root -p reload

6 ◆ユーザーのパスワード変更 現在MySQLを起動しているユーザーのパスワードを変更する場合は、ユーザー名を指定しないでSQL文を記述します。
mysql > set password = password(‘123’);   現在MySQLを起動していない別のユーザーのパスワードを変更する場合、set passwordのあとに「for ユーザー名」を追加します。この場合は、userテーブルに変更を加える権限が必要です。 mysql > set password for tanaka = password(‘123’); Query OK, 0 rows affected(0.00 sec)

7 mysql > update mysql.user set password = password(“789”)
   もしくは、mysqlの中のuserに対して、次のupdateのコマンドを発行します。 mysql > update mysql.user set password = password(“789”) -> where user = “tanaka”; 別のホストから接続するユーザーを設定する場合は、and host = “ホスト名”を追加します。 いずれの場合も確認メッセージなしに処理が終了します。設定したパスワードは必ず覚えておいてください。 「パスワードなし」に指定する場合は、次のように空文字を指定します。 mysql > set password = password(‘’);

8 ◆ユーザーの権限を管理 ・権限を与える:grant
   新しいユーザーを追加したら、そのユーザーに対してテーブルやコマンドごとの使用権限を与えたり、権限を無効にしたりできます。そのためにSQLコマンドの「grant」を使います。デフォルトではrootのみ使用できます。 mysql> grant select on ADDRESS_DB.JOBLIST_T to -> identified by “tanaka_pass”; Query OK, 0 rows affected(0.01 sec)   次のコマンドで、設定した権限を有効にします。 mysql> flush privileges; Query OK, 0 rows affected(0.00 sec)

9 そして、ユーザーtanakaがADDRESS_DBにアクセスしてもテーブルはJOBLIST_Tしか見ることができません。
mysql > use ADDRESS_DB; Database changed mysql > show tables; | Tables_in_ADDRESS_DB | | JOBLIST_T | 2 rows in set(0.00 sec)   他のテーブルを使おうとすると、エラーが返ってきます。 mysql> select * from FRIENDS_T; ERROR 1142 : select command denied to user: for table ‘FRIENDS_T’

10 複数の権限を与える場合や複数のユーザーに対して同じ権限を与える場合は、ユーザー名をカンマで区切って記述します。
   複数の権限を与える場合や複数のユーザーに対して同じ権限を与える場合は、ユーザー名をカンマで区切って記述します。 mysql > grant select,insert on ADDRESS_DB.JOBLIST_T to -> identified by -> identified by -> “tanaka2_pass”;    権限を与える際、「すべてのホストに対して」SQLコマンドを発行できるという指定は、” ”内にワイルドカード%を、ADDRESS_DBの「全部のテーブルに対して」という場合は、次のように * を使います。 mysql> grant select on ADDRESS_DB. * to “tanaka”;    onのあとに*.*と指定すると、「すべてのDBのすべてのテーブルに対して」の意味になる。

11    カラムごとの権限設定ですが、発行権限を与えるコマンドのあとに、( )でカラム名を記述します。もしテーブルに対して発行権限のあるコマンドがあれば、そちらが優先されます。
mysql > grant select(JOB_C) on ADDRESS_DB.JOBLIST_T to -> identified by “tanaka3_pass”; Query OK, 0 rows affected(0.00 sec)    コマンド設定を反映させます。 mysql> flush privileges; Query OK, 0 rows affected(0.00 sec)   ユーザtanaka3がADDRESS_DBのJOBLIST_Tに対して全カラムの全レコードを表示させようとすると、カラムJOBID_Cへのselect権限がない場合は、エラーが出ます。   mysql > select * from JOBLIST_T; ERROR 1143: select commnad denied to user: for column ‘JOBID_C’ in table ‘JOBLIST_T’

12 そして*を使わず、JOB_Cのみを指定してselectすると、JOB_Cの全レコードを表示させることができます。
mysql > select JOB_C from JOBLIST_T; | JOB_C | | 営業販売 | | プログラマー | | デザイナー | | インストラクター | |  ミュージシャン | 5 rows in set(0.00 sec)

13 ■特別な権限 ■コマンドレベルの権限 指定できる権限の種類のほとんどがSQLコマンドと呼応しています。
all ・・・ 「コマンドレベルの権限」「管理レベルの権限」のすべてのコマンドが利用できる権限を与える。rootと同じ権限になる。 ■コマンドレベルの権限 alter ・・・DBの持つテーブルの構造やデータ型を更新できる権限 create ・・・DBやテーブルを作成できる権限 delete ・・・テーブルの中のレコードを削除できる権限 drop ・・・DBやテーブルを削除できる権限 index ・・・テーブルのインデックスを作成・削除できる権限 insert ・・・テーブルに新しくレコードを追加できる権限 select ・・・テーブルからレコードを取り出せる権限 update ・・・テーブルのデータを更新できる権限 usage ・・・権限なしユーザーを作成する権限

14 ■管理レベルの権限 file ・・・MySQLサーバーがどのファイルへ読み書きするかを指定する権限。この権限を与えるとかなりセキュリティレベルが下がるので注意。 grant ・・・ユーザーに対して権限を与えられる権限 process ・・・show processlistを使って全スレッドに関する情報を見たり、プロセスを切ったりすることだできる権限 reload ・・・reload,refresh,flushなどを使って、ログや管理テーブルなどを更新したり0に戻したりする権限 shutdown ・・・MySQLサーバをシャットダウンする権限

15 ・ユーザーの権限を無効にする:revoke
   grant文で発行した権限を無効にするSQLコマンドです。grantの場合、ユーザー名の前に指定するものはtoでしたが、revokeの場合はfromになります。 mysql> revoke select, insert on ADDRESS_DB.JOBLIST_T from -> Query OK, 0 rows affected(0.00 sec)   次のコマンドで、設定した権限を反映させます。 mysql> flush privileges; Query OK, 0 rows affected(0.00 sec)

16 ◆ユーザー管理DBについて ユーザー名や権限は、mysqlというDBが管理しています。このDB
  の中にはいくつかのテーブルがあり、権限などの内容によって各テーブルが使用されます。 mysql> use mysql; Database changed mysql> show tables;   mysql中のテーブルである、 columns_priv , db , func , host , tables_priv , user   の名前が表示されます。    ・ユーザーを設定すると、userテーブルに追加されます。パスワードもこのテーブルで管理されています。    ・hostテーブルでは、ホストごと    ・dbテーブルではDBごと    ・tables_privではテーブルごと    ・columns_privではカラムごとに権限が管理されています。

17 mysql > select * from db;
| Host | Db | User | Select_priv | | % | test | | Y | | % | test\_% | | Y | | % | ADDRESS_DB | tanaka | Y | Insert_priv | updata_priv | Delete_priv | Create_priv | Drop_priv | Y | Y | Y | Y | Y | N | N | N | N | N | Grant_priv | References_priv | Index_priv | Alter_priv | N | Y | Y | Y | N | N | N | N | 3 rows in set(0.00 sec)

18 tebles_privを見てみます。これは、「テーブルごとの権限」に関するテーブルです。
mysql > select * from tables_priv; | Host | DB | User | Table_name | | localhost | ADDRESS_DB | tanaka2 | JOBLIST_T | | localhost | ADDRESS_DB | tanaka3 | JOBLIST_T | Grantor | Timestamp | Table_priv | Column_priv | | | Select,Insert | | | | | Select | 2 rows in set(0.00 sec)    各カラムに対して設定できる権限は、select, insert, update, referencesの4つです。

19 権限に関する詳細は、次のURLを参照してください。
   columns_privを見てみます。 mysql > select * from columns_priv; | Host | DB | User | Table_name | Columns_name | | localhost | ADDRESS_DB | tanaka3 | JOBLIST_T | JOB_C | Timestamp | Column_priv | | Select | 1 row in set(0.00 sec)    権限に関する詳細は、次のURLを参照してください。    

20 ◆情報を見る: show show index from TABLE01; ・・・TABLE01上で作成されたインデックスが表示される
show processlist; ・・・サーバーのスレッド情報を表示 show status; ・・・現在の接続状況 show variables; ・・・サーバーに関する変数とその値を表示


Download ppt "3-10. MySQLシステムの管理  2004年6月10日  大北高広                01T6010F."

Similar presentations


Ads by Google