第3回 コマンドによるMySQL管理テクニック
鶴長 鎮一
MySQLユーザ会
2001/2/16
■外部ファイルによるバッチ処理
多くのフィールド定義を持つテーブルを作成する場合や、バッチ処理のように大量のINSERT文を発行したい場合には、mysqlプロンプトでは少々面倒です。1つ間違えば、もう1度データベースをDROPし、あらためてCREATEした後、もう1度テーブルの定義文を打ち直すことになります。
こんなときは、ファイルに保存しておいたものをリダイレクトできないかと考えます。例えば、テーブルの定義文を下記のように“temp.sql”というファイル名で保存してあったとします。
CREATE TABLE list ( |
| リスト temp.sql |
これを
$ mysql データベース名 < temp.sql |
とできたら、どれだけ操作が楽になるでしょう。この操作はもちろんできます。試しに上記のファイルを用意し、
$ mysql test < temp.sql |
としてみてください。
# mysql [オプション] [データベース] |
![]() |
| (画像をクリックすると拡大表示します) |
と確認できると思います。もちろんテーブルの定義にかかわらず、mysqlプロンプト内でタイプできるものは、外部にファイルとして書き込み、リダイレクトすることが可能です。
■結果をファイルへ出力
SQL文をファイルから読み込む方法を紹介しましたが、その逆も可能です。つまり、結果をファイルに書き出すことです。下記のように実行します。
$ mysql test > out.txt (mysqlプロンプトは返ってきません) |
out.txtファイルを見てみると、ちゃんと結果が出力されているはずです。
$ more out.txt |
重ね技もできます。
$ mysql データベース名 < 入力ファイル > 出力ファイル |
漢字などのマルチバイト文字を挿入したい場合もしばしば利用します。その場合、MySQLサーバの漢字コード(たいていはEUC)とファイルの漢字コードを同一にしておきましょう。
私もMySQLを業務に取り入れるようになって3年ほどたちますが、いまだにユーザーの参照権には悩まされます。しかし、それを解決する便利なコマンドが用意されています。
例えば、先ほど作成したTEST2テーブルをあるユーザーがパスワードの確認付きで、“select insert update delete”といった作業ができるようにするには、下記のようにします
$ mysql -u root |
これだけでは完全ではありません。
$ mysqladmin -u root reload |
とし、特権テーブルを再読み込みします。
これで、指定したユーザー名とパスワードでなら、TEST2に作られたどんなテーブルにもdelete、insert、references、select、updateの操作が許されるようになりました。
$ mysql -u ユーザー名 -p TEST2 |
とし、“Enter password:”で、設定したパスワードを入力します。今度はちゃんとmysqlプロンプトがエラーなく返ってくると思います。
では、これらの特権参照情報はどこに蓄えられているのでしょう? 第1回目の最後に「mysqlはMySQLデーモンが使用する設定テーブルです。MySQLはデータベースに接続するユーザーやホストの管理といった特権情報も自身のデータベースを用いています」と書いたのを覚えていますか? ちなみに
$ mysql -u root mysql |
でどんなテーブルを持っているか分かります。
■userテーブル
mysqlデータベースの中の1つ“userテーブル”を見てみましょう。
mysql> select * from user; |
上のような行を見つけることができると思います。何となくユーザーの確認に使用されているのは分かるかと思います。しかし、どの権限にも“N”のフラグが立っており、たとえユーザー名とパスワードが合っていたとしても、何もすることができないように思えます。
■dbテーブル
もう1つ“dbテーブル”をのぞいてみましょう。
mysql> select * from db; |
という行を見つけることができたと思います。今度はちゃんと、delete、insert、references、select、updateそれぞれのフィールドに“Y”が立っており、操作が可能なようになっています。
MySQLでは、mysqlデータベース中にある複数のテーブルにまたがり、特権情報を書き込みます。TEST2データベースに対し、deleteの権限を剥奪したい場合は、mysqlデータベースのdbテーブルを操作します。
$ mysql -u root |
以上で操作完了です。同様にパスワードを変更したい場合は、userテーブルに対し
mysql> update user set Password = password('新しいパスワード')
where User = 'ユーザー名'; |
とします。
これで、一通りの操作と管理がお分かりいただけたと思います。ちなみに、第1回で紹介させていただいた、『MySQL徹底入門』(翔泳社)でも詳しく紹介していますので、書店で見かけた際にはぜひ手に取ってみてください(私もMySQLユーザ会の一員として執筆に携わっております)。
これで、ようやく次回からアプリケーションを主体にしたお話ができます。まずはCGIの代名詞でもある“Perl”に触れてみましょう。次回まで時間がありますので、皆さんの方で下記のファイルがインストールされているか確認しておきましょう。
必要なファイル
- perl 5.00503 (ほとんどのLinuxディストリビューションでは標準だと思います)
- DBD/DBIモジュール
http://www.perl.com/CPAN-local/modules/by-module/DBI/ - MySQLモジュール
http://www.mysql.com/Downloads/Contrib/ - Data-ShowTable
http://www.perl.com/CPAN-local/modules/by-module/Data/
それぞれのインストールについては次回触れますが、ほとんどが
# perl Makefile.PL |
でインストールできると思います。
また、使っていくうちにバックアップの心配や、速度低下の危惧なども出てくるところです。下記のような事柄については、最終回に新たに場を設けてお話しさせていただきたいと思います。
- バックアップと復元
- テーブルの検査・修復・最適化
- チューンアップ
では、次回もご期待ください。
|
2/2
|
|
| Index | |
| 快速MySQLでデータベースアプリ! | |
| mysqladminの基本操作 データベースの作成 mysqlとmysqladminのオプション |
|
| コマンド操作の応用 外部ファイルによるバッチ処理 結果をファイルへ出力 |
|
| ユーザー参照権について userテーブル dbテーブル |
|
| 次回予告 | |
| 連載 快速MySQLでデータベースアプリ! |
| Linux Squareフォーラム データベース関連記事 |
| 連載:快速MySQLでデータベースアプリ!(全11回) 軽快な動作で知られるRDBMS、MySQLでDBアプリの構築を行う。MySQLのインストールに始まり、PerlやRubyなどのスクリプトでデータベースを操作する方法までを完全解説 |
|
| 連載:今から始める MySQL入門(連載中) 定番のLAMP(Linux+Apache+MySQL+PHP)構成でWebアプリケーション開発に挑戦! サンプルアプリの構築を進めながら、基礎知識や操作方法について詳しく解説する |
|
| 連載:Oracleマイスター養成講座(全6回) 本連載では、Oracleの管理・チューニング方法を紹介していく。これからOracleを始める人、そしてOracleをより深く理解したい人のための、一歩踏み込んだ実用講座 |
|
| 連載:DB2マイスター養成講座(全7回) 本連載では、DB2 UDBの実践的な運用・管理方法を紹介していく。DB2を利用するうえで必要な知識を、実運用を前提にDB2のプロが解説 |
|
| 特集:エンタープライズ市場に向かうMySQL
5.0[前編] MySQL 5.0の新機能をアルファ版でチェック 1月に公開された5.0アルファ版は大幅に拡張されており、エンタープライズ市場への進出を予感させる |
|
| 特集:Linuxで動くリレーショナルデータベース・カタログ データベースサーバのOSとしてLinuxを採用するケースが増えている。Linuxで動作する7つの主なリレーショナルデータベースを紹介する。製品導入の際の参考にしてほしい |
|
|
TechTargetジャパン
- 新しい記事も入っていて安心しました (2012/2/7)
Linux Squareのアクセスランキングを公開します。定番の記事ばかりでなく、連載中の記事もよろしくお願いいたします - エラーメッセージをどう扱うか? (2012/2/2)
今回は、スクリプト実行時にエラーが発生したことを知らせるメッセージの扱い方を説明します - ファイルのアップロードを制限する (2012/1/30)
HTTPクライアントがアップロードしてくるファイルの扱いについて解説します。そもそも受け入れる必要があるのか? ということのほかにも、いろいろ設定が必要です - OSに付属するシェルスクリプトを読んで技術を盗む (2012/1/27)
シェルスクリプトマスターに近づくには、他人から技術を盗まなければならない。OS付属のスクリプトから技術を盗もう
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -

