トップ «前の日記(2009年07月25日) 最新 次の日記(2009年07月31日)» 編集

Masa's blog

検索キーワード:

2009年07月30日 MySQL-5.x 儂(わし)的解釈によるメモ(運用編) [長年日記]

_ MySQL-5.x 儂(わし)的解釈によるメモ(運用編)

Slackware-12.xに標準でインストールされるMySQL-5.xをそのまま運用する際に 最低限必要と思われる知識に関するメモ。いろんなページの切り貼り。

Java儂(わし)的解釈によるメモ(JDBC + MySQL編)と若干かぶってるのは御勘弁を。

前提条件

  • MySQLの管理者 root
  • MySQLの一般ユーザ兼管理者 m-ito

データベース領域の初期化

mysqldを起動するに当たって、一度だけ実行する必要がある。

# mysql_install_db --user=mysql

mysqld起動スクリプトの修正

ネットワーク越しにアクセス(JDBC経由も含む)するために起動オプションを修正する (/etc/rc.d/rc.mysqld)。

#SKIP="--skip-networking"  <-- コメントアウト

MySQLコンフィグファイル設定

デフォルト文字コード、デフォルトストレージエンジンの設定。

標準のストレージエンジンであるMyISAMは速度は早いが、トランザクションが サポートされていない。非標準のストレージエンジンであるInnoDBMyISAMに 比べると速度が劣るがトランザクションをサポートする。

汎用機畑で育った私としてはトランザクションが無い(すなわちcommitrollbackが無い)のは信じられないので、デフォルトのストレージエンジンを InnoDBに変更する。また、クライアント、サーバともにデフォルトの文字コー ドをujisとする。最近はutf8が主流になりつつあるそうですが...。

 # cp /etc/my-small.conf /etc/my.cnf
 # vi /etc/my.cnf
 [client]
 ##default-character-set = utf8
 default-character-set = ujis

 [mysqld]
 ##default-character-set = utf8
 default-character-set = ujis
 default-storage-engine=innodb

mysqld起動

# chmod +x /etc/rc.d/rc.mysqld; reboot

MySQL管理者(root)のパスワード設定

$ mysqladmin -u root password ROOT-PASSWORD

データベース(testdb)の作成

$ mysql -u root -p
Enter password: XXXXXXXXXXXXX <-- ROOT-PASSWORDを入力する
mysql> create database testdb character set ujis;
mysql> quit

一般ユーザ(m-ito)を作成

$ mysql -u root -p
Enter password: XXXXXXXXXXXXX <-- ROOT-PASSWORDを入力する
mysql> create user 'm-ito'@'localhost' identified by 'USER-PASSWORD';
mysql> quit

一般ユーザ(m-ito)にデータベースへのアクセス権を設定

$ mysql -u root -p testdb
Enter password: XXXXXXXXXXXXX <-- ROOT-PASSWORDを入力する
mysql> grant all on testdb.* to 'm-ito'@'localhost' identified by 'USER-PASSWORD';
mysql> quit

一般ユーザ用MySQLコンフィグファイル設定

パスワードの設定とデフォルト文字コードの設定。このあたりは必要に応じ て...。

$ cp /etc/my-small.conf ~m-ito/.my.cnf
$ chmod 600 ~m-ito/.my.cnf
$ vi ~m-ito/.my.cnf
[client]
password = USER-PASSWORD
##default-character-set = utf8
default-character-set = ujis

データベース、テーブル情報表示

$ mysqlshow -u m-ito -p testdb HogeTable

データベースのダンプ出力

$ msql -u root -p testdb
LOCK TABLES HogeTable READ;
CTRL-Z
$ mysqldump -u m-ito -p testdb HogeTable
$ mysqldump -u m-ito -p --databases testdb
$ mysqldump -u m-ito -p --all-databases
$ fg
UNLOCK TABLES;

ユーザ管理

$ mysql -u root -p
権限の種類
  • DELETE : DELETE構文を実行できる権限。
  • INSERT : INSERT構文を実行できる権限。
  • SELECT : SELECT構文を実行できる権限。
  • UPDATE : UPDATE構文を実行できる権限。
  • INDEX : インデックスの作成と削除が行える権限。
  • REFERENCES : テーブルのリファレンスが参照できる権限。
  • USAGE : すべての権限がない。
管理者の追加
GRANT ALL ON *.* TO 'm-ito'@'%' IDENTIFIED BY 'USER-PASSWORD' WITH GRANT OPTION;
GRANT ALL ON *.* TO 'm-ito'@'localhost' IDENTIFIED BY 'USER-PASSWORD' WITH GRANT OPTION;
FLUSH PRIVILEGES;
一般ユーザの追加
GRANT SELECT,INSERT,UPDATE,DELETE ON testdb.* TO 'm-ito'@'localhost' IDENTIFIED BY 'USER-PASSWORD';
FLUSH PRIVILEGES;
ユーザ権限の削除
REVOKE ALL ON testdb.* FROM 'm-ito';
FLUSH PRIVILEGES;
ユーザの削除

REVOKEにて全ての権限を削除後

DROP USER 'm-ito';
FLUSH PRIVILEGES;
ユーザの権限確認
SELECT * FROM mysql.user WHERE User='m-ito';

データベースの削除

mysql -u root -p
DROP DATABASE testdb;

パスワードの設定

mysql -u root -p
SET PASSWORD FOR 'm-ito'@'%' = PASSWORD('USER-PASSWORD');

CSVファイルの取り込み

mysql -u root -p
LOCK TABLES HogeTable WRITE;
LOAD DATA INFILE "Hoge.csv" INTO TABLE HogeTable FIELDS TERMINATED BY ',' ENCLOSED BY '"';
UNLOCK TABLES;
  • フィールド区切り文字のデフォルトは「タブ」。
  • 文字列囲み文字のデフォルトは「無し」。

CSVファイルへの書き出し

mysql -u root -p
LOCK TABLES HogeTable READ;
SELECT * FROM HogeTable INTO OUTFILE "Hoge.csv" FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"';
UNLOCK TABLES;
  • フィールド区切り文字のデフォルトは「タブ」。
  • 文字列囲み文字のデフォルトは「無し」。

_ BIND 9の脆弱性について

BIND 9にてDynamic DNS機能に関して脆弱性が報告されている。DoSの対称になってしまうとのこと。

JVNVU#725188 ISC BIND 9 におけるサービス運用妨害 (DoS) の脆弱性

早速、libretto100(myh.no-ip.org)のbindもバージョンアップ。

bind-9.4.3-P3