Browsing articles in "MySQL"
 
4月
30
2014

さくらのVPSからGMOクラウドVPSへの移行

さくらのVPSを利用していましたが、コストパフォーマンスの良いGMOクラウドVPSに乗り換えることにしました。
その際の設定内容、移行手順を公開します。

移行プラン/料金

・プラン
 GMOクラウドVPS スモールプラン(1年間)
・金額
 4094円+2036×12円=28,526円(2377円/月)
・OS
 CentOS6.2 / LAMPPパック

Linuxの初期設定

GMOクラウドVPSの初期設定』を参考にサーバの初期設定を行う。

必要なパッケージをインストール

上記リンクに記載のない、wget、scpコマンドや、php関連のパッケージをインストール。

yum install wget
yum install openssh-clients
yum install php-mysql php-mbstring php-pdo php-pear
pear install pager

Apacheの初期設定

Apacheの初期設定すべき内容 (httpd.conf)』を参考にApacheを設定。
上記リンク先の記事には記載されていないが、ウェルカムページの設定も全てコメントアウトしておくこと。

cp -p /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.org
vi /etc/httpd/conf/httpd.conf
diff /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.org
vi /etc/httpd/conf.d/welcome.conf

MySQLの初期設定

MySQLの初期設定』を参考に、DBの初期設定を行う。
必要なDB、ユーザを作成しておいてください。

PHPの初期設定

cp -p /etc/php.ini  /etc/php.ini.org
vi /etc/php.ini
diff /etc/php.ini  /etc/php.ini.org
432c432
< expose_php = Off
<ul>
<li></li>
</ul>

&gt; expose_php = On
457c457
&lt; memory_limit = 512M
<ul>
<li></li>
</ul>

&gt; memory_limit = 128M
513c513
&lt; error_reporting = E_ALL &amp; ~E_NOTICE &amp; ~E_DEPRECATED
<ul>
<li></li>
</ul>

&gt; error_reporting = E_ALL &amp; ~E_DEPRECATED
946c946
&lt; date.timezone = Asia/Tokyo
<ul>
<li></li>
</ul>

&gt; ;date.timezone =
1542c1542
&lt; mbstring.language = Japanese
<ul>
<li></li>
</ul>

&gt; ;mbstring.language = Japanese
1549d1548
&lt; mbstring.internal_encoding = UTF-8
1553c1552
&lt; mbstring.http_input = auto
<ul>
<li></li>
</ul>

&gt; ;mbstring.http_input = auto
1558c1557
&lt; mbstring.http_output = UTF-8
<ul>
<li></li>
</ul>

&gt; ;mbstring.http_output = SJIS
1566c1565
&lt; mbstring.encoding_translation = Off
<ul>
<li></li>
</ul>

&gt; ;mbstring.encoding_translation = Off
1571c1570
&lt; mbstring.detect_order = auto
<ul>
<li></li>
</ul>

&gt; ;mbstring.detect_order = auto
1576c1575
&lt; mbstring.substitute_character = none;
<ul>
<li></li>
</ul>

&gt; ;mbstring.substitute_character = none;
1587c1586
&lt; mbstring.func_overload = 0
<ul>
<li></li>
</ul>

&gt; ;mbstring.func_overload = 0
1590c1589
&lt; mbstring.strict_detection = Off
<ul>
<li></li>
</ul>

&gt; ;mbstring.strict_detection = Off

Postfixの初期設定

cp -p /etc/postfix/main.cf /etc/postfix/main.cf.org
vi /etc/postfix/main.cf
diff /etc/postfix/main.cf /etc/postfix/main.cf.org
113c113
&lt; inet_interfaces = all
<ul>
<li></li>
</ul>

&gt; #inet_interfaces = all
116c116
&lt; #inet_interfaces = localhost
<ul>
<li></li>
</ul>

&gt; inet_interfaces = localhost
677,686d676
&lt;
&lt; ## add
&lt; smtpd_sasl_auth_enable = yes
&lt; smtpd_sasl_path = smtpd
&lt; smtpd_sasl_type = cyrus
&lt; smtpd_sasl_security_options = noanonymous
&lt; broken_sasl_auth_clients=yes
&lt; smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination,permit_auth_destination,reject
&lt; smtpd_sasl_local_domain = iderea.com
&lt;
cp -p /etc/aliases /etc/aliases.org
vi  /etc/aliases
diff  /etc/aliases /etc/aliases.org
97,103d96
&lt;
&lt; # for iderea.com
&lt; hijikata:       h.hijikata@gmail.com
&lt; android-webrank:h.hijikata@gmail.com
&lt; android:h.hijikata@gmail.com
&lt; 360news:        h.hijikata@gmail.com
&lt;
newaliases
/etc/init.d/postfix restart

コンテンツ・DBの移行

/etc/crontabをコメントアウト

タイミングを考慮した上で、/etc/crontabをコメントアウトし、バッチ処理を停止する。

コンテンツのバックアップ

df、duコマンドで、ディスク容量に空きがあることを確認してから、コンテンツを丸ごとtarで固めます。

df -h
du -sh /tutty.info
tar cfz /tmp/tutty.info.tgz /tutty.info

コンテンツのリストア

移行先のサーバへ転送して、展開します。
最後に不要なファイルは削除します。

scp /tmp/tutty.info.tgz x.x.x.x:/tmp
ssh x.x.x.x
cd /
tar xfz /tmp/tutty.info.tgz
rm /tmp/tutty.info.tgz
exit
rm /tmp/tutty.info.tgz

DBのバックアップ

特定のデータベースを指定してバックアップします。

mysqldump -u root -p tutty | gzip > /tmp/tutty.sql.gz

DBのリストア

移行先サーバへ転送して、リストアします。
最後に不要なファイルは削除します。

scp /tmp/tutty.sql.gz x.x.x.x:/tmp
ssh x.x.x.x
gunzip /tmp/tutty.sql.gz
mysql -u root -p < /tmp/tutty.sql
rm /tmp/tutty.sql
exit
rm /tmp/tutty.sql.gz

DNSレコード修正&動作確認

基本的には、Aレコードを修正するだけで問題ない。
ドメイン及びIPアドレスでアクセスし、動作確認を行う。

/etc/crontabを設定

移行先サーバの/etc/crontabに、移行前と同様の設定をする。


 
11月
11
2013

MySQLの初期設定

MySQL 5.1.52の初期設定についてまとめます。

my.cnfの設定

my.cnfの設定を行います。

cp -p /etc/my.cnf /etc/my.cnf.org
vi /etc/my.cnf

以下の通り変更します。

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

character_set_server=utf8
default-storage-engine=InnoDB
innodb_file_per_table

[mysql]
default-character-set=utf8

[mysqldump]
default-character-set=utf8

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

MySQLを再起動して、設定を反映します。

/etc/init.d/mysqld restart

ユーザ設定

初期状態確認

まずは、MySQLに接続して、ユーザ一覧を表示します。

mysql -u root mysql
mysql> select host,user,password from user;
 +-----------------------+------+----------+
 | host                  | user | password |
 +-----------------------+------+----------+
 | localhost             | root |          |
 | localhost.localdomain | root |          |
 | 127.0.0.1             | root |          |
 | localhost             |      |          |
 | localhost.localdomain |      |          |
 +-----------------------+------+----------+
5 rows in set (0.00 sec)

ユーザ設定

MySQLユーザを以下の通り設定します。

1.全ユーザ削除
2.rootユーザ作成(全DB管理者用)
3.userユーザを作成(特定DB用)
mysql> delete from user;
mysql> GRANT ALL ON *.* TO root@'127.0.0.1' IDENTIFIED BY 'pass' WITH GRANT OPTION;
mysql> GRANT ALL ON *.* TO root@'localhost' IDENTIFIED BY 'pass' WITH GRANT OPTION;
mysql> GRANT ALL ON *.* TO root@'localhost.localdomain' IDENTIFIED BY 'pass' WITH GRANT OPTION;
mysql> GRANT ALL ON database.* TO user@'127.0.0.1' IDENTIFIED BY 'pass';
mysql> GRANT ALL ON database.* TO user@'localhost' IDENTIFIED BY 'pass';
mysql> GRANT ALL ON database.* TO user@'localhost.localdomain' IDENTIFIED BY 'pass';
mysql> select host,user,password from user;
 +-----------------------+------+-------------------------------------------+
 | host                  | user | password                                  |
 +-----------------------+------+-------------------------------------------+
 | 127.0.0.1             | user | ***************************************** |
 | localhost             | user | ***************************************** |
 | localhost.localdomain | user | ***************************************** |
 | 127.0.0.1             | root | ***************************************** |
 | localhost             | root | ***************************************** |
 | localhost.localdomain | root | ***************************************** |
 +-----------------------+------+-------------------------------------------+
3 rows in set (0.00 sec)

不要なデータベースを削除

testデータベースを削除します。

mysql> show databases;
 +--------------------+
 | Database           |
 +--------------------+
 | information_schema |
 | mysql              |
 | test               |
 +--------------------+
3 rows in set (0.00 sec)

mysql> drop database test;
Query OK, 0 rows affected (0.01 sec)

mysql> show databases;
 +--------------------+
 | Database           |
 +--------------------+
 | information_schema |
 | mysql              |
 +--------------------+
2 rows in set (0.00 sec)

データベースを作成

sampleデータベースを作成します。

mysql> create database sample;

PHPMyAdminを使用して、残りの設定を行います。


 
10月
15
2012

MySQLでひらがな、カタカナ、大文字、小文字、全角、半角を区別しないで検索する方法

例えば、「りんご」という商品がDBに登録されている場合に、
ひらがなで検索すればよいのか、カタカナで検索すればよいのかわからなくなるときがあります。

MySQLでは、照合順序にutf8_unicode_ciを指定することで、似た文字を同一視して扱い、どちらでも検索することができます。

たとえば、
・「りんご」「リンゴ」「リンゴ」「りンゴ」
・「ABC」「ABC」「abc」「Abc」
・「123」「123」「123」
など、半角、全角、ひらがな、カタカナ、大文字、小文字も関係なく、検索にヒットさせることができるようになります。

utf8_unicode_ciの使用方法

utf8_unicode_ciは、テーブル定義の時に指定することができますが、
検索時に指定することも可能です。

例)

select * from item where item_name collate utf8_unicode_ci like '%りんご%';

DBのitem_nameに「りんご」「リンゴ」「リンゴ」「りンゴ」で登録されていても、検索することができます。

utf8_unicode_ciでできること

・アルファベットが、半角/全角、大文字/小文字にかかわらず、検索可能
・数字が、半角/全角にかかわらず、検索可能
・平仮名、カタカナ、半角カナにかかわらず、検索可能
※同一視される文字が他にもあるため、広範囲で検索にヒットするため、注意も必要です
 例)「つ」「っ」なども同一視
 例)「は」「パ」「バ」などの濁点等も同一視

同一視される文字の一覧

以下に同一視される文字の表がまとめられています。
http://tmtm.org/tmp/mysql_unicode_collation.html

参考

http://d.hatena.ne.jp/end0tknr/20100613/1276427626
http://tmtms.hatenablog.com/entry/20110416/mysql_u……_collation
http://tmtm.org/tmp/mysql_unicode_collation.html


 
10月
15
2012

MySQLで半角/全角スペースを無視して検索する方法

MySQLのreplace関数を使用

MySQLには、文字列を置換するreplace関数を利用できるので、これを使用します。

replace(str,from_str,to_str)

strに含まれるfrom_strを検索し、to_strに置換します。

例:半角/全角スペースを無視して検索する場合

select * from table where replace(replace(key,' ',''),' ','') like '%検索文字列%'

フィールドkeyから半角/全角スペースを削除して、検索文字列で部分一致させています。

PHPから利用する場合

PHPで利用する場合には、入力した検索文字列からも空白を削除しましょう。
以下にPHPで入力文字列から空白を削除して、pdoの検索文字列(:KEY)にバインドする方法を記述します。

// 例:pdoで検索文字列(:KEY)をバインドする方法
//   ※\sは[ \t\n\f\r]と同義です
//   ※utf-8の場合、preg_replaceの修飾子に'u'が必要です
$stmt->bindValue(':KEY','%' . preg_replace('/[\s ]/u','',$key) . '%');


 
6月
15
2011

さくらVPSサーバの環境設定方法

概要

今まで使用してきたお名前.comのVPSサーバの契約期間が終わるため、以前より気になっていたさくらのVPSサーバに乗り換えることにしました。

契約したのは、980円/月でVPNサーバが使用できる格安なプランです。
スペックは、メモリ:512MB、ディスク容量:20GB、CPU:2コア、ネットワーク:共用100Mbpsです。


 
5月
3
2011

tutty.infoを開設

tutty.info

個人サイト tutty.info を開設しました。



このエントリーをはてなブックマークに追加