mysql 設定メモ

追記2
mysql のデータファイルを別パーティションにうつしたので追記。
例えば、/path/mysql に移すことにする。

# service mysql stop
# mv /var/lib/mysql /path/mysql
# vi /etc/mysql/my.cnf
- datadir = /var/lib/mysql
+ datadir = /path/mysql
# vi /etc/apparmor.d/local/usr.sbin.mysqld
+ /mnt/mysql/ r,
+ /mnt/mysql/** rwk,
# service apparmor restart

↑し忘れてもちゃんと動いたので、必要かは不明、いちおう後でやっといた

# service mysql start

なお、UNIX ソケットファイル socket = hogehoge を ramdisk とか早いディスクに移しても意味がないらしい。ファイルを実際に read/write するわけではないから、だそうな。

追記
mysql を 5.5 にして、チューニングしたので追記。
詳しくは、これだけはやっておきたいMySQL 5.5系の設定 - uehatsu's tech blog

character-set-server    = utf8
skip-character-set-client-handshake
default-storage-engine  = InnoDB
collation-server        = utf8_general_ci
innodb_file_format      = Barracuda
innodb_file_per_table   = 1
innodb_use_sys_malloc   = 0

先のページの通りだとエラーが出るので、default-storage-engine はIとDBをキャピタルに。(というか、5.5系ではもともと、InnoDB がデフォルトらしいので、不要っぽい)
また、innodb の独自ヒープを使えないよ、というエラーがなんか出て気持ち悪いので、innodb_use_sys_malloc=0 を追加した。

手順

  1. バックアップ。
    # mysqldump -u USER -p --opt DBNAME --net_buffer_length=8000 | gzip > GZIPFILE

    オプションの順番はテキトー

  2. DB削除。
    上の手順で--opt をつけていれば、drop table は関係ない。
    どこまでやるかは、どれだけスッキリしたいかで変えれば良いと思う。
    mysql の該当テーブルを消す。(drop table TBLNAME;)
    データベースごと消すのもあり。(drop database DBNAME;)
    mysql を完全に消すのもあり。(apt-get purge mysql-hogehoge、hogehoge は、色々あるやつ全部)
  3. mysql 5.5 を入れる。
  4. 設定変更。
    /etc/my.cnf へ追記する内容。

    character-set-server=utf8
    skip-character-set-client-handshake
    default-storage-engine=innodb
    collation-server=utf8_general_ci
    innodb_file_format=Barracuda
    innodb_file_per_table=1
    
  5. mysql 設定反映と確認。
    # service mysql restart
    # mysql -p
    > show variables like 'inno%';
    
  6. mysql を purge した場合、php5-mysql も消えてるかも知れんので再インストール。
    # apt-get install php5-mysql
    # service apache2 restart
    
  7. リストア。
    mysql の初期設定とか、DB 作ったりとか、dump した sql ファイルの取り込みは下の旧エントリを確認のこと。

これで、もと通りのはず。
でも、CPU の非力なマシンなので、未展開の領域にアクセスした時、応答が恐しく遅くなる。
あんまり酷かったら、このオプション (Barracuda) は外すかも…

追記、ここまで。

apache2 の設定メモ の続編.
mysql の設定とか.

設定

  • # mysql_secure_installation

    で初期設定.基本,全部 Y で良い.root パスをインストール時からイチイチ変えるのがメンドイ時は,最初だけn.

  • 全てのユーザー情報が削除されているため,root ログインのみ可能.

    # mysql -u root -p
  • ユーザの追加.
    grant all privileges on databasename.* to username@localhost identified by 'password';
    show grants for username@localhost;
    flush privileges;
    
  • ユーザーの DB を作成.
    $ mysql -u username -p
    > create database databasename;
    
  • データ移行.
    $ mysql -u username -p databasename < sqlfile

その他のtips

/etc/my.cnf の [mysqld] ディレクティブに

character-set-server    = utf8
collation-server        = utf8_general_ci

を追記すると、サーバー文字コードは変更可能
DB文字コードは、mysqlクライアント内で目的のDBに接続して、

alter database DBNAME character set utf8;

文字コードの調べ方は、
mysql クライアント内で

> status

または、

> show variables like "chara%";

1行が長すぎてエディットが難しいときは、

# mysqldump -u USERNAME -pPASSWD --opt --default-character-set=utf8 DBNAME --net_buffer_length=8000 | gzip > sql.gz

としてやれば、1行毎の文字数が 8,000 文字以下となるよう出力してくれる。

ダンプした sql ファイルの取り込みは、クライアントから

> source SQLFILE;

テーブルの文字コードを調べるには、show create table TBNAME; でテーブル作成コマンドを見る。
同じように、show create database DBNAME; でデータベース作成コマンドも見れる。

Android で FTPd

ES ファイルエクスプローラで宅内のサーバが見えない。
私の場合、モバイル回線からインターネット経由では見えているので、サーバ自体には問題ないと思うのだが、webdav に ssl + sni を使っているために、宅内でアクセスしようとすると ip アドレスでは目的の vhost にアクセスができず、ドメイン名でアクセスしようにも dns はグローバルアドレスを返すという問題があり、うまく宅内で動作しない。
でまぁ、FTPd を立てようと、どのソフトがいいかなーと探していて見付けたのが以下のエントリー。
Android端末とPCとのネットワーク越しのファイルのやりとりについて | 相方が携帯紛失 で、私と同じ状況の人がいた。

で、これって ES ファイルエクスプローラにも機能として具備されてんじゃねーの?と思ってアプリのメニュー内を探してみたらあった。
メニューボタン>Tools>Remote Manager で FTPd の on/off ができる。
ルートを external_sd にできるのもポイント高い。
なお、上の記事の人と同じくアプリのローカライズに悩まされた挙句、私はもともと英語ロケールで Android を使っているので、日本語でどう表示されるかは知らない。

Android のファイラ、万能やなぁ。

WinPcap で起動時に自動オンしない場合のサービスオンオフ

まぁ内容は、ここに載ってることそのまんま。
WinPcapのインストール時に聞かれる「Automatically start the WinPcap driver at boot time」で困った場合の対処法 - Eiji James Yoshidaの記録
Wireshark に必須の WinPcap を、常に起動する設定にしなかったら、なかなか起動できないよって話。
サービスの起動ショートカットくらい、スタートメニューに作っとけよ。

で、ショートカットの作り方。

  • C:\Windows\System32\cmd.exe へのショートカットを作る。
  • ショートカットのプロパティから、リンク先を「C:\Windows\System32\cmd.exe /K "net start npf"」とする。
  • 同じダイアログの詳細設定ボタンから、管理者として実行、にチェックをつける。
  • ショートカット自体の名前を net start npf とかにする。

net stop npf も同様にどうぞ。

おサイフケータイ+楽天Edy

楽天ポイントを Edy に交換できるキャンペーンとやらがやっていたので、使ってみることにした。
色々とアプリを Disabled にしていると動かないので、動かすためのメモ。
L-02E を使ってる前提で。

Application Setting で All を開き、以下を Enabled とする。
L-02E の標準ブラウザがなんか変だから、使いたくないんだよなー。もう一度無効化しとくか。

  • Osaifu で始まる全アプリ
  • felica の入る全アプリ
  • 標準ブラウザ ← L-02E でこれ忘れると、セットアップの途中で進まなくなる

Ubuntu で Wi-Fi を使う

我が家の配線の関係上、どうしてもサーバを無線の先に設置する必要が生じた。
なので今、アクセスが重くなっている。申し訳ない。

さて Ubuntu で Wi-Fi を設定するにあたって、思いきりハマってしまったのでメモを残す。

  1. 入っていなければ、wireless-tools と wpasupplicant を入れておく。
  2. iwconfig で無線チップが認識されているかチェック。no wireless extensions の行しかなければ、認識してないので、次の手順で何とかする。
    1. ドライバを確認する。まずは lspci コマンドで PCI カードやオンボードチップなどが何が搭載されているかチェックする。
    2. lsmod で対応するモジュールが組込まれているかチェックする。オンボードチップの場合、asus_wmiとかacer_wmiとかになってるかも。なかったら、apt-get して insmod するか、ベンダのページからソース落としてきて make する…んだと思うが、今回は認識してたのでよく分からん。
  3. 無線の設定を書く。
    以下は、WPA2-PSK(AES) で SSID をステルスに設定している場合。

    # wpa_passphrase SSID PASSPHRASE(PSKのこと) > /etc/wpa_supplicant/wpa_supplicant.conf
    # vi /etc/wpa_supplicant/wpa_supplicant.conf
    
    ctrl_interface=/var/run/wpa_supplicant
    ctrl_interface_group=0
    ap_scan=1
    network={
            ssid="SSID"
            scan_ssid=1 # ← ステルスモードの時
            #psk="PASSPHRASE"
            psk=************************************************************
            proto=WPA2
            key_mgmt=WPA-PSK
            pairwise=CCMP
            group=CCMP
            priority=2
    }
    
  4. おためしで接続(アソシエート)してみる。(以下は、WLAN I/F が1つしかなくて、そんなに古くない場合。)
    # wpa_supplicant -Dwext -iwlan0 -c/etc/wpa_supplicant/wpa_supplicant.conf
    -D 以下は WLAN インターフェースの指定らしく、最近は wext を使うのが一般的っぽい。
  5. うまくいったら、コンソールが返ってこないので、Ctrl+C で落とす。
  6. うまくいくようなら、/etc/network/interfaces を書く。
    auto wlan0
    iface wlan0 inet dhcp
            wpa-driver      wext
            wpa-essid       SSID
            wpa-conf        /etc/wpa_supplicant/wpa_supplicant.conf
    

    私は、wpa-essid を記述していない解説サイトがあって、書き漏らしておりハマっていた。
    だって、wpa-conf の方に書いてあるし、いらんと思うじゃーん。

  7. 後から知ったが、次のコマンドで AP リストが見れる。
    $ iwlist wlan0 scan | grep ESSID

Linux のhosts.allow/deny

hosts.allow/deny をインポートすることができる。
1行1アドレス(IPでもNWでもドメイン名でも)のファイルを配置して、
hosts.allow などで、
sshd: /path/filename
とすればOK

Linuxのロギングについて

logrotate を使う方法。
logrotate は、 cron.daily で実行される。
logrotate の設定は、 /etc/logrotate.conf と /etc/logrotate.d/* に配置。
/etc/logrotate.d/rsyslog あたりを参考に手で書けばOK
空のファイルをrotateして、gzだけ増えていくのを防ぐには、notifempty を指定

rsyslog でログ出力の制御。
rsyslog でログを出力するデーモン等のログを残すか否かの設定は、 /etc/rsyslog.d/* を見る。
service rsyslog restart で反映。

cron の auth.log への出力を抑制

[SOLVED] remove cron from /var/log/auth.log [Archive] - Ubuntu Forums を参照。
答だけ書くと…

bio
December 27th, 2010, 01:42 PM
Don't touch /etc/pam.d/cron, just add the following line before the pam_unix.so call in /etc/pam.d/common-session-noninteractive:
session [success=1 default=ignore] pam_succeed_if.so service in cron quiet use_uid

cron の実行ログが見たければ、 /etc/rsyslog.d 配下の default.conf 的な名前のやつで、 cron の行の頭の コメントアウトを外せば、 /var/log/cron.log 辺りに実行ログが出てくるので、これで十分だと思う。

Thunderbirdの設定とかアドオンとか

まだメモなので、そのうちまとめる。

メッセージペインをプレーンテキスト表示にする
Alt+ V, B, P
メッセージペインの引用符を「>」にする
オプション > 設定エディタ > mail.quoted_graphical を false にする
(複数のアドレスを利用している時)特定アドレス宛てのメールをML配送でもBcc配送でも振り分ける
メッセージフィルタで「カスタムヘッダ」を選択 > Delivered-to を追加 > ルール設定のダイアログで改めて条件を選択しようとすると、Delivered-to が追加されているので、それを選択して条件を設定する。