Upload page content

You can upload content for the page named below. If you change the page name, you can also upload content for another page. If the page name is empty, we derive the page name from the file name.

File to load page content from
Page name
Comment

Locked History Actions

mysql

mysql

TIPS

初期設定

文字コードの設定

サーバとクライアントがきちんとutf-8で会話するように/etc/my.cnfを設定する必要がある。参考サイトを参照のこと。

rootパスワードの設定など

mysqlをインストールした状態では、rootというユーザだけが定義されており(anonymousもあるようだが、どうせ削除する。というか、こんなものがいるのか?)、以下の状態になっている。

  • パスワードが設定されていない。誰でもrootになることができる。
  • rootは(linux等と同じで)、mysqlに関するどんなことでも行える権限がある。

そこで、まずはrootのパスワードを設定しなければならない。mysqldを起動した状態で、mysql_secure_installationコマンドを使用する。 個別にrootパスワードを設定する方法もあるのだが(この方法を紹介しているサイトが実に多い)、ウィザード風のmysql_secure_installtionを使用した方が簡単。

# mysql_secure_installation

このウィザードで、rootのパスワード設定、anonymousユーザの削除、testデータベースの削除等ができる。

操作

mysqlコマンドの操作

mysqlを操作するには、mysqlという「シェル」(?)を使う。このコマンドのパラメータは実に不思議で、以下のように記述する。

# mysql -u root -pパスワード

「-p」と「パスワード」の間に空白を入れてはいけない。 ただし、これではパスワードがエコーバックされてしまうので、以下のように入力するのが普通らしい。

# mysql -u root -p

このあとで、mysqlコマンドはパスワード入力を求めるが、それはエコーバックされない。

mysqlの中で使えるコマンドは以下の通り

  • show databases; ... データベース一覧を表示する。
  • drop database データベース名; ... データベースを削除する
  • use データベース名; ... データベースに接続する。
  • show tables; ... 接続中データベースのテーブル一覧を表示する。
  • create database データベース名; データベースを作成する。ハイフン等が含まれる名称の場合、バッククォートで囲まなければいけないらしい。シングルクォートは使用できない(妙な仕様だ)。
  • create user ユーザ名 identified by 'パスワード'; ... ユーザを作成する。パスワードはシングルクォートで囲むらしい。バッククォートではない。
  • grant all privileges on データベース.* to ユーザ名; ... 指定データベースについてのすべての操作権限をユーザ名に与える(これ間違っているかも)。

データベースのリストア

mysqlシェル(?)の中ではデータベースのリストアはできない。しかし、リストアするためには、あらかじめデータベースを作成しておかなければならないので、

  • いったんmysqlシェルの中でcreate databaseを行う。
  • mysqlシェルを終了して、リストア操作を行う。

という手順を踏む(もしかしたらシェルに入らなくともDB作成はできるかも)。リストアは以下のようにする。

# mysql -u user -pパスワード データベース名称 < バックアップファイル

データベース名称を忘れると、「全データベースをリストアする」という意味になるらしい。 一つのデータベースのバックアップを指定して「全データベースをリストア」しても、対象は一つだけになるのだろうか?不明である。

※最近のバージョンでは、以下のようにしないといけない(もちろんutf8のみ?)

# mysql -u user -pパスワード --default-character-set=utf8 データベース名称 < バックアップファイル

トラブル

mysqlコマンドにポート指定しても無視される

「--port=port_num」、「-P port_num」のようにポートを指定しても無視される。

チューニング

参考サイト