検索
連載

コマンドによるMySQL管理テクニック快速MySQLでデータベースアプリ!(3)(1/2 ページ)

前回に引き続き、MySQLのコマンドについて解説する。また、MySQLの設定を保存しているmysqlデータベースの内部構成を知ることで、MySQLへの理解を深めてほしい。

PC用表示 関連情報
Share
Tweet
LINE
Hatena

mysqladminの基本操作

データベースの作成

 前回は、既存のtestデータベースを使って操作を解説しました。肝心のデータベース作成の手順については、まだお話ししていませんでした。

 データベースの作成/削除やMySQLサーバの再起動/停止といった重要な作業は“mysqladmin”コマンドで行います。このmysqladminコマンドを使えるのは、許されたユーザーだけに限られます。試しに、一般ユーザーでMySQLサーバの権限参照定義を再読み込みさせてみましょう。

$ mysqladmin reload
mysqladmin: reload failed; error: 'Access denied for user: '@localhost' (Using password: NO)'

 上記のように、一般ユーザーの操作は受け付けないようになっています。特別な操作が許されるスーパーユーザー(root)で同じようにやってみましょう(MySQLサーバとmysqladminコマンドを使用するサーバは同一である必要があります)。

# mysqladmin reload

 今度は何事もなく終了したと思います。しかし、mysqladminコマンドを使うたびにsuしていたのでは操作が煩わしくなります。そこで、一般ユーザーでmysqladminコマンドを使用できるように、オプションでユーザーを指定します。

$ mysqladmin -u root reload

 インストールをしただけの状態では、rootユーザーに対するパスワードが設定されていないため、パスワードの入力を促す、“-p”オプションは指定していません。レンタルサーバを利用している場合などは、管理者でないと使えないので、mysqladminを使う必要がある場合はサーバ管理者に相談しましょう。

 では上記のことをふまえて、まずはデータベースを作成してみましょう。

$ mysqladmin -u root create TEST2

 mysqlshowコマンドで確認してみましょう。

$ mysqlshow
+-----------+
| Databases |
+-----------+
| TEST2     |
| mysql     |
| test      |
+-----------+

 このように、TEST2が作られていれば成功です。

 データベースを削除する場合は

$ mysqladmin -u root drop TEST2

とし、

Dropping the database is potentially a very bad thing to do.
Any data stored in the database will be destroyed.
 
Do you really want to drop the 'TEST2' database [y/N] 

の質問に“y”とタイプすれば、削除されます。

 作成したデータベースを切り替えて操作するには、mysqlコマンドを起動する際にデータベースを指定します。

$ mysql データベース名

 ですが、この方法ではデータベースを切り替えるたびにmysqlプロンプトを抜ける必要があります。一連の操作の中で、mysqlコマンドを終了させることなくデータベースを切り替えるには下記のようにします。

$ mysql test
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
 
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2 to server version: 3.23.28-gamma
 
Type 'help;' or '\h' for help. Type '\c' to clear the buffer
 
mysql> use TEST2; 

 これで、データベースを切り替えることができますが、実際には

ERROR 1044: Access denied for user: '@localhost' to database 
'TEST2'

となってうまくいかないと思います。これは、参照権の問題です。TEST2データベースを作成した際、rootユーザーでmysqladminコマンドを使用したため、データベースの操作もrootのみに限られてしまったのです。これについては、後ほど紹介するユーザー参照権についてで説明します。

mysqlとmysqladminのオプション

 mysql/mysqladminコマンドのオプションの指定方法は2通りあります。1つは前出の

$ mysqladmin -u ユーザー名 [操作]

のように、オプションを“-”で指定して値を入力する方法。もう1つは

$ mysqladmin --user=ユーザー名 [操作]

のように、“--”の後にオプションを指定し、“=”の後に値を入力する方法です。どちらを使うかは好みの分かれるところです。

 よく利用されるオプションには下記のようなものがあります。

[mysqlコマンドオプション]

  • --user=ユーザー名
  • -u ユーザー名
     ユーザー名の指定

  • --password
  • -p
     サーバに接続する際のパスワードの指定。パスワードは“Enter password:”プロンプトの後に入力する

  • --host=ホスト名
  • -h ホスト名
     MySQLサーバのホスト名(またはIPアドレス)

  • --port=ポート番号
  • -P ポート番号
     MySQLサーバのポート番号を指定する場合。デフォルトの“3306”で起動されている場合は省略可能

  • --default-character-set=キャラクタセット
     MySQLサーバのキャラクタセットを指定。EUCなら“ujis”。SJISなら“sjis”

[mysqladminコマンドオプション]

  • --user=ユーザー名(-u ユーザー名)
  • --password(-p)
  • --host=ホスト名(-h ホスト名)
  • --port=ポート番号(-P ポート番号)

はmysqlコマンドと同じように指定できます。

 ほかにも下記のようなものがあります。

  • --help
  • -?
     ヘルプの表示

  • --version
  • -V
     バージョンの表示

 そのほかのオプションについては

http://www.mysql.gr.jp/jpdoc/3.23/manual.ja_Installing.html#Command-line_options

を参照してください。

Copyright © ITmedia, Inc. All Rights Reserved.

       | 次のページへ
ページトップに戻る