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

Slides:



Advertisements
Similar presentations
ASP 入門2 ー授業でアンケート集計ー. ねらい 総合実習等で、相互評価を行った際の集計を ASP + AccessDB で行う。 相互評価の点数部分は見られないように、感 想部分(テキスト)は見えるようにする。 ( 発表直後のフィードバック ) AccessDB に蓄積した得点は、 Excel.
Advertisements

ネットワークからみるPCC 寺内康之.
SQL データベースアクセスのための文法 担当 岡村耕二 月曜日 2限 平成20年度 情報科学III (理系コア科目・2年生)
7-1.WEKOコンテンツ 一括登録 マニュアル Version2.5
UNIX利用法.
UNIX利用法 情報ネットワーク特論資料.
SQLite3
インターネット技術特論 H:SQLite3 山口 実靖
情報理工学部 情報システム工学科 ラシキアゼミ 3年 H 井奈波 和也
WebLSDローカルキット2008のインストール1
SQL データベースアクセスのための文法と MySQL
知的システム構築工房   Linux設定セミナーシリーズ 第6回 MySQL設定 2011年3月17日(木) 株式会社 アセンディア 1.
実習用サーバの利用開始手順 (Windowsの場合) TeraTerm Proをインストール 公開鍵をメールで送付
3-1 MySQLについて 発表者:藤村元彦 自然言語処理研究室.
ISCCD7.5構築 その2 Middleware 導入
MySQLに接続するデータベースプログラム
IBM SmarterCloud Control Desk 7.5 新機能ガイド - セルフサービス・センター
6-2 データベース 1.SQLite SQLを単純化した SQLite を使ってデータベースを操作 表「fruit」
MySQLとPHPによるWebサーバー Apache IIS PHP サーバー クライアント 【Webサーバソフト】 【RDBMS】
SQL J2EE I 第3回 /
Al-Mailのインストールと使い方 インストール –1 (pop-authの設定、Al-Mailのインストール用ファイルをダウンロード)
3-2.データを取り出す 2004年 5月20日(木) 01T6074X 茂木啓悟.
09 06/23 PHP と SQL (MySQL) の連携 その2
(B2) 親: minami, kazuki 多様な認証機器に対応する 認証システム (B2) 親: minami, kazuki.
パフォーマンスチューニング on Rails
SAP & SQL Server テクニカルアーキテクチャ概要 マイクロソフト株式会社 SAP/Microsoft コンピテンスセンター
14.テーブル定義,一対多の関係,多対多の関係, 外部キー,索引(インデックス),データベース操作
マイクロソフト Access での SQL 演習 第1回 SQL問い合わせ(クエリ)
基幹理工学研究科 情報理工学専攻 後藤研究室 修士1年 魏 元
ファイアウォール 基礎教育 (2日目).
データベースとJavaをつなげよう! ~JDBC~
データベース基礎 2016年3月10日 JWord株式会社 サービス開発部 中川 陽平.
第2回 SQL インジェクション その攻撃と対処 NECラーニング 山崎 明子.
2004/05/13 3-4 データ型(カラムタイプ) について 発表者:藤村元彦 自然言語処理研究室.
SQL パフォーマンス チューニング ~ カバーリングインデックス/クエリヒントの利用~
九州大学キャンパスクラウド 利用法 情報ネットワーク特論 講義資料.
データベースを使ったプログラミング ~JDBCを使ってみよう~
Oracle XEを使ってみよう 初音玲.
SQL データベースアクセスのための文法 担当 岡村耕二 月曜日 2限 平成21年度 情報科学III (理系コア科目・2年生)
第2回.リレーショナルデータベース入門 SQL を用いたテーブルへの行の挿入 SQL 問い合わせの発行と評価結果の確認.
第1回.リレーショナルデータベースを使ってみよう
第2回.リレーショナルデータベース入門 SQL を用いたテーブルへの行の挿入 SQL 問い合わせの発行と評価結果の確認.
SQL パフォーマンス チューニング ~ プランガイドの利用~
第3回.テーブルの結合 結合条件 SQL を用いた結合問い合わせ.
第3回.テーブルの結合 結合条件 SQL を用いた結合問い合わせ.
09 06/23 PHP と SQL (MySQL) の連携 その1
gate-toroku-system のしくみ
3-6.インデックスについて 3-7.関数と併用されることの 多いMySQLコマンド
3-3.テーブルを更新する 2004年 4月22日(木) 01T6074X 茂木啓悟.
「Webデータベースの構築技術」正誤表 ページ 項目 誤記 訂正 18 表1.4 アクセス 権限の削除 ・・・テーブル名 TO ユーザ名
テーブル設計を後から変更 現場で使える小技のご紹介 株式会社ジーワンシステム 生島 勘富(イクシマ サダヨシ)
09 06/23 PHP と SQL (MySQL) の連携 その2
Oracle XEを使ってみよう 初音玲.
データベース設計 第8回 クライアント=サーバーモデル(2)
UNIX演習 情報ネットワーク特論.
ファイルのアップロード HTMLファイルをWebサーバにアップロード 名商大のWebサーバ(opinion.nucba.ac.jp)
第4回 ファイル入出力方法.
3-8・関数を使ってデータを取り出す   2004年6月3日(木) 01T6010F               大北高広.
3.リレーショナルデータベース,主キー, SQL
gate登録システム: 設計ポリシーから使い方まで
関係データベースとSQL MZ Platform講習会(上級).
CO-Client Opeartion 1.1 利用履歴データベースの設計 (スキーマ バージョン 対応)
09 06/23 PHP と SQL (MySQL) の連携 その3
第2回.リレーショナルデータベース入門 SQL を用いたテーブルへの行の挿入 SQL 問い合わせの発行と評価結果の確認.
gate-toroku-system のしくみ
アプリケーションゲートウェイ実験 2001.10.5 鬼塚 優.
Sftp の使い方 牧之内研究室 修士1年 安部智貴 2004/04/13.
SQL J2EE I (データベース論) 第3回 /
クリエイティブ リサーチ 2019/05/20 日本工学院八王子専門学校 M.Katsube.
SQL データベース論 第11回.
Presentation transcript:

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

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

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

  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

◆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

◆ユーザーのパスワード変更 現在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)

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(‘’);

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

そして、ユーザー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: ‘tanaka@localhost’ for table ‘FRIENDS_T’

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

   カラムごとの権限設定ですが、発行権限を与えるコマンドのあとに、( )でカラム名を記述します。もしテーブルに対して発行権限のあるコマンドがあれば、そちらが優先されます。 mysql > grant select(JOB_C) on ADDRESS_DB.JOBLIST_T to -> tanaka3@localhost 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: ‘tanaka3@localhost’ for column ‘JOBID_C’ in table ‘JOBLIST_T’

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

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

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

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

◆ユーザー管理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ではカラムごとに権限が管理されています。

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)

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 | -----------------------+--------------------------+------------------+-------------------+ root@localhost | 20000811104214 | Select,Insert | | root@localhost | 20000811100132 | | Select | -----------------------+--------------------------+-------------------+-------------------+ 2 rows in set(0.00 sec)    各カラムに対して設定できる権限は、select, insert, update, referencesの4つです。

権限に関する詳細は、次の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 | 20000811100132 | Select | 1 row in set(0.00 sec)    権限に関する詳細は、次のURLを参照してください。    http://www.softagency.co.jp/mysql/TIPS/permission.html

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