MySQL利用ガイド


MySQL利用ガイド(update 2007.05.04)

詳しい内容についてはMySQL オフィシャルマニュアル(Version 4.1)を参照ください。
Version 5.1 用は こちら です。
Version 5.6 用は こちら です。

MySQL利用ユーザ登録

MySQLに管理者としてログイン

  1
  2
# ./bin/mysqladmin -u root password -p
Enter password: (PASSWD)

新規データベース[sample]を作成

  1
mysql> create database sample;

新規ユーザー[hogehoge]を作成しデータベースを利用権限を割り当てる

  1
  2
  3
mysql> grant all on sample.* to hogehoge@localhost identified by 'hogegogeのパスワード';
mysql> flush privileges;
mysql> exit

新しく登録したユーザー[hogehoge]でMySQLへログイン

  1
# ./bin/mysql -u hogehoge -p

hogehogeで使用するデータベース[sample]を宣言

  1
  2
mysql> use sample&
Database changed

登録テーブルを表示

  1
mysql > show tables;

登録テーブルのフィールド表示

  1
mysql > show fields from テーブル名;

データベースの切り替え

  1
mysql > use データベース名

データベースの削除

  1
# mysqladmin -u root drop データベース名

MySQLの稼動

  1
# /bin/sh /usr/local/mysql/bin/safe_mysqld --user=mysql

MySQLの停止

  1
# ./bin/mysqladmin -u root -p shutdown


データのバックアップとリカバリ(リストア)

SQLファイルとしてバックアップする方法

MySQLのバックアップ(フルバックアップ)

  1
# ./mysqldump -u root -p(root password) -x --all-databases > Backup.sql

MySQLのバックアップ(個別)

  1
# ./mysqldump -u root -p(root password) (対象DB名) > Backup.sql

MySQLのリストア

  1
# ./mysql -u root -p(root password) < Backup.sql

データディレクトリごとバックアップする方法

MySQLのバックアップ(個別・ディレクトリごと)
ここでは例としてバックアップ先ディレクトリを /home/backup/mysql/ としています。

  1
# ./mysqlhotcopy (対象DB名) -u root -p(root password) /home/backup/mysql/ | logger -t mysqlhotcopy

MySQLのリストア リストアはバックアップしたディレクトリをMySQLのデータディレクトリにコピーし、パーミッション・所有者を設定しなおすだけです。

  1
  2
  3
  4
# cp -Rf /home/backup/mysql/(対象DB名)/ /var/lib/mysql/
# chown -R mysql:mysql /var/lib/mysql/(対象DB名)/
# chmod 700 /var/lib/mysql/(対象DB名)/
# chmod 660 /var/lib/mysql/(対象DB名)/*

*マークは半角で入力してください。

MySQLの自動起動設定

/usr/local/mysql/share/mysql のディレクトリに起動スクリプトが用意されているので、これを /etc/rc.d/init.d にコピーします。

  1
  2
  3
  4
# cd /usr/local/mysql/share/mysql
# cp mysql.server mysql
# chmod 755 mysql
# mv mysql /etc/rc.d/init.d

各起動レベルへシンボリックリンクを貼ります。

  1
  2
  3
  4
  5
  6
# cd /etc/rc.d/rc0.d/
# ln -s ..init.d/mysql K13mysql
# cd ../rc3.d/
# ln -s ..init.d/mysql S90mysql
# cd ../rc5.d/
# ln -s ..init.d/mysql S90mysql

現在、MySQLを実行中なら上記記載のコマンドで停止させて、自動起動設定ができているか確認します。

  1
# /etc/rc.dini.d/mysql start

ここでアクセスできない・・などのエラーが出る場合、パーミッションを確認してください。
/usr/local/mysqlに対して x の実行パーミッションがたっていますか?
たっていない場合、下記のコマンドでフォルダに対してパーミッションを設定します。

  1
# chmod 755 /usr/local/mysql

MySQLのデータベース最適化

テーブルにレコードの追加・削除を繰り返していくと無駄なディスク・エリアを確保してしまいパフォーマンスの劣化にもつながります。
最適化は定期的に実行するといいでしょう。

・SQLで最適化する場合

  1
mysql> OPTIMIZE TABLE テーブル名

・コマンドで最適化する場合

  1
# mysqlcheck -o -uユーザー名 -pパスワード データベース名

・全データベースを最適化する場合

  1
# mysqlcheck -A -o -uroot -prootパスワード

MySQLのバイナリログのクリア

数年運用を続けているとバイナリログが数GByteにも膨れ上がることがあります。
運用スタイルによってクリアしても大丈夫な場合は下記の方法でクリアができます。

  1
  2
  3
  4
  5
# mysql -u root -p
Enter password: <パスワード入力>
 
mysql> reset master;  <-クリアコマンド実行
Query OK, 0 rows affected (0.72 sec)

File 'NONEXISTENT/charsets/?.conf' not found (Errcode: 2) について

MySQLを運用始めるとapacheのエラーログに File 'NONEXISTENT/charsets/?.conf' not found (Errcode: 2) というエラーが吐き出される場合があります。
これはPHPのデフォルト設定では、MySQLのinclude・libディレクトリを
/mysql/include
/mysql/lib
にあると認識してしまい、実際にインストールした環境と異なるために起こるようです。
MySQLを /usr/lib/mysql にインストールした方は、

  1
  2
  3
# cd /usr/local/mysql
# ln -s /usr/include/mysql/ include
# ln -s /usr/lib/mysql/ lib

を実行してから、PHPのconfigure時に

--with-mysql=/usr/local/mysql 

を追加してみてください。



Last-modified: 2015-04-22 (水) 17:02:21 (966d)