ラベル mysql の投稿を表示しています。 すべての投稿を表示
ラベル mysql の投稿を表示しています。 すべての投稿を表示

2015年5月17日日曜日

mysqlでlatin1文字コードのDBからutf8のDBへ移行


●問題概要:
 使用中(中身あり)のDB文字コードはlatin1で、UTF8文字コードのDBに移行したい。

●問題詳細:
 Mysqlのデータベースをデフォルトのままで使用してきたため、文字コードは以下のようになっていた。この状態(サーバとクライアントの文字コード不一致)でも問題なく、日本語を入力・検索などできていた。
mysql> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | latin1   ←ここ                  |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | latin1    ←ここ                  |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

つぎ、新しいDBを別のサーバ上に作成した。
せっかくだから、最近はサーバもクライアントもUTF8に揃うように使っているのは、普通だ。
というのは、揃わないと、途中に一回文字コード変換を経て表示されるため、
すべて全部文字化けしないということは保証できない。

クライアント側文字コード --> Unicode(ucs2) --> サーバ側文字コード
サーバ側文字コード --> Unicode(ucs2) --> クライアント側文字コード

新しいDBの環境変数は、以下に設定している。

mysql> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8     ←ここ                   |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8    ←ここ                    |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

設定方法は以下になる。
# mysql --version ←バージョンは以下だ。
mysql  Ver 14.14 Distrib 5.6.24, for Linux (x86_64) using  EditLine wrapper
# rpm -qa | grep mysql ←入っているパッケージは以下だ。
mysql-connector-python-2.0.4-1.el7.noarch
mysql-community-common-5.6.24-3.el7.x86_64
mysql-community-libs-5.6.24-3.el7.x86_64
mysql-community-server-5.6.24-3.el7.x86_64
mysql-community-release-el7-5.noarch
mysql-community-client-5.6.24-3.el7.x86_64
mysql-community-devel-5.6.24-3.el7.x86_64
mysql-utilities-1.5.4-1.el7.noarch

# vi /etc/my.cnf ←定義に以下の赤字部分を追記して、mysqlサービスを再起動する。
(再起動は# systemctl restart mysql)
------------------------
character-set-server = utf8
[client]
default-character-set = utf8
[mysqldump]
default-character-set = utf8
[mysql]
default-character-set = utf8

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

●解決策
今回はDBの移行なので、「元DBダンプ→文字コード変更→ターゲットDBにインポート」という順番になる。

(1)まずは、移行元DBをダンプ出力する。ここのポイントは、文字化けをしないように、元DBのサーバ文字コードに合わせてダンプすること。
# mysqldump -u username -ppassword --default-character-set=latin1 databasename > dump.db
※dump.dbはテキストファイルなので、viエディタで文字化けしているかどうかを確認できる。

(2)ダンプファイルを別ファイルにコピーする
# cp -p dump.db dump_utf8.db

(3)ダンプファイル中の文字コード記述を変更する
# vi dump_utf8.db
/*!40101 SET NAMES latin1 */;

/*!40101 SET NAMES utf8 */;

(4)
# mysql -u username -ppassword databasename2 < dump_utf8.db

※データベース名は気をつけること。元のDBに間違ってインポートしたら上書きされる。

以上で、移行完成です。
ちょっと気持ちスッキリだ!(笑)






2015年4月25日土曜日

CentOS7のMariaDBを削除し、MySQLをインストールする


(1)CentOS7にインストール済みのMariaDBがあるかを確認し、ある場合削除します。
# rpm -qa | grep mariadb
# yum -y remove mariadb mariadb-server mariadb-libs


(2)MySQL用リポジトリをインストール

MySQL公式リポジトリファイルのアドレスは、下記ページに辿って入手できます。
http://dev.mysql.com/downloads/
MySQL Community Server の「download」リンクをクリックします。
さらに「Red Hat Enterprise Linux/Oracle Linux」を選ぶと、「MySQL yum Repository」というペンギンアイコンのリンクが現れます。「Download Now」をクリックすると、対応するリポジトリアドレスが現れます。
最終的なページはこれです。
http://dev.mysql.com/downloads/repo/yum/
Red Hat Enterprise Linux 7 / Oracle Linux 7 (Architecture Independent), RPM Package
の該当アドレスは以下です。
http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm

# yum -y install http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
読み込んだプラグイン:fastestmirror, langpacks
mysql-community-release-el7-5.noarch.rpm               | 6.0 kB     00:00
/var/tmp/yum-root-300bM_/mysql-community-release-el7-5.noarch.rpm を調べています: mysql-community-release-el7-5.noarch
/var/tmp/yum-root-300bM_/mysql-community-release-el7-5.noarch.rpm をインストール済みとして設定しています
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ mysql-community-release.noarch 0:el7-5 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

==============================================================================
 Package             アーキテクチャー
                            バージョン
                                  リポジトリー                           容量
==============================================================================
インストール中:
 mysql-community-release
                     noarch el7-5 /mysql-community-release-el7-5.noarch 4.3 k

トランザクションの要約
==============================================================================
インストール  1 パッケージ

合計容量: 4.3 k
インストール容量: 4.3 k
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : mysql-community-release-el7-5.noarch          1/1
  検証中                  : mysql-community-release-el7-5.noarch          1/1

インストール:
  mysql-community-release.noarch 0:el7-5

完了しました!

(3)MySQLをインストールする。
# yum -y install mysql mysql-devel mysql-server mysql-utilities
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: ftp.riken.jp
 * extras: ftp.riken.jp
 * updates: ftp.riken.jp
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ mysql-community-client.x86_64 0:5.6.24-3.el7 を インストール
--> 依存性の処理をしています: mysql-community-libs(x86-64) = 5.6.24-3.el7 のパッケージ: mysql-community-client-5.6.24-3.el7.x86_64
---> パッケージ mysql-community-devel.x86_64 0:5.6.24-3.el7 を インストール
---> パッケージ mysql-community-server.x86_64 0:5.6.24-3.el7 を インストール
--> 依存性の処理をしています: mysql-community-common(x86-64) = 5.6.24-3.el7 のパッケージ: mysql-community-server-5.6.24-3.el7.x86_64
---> パッケージ mysql-utilities.noarch 0:1.5.4-1.el7 を インストール
--> 依存性の処理をしています: mysql-connector-python >= 2.0.0 のパッケージ: mysql-utilities-1.5.4-1.el7.noarch
--> トランザクションの確認を実行しています。
---> パッケージ mysql-community-common.x86_64 0:5.6.24-3.el7 を インストール
---> パッケージ mysql-community-libs.x86_64 0:5.6.24-3.el7 を インストール
---> パッケージ mysql-connector-python.noarch 0:2.0.4-1.el7 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

==============================================================================
 Package                アーキテクチャー
                               バージョン    リポジトリー                容量
==============================================================================
インストール中:
 mysql-community-client x86_64 5.6.24-3.el7  mysql56-community           19 M
 mysql-community-devel  x86_64 5.6.24-3.el7  mysql56-community          3.4 M
 mysql-community-server x86_64 5.6.24-3.el7  mysql56-community           58 M
 mysql-utilities        noarch 1.5.4-1.el7   mysql-tools-community      1.0 M
依存性関連でのインストールをします:
 mysql-community-common x86_64 5.6.24-3.el7  mysql56-community          256 k
 mysql-community-libs   x86_64 5.6.24-3.el7  mysql56-community          2.0 M
 mysql-connector-python noarch 2.0.4-1.el7   mysql-connectors-community 203 k

トランザクションの要約
==============================================================================
インストール  4 パッケージ (+3 個の依存関係のパッケージ)

総ダウンロード容量: 83 M
インストール容量: 369 M
Downloading packages:
警告: /var/cache/yum/x86_64/7/mysql56-community/packages/mysql-community-common-5.6.24-3.el7.x86_64.rpm: V3 DSA/SHA1 Signature、鍵 ID 5072e1f5: NOKEY
mysql-community-common-5.6.24-3.el7.x86_64.rpm の公開鍵がインストールされてい ません
(1/7): mysql-community-common-5.6.24-3.el7.x86_64.rpm    | 256 kB   00:05
(2/7): mysql-community-devel-5.6.24-3.el7.x86_64.rpm     | 3.4 MB   00:00
(3/7): mysql-community-libs-5.6.24-3.el7.x86_64.rpm      | 2.0 MB   00:00
mysql-connector-python-2.0.4-1.el7.noarch.rpm の公開鍵がインストールされていません
(4/7): mysql-connector-python-2.0.4-1.el7.noarch.rpm     | 203 kB   00:00
mysql-utilities-1.5.4-1.el7.noarch.rpm の公開鍵がインストールされていませんTA
(5/7): mysql-utilities-1.5.4-1.el7.noarch.rpm            | 1.0 MB   00:06
(6/7): mysql-community-client-5.6.24-3.el7.x86_64.rpm    |  19 MB   00:16
(7/7): mysql-community-server-5.6.24-3.el7.x86_64.rpm    |  58 MB   00:09
------------------------------------------------------------------------------
合計                                             5.0 MB/s |  83 MB  00:16
file:/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql から鍵を取得中です。
Importing GPG key 0x5072E1F5:
 Userid     : "MySQL Release Engineering <mysql-build@oss.oracle.com>"
 Fingerprint: a4a9 4068 76fc bd3c 4567 70c8 8c71 8d3b 5072 e1f5
 Package    : mysql-community-release-el7-5.noarch (@/mysql-community-release-el7-5.noarch)
 From       : file:/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : mysql-community-common-5.6.24-3.el7.x86_64    1/7
  インストール中          : mysql-community-libs-5.6.24-3.el7.x86_64      2/7
  インストール中          : mysql-community-client-5.6.24-3.el7.x86_64    3/7
  インストール中          : mysql-connector-python-2.0.4-1.el7.noarch     4/7
  インストール中          : mysql-utilities-1.5.4-1.el7.noarch            5/7
  インストール中          : mysql-community-server-5.6.24-3.el7.x86_64    6/7
  インストール中          : mysql-community-devel-5.6.24-3.el7.x86_64     7/7
  検証中                  : mysql-utilities-1.5.4-1.el7.noarch            1/7
  検証中                  : mysql-connector-python-2.0.4-1.el7.noarch     2/7
  検証中                  : mysql-community-devel-5.6.24-3.el7.x86_64     3/7
  検証中                  : mysql-community-client-5.6.24-3.el7.x86_64    4/7
  検証中                  : mysql-community-server-5.6.24-3.el7.x86_64    5/7
  検証中                  : mysql-community-libs-5.6.24-3.el7.x86_64      6/7
  検証中                  : mysql-community-common-5.6.24-3.el7.x86_64    7/7

インストール:
  mysql-community-client.x86_64 0:5.6.24-3.el7
  mysql-community-devel.x86_64 0:5.6.24-3.el7
  mysql-community-server.x86_64 0:5.6.24-3.el7
  mysql-utilities.noarch 0:1.5.4-1.el7

依存性関連をインストールしました:
  mysql-community-common.x86_64 0:5.6.24-3.el7
  mysql-community-libs.x86_64 0:5.6.24-3.el7
  mysql-connector-python.noarch 0:2.0.4-1.el7

完了しました!

(4)MySQLデーモン起動と確認
# systemctl status mysqld
mysqld.service - MySQL Community Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled)
   Active: inactive (dead)

# systemctl start mysqld
# systemctl status mysqld
mysqld.service - MySQL Community Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled)
   Active: active (running) since 土 2015-04-25 23:14:21 JST; 3s ago
  Process: 60402 ExecStartPost=/usr/bin/mysql-systemd-start post (code=exited, status=0/SUCCESS)
  Process: 60391 ExecStartPre=/usr/bin/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
 Main PID: 60401 (mysqld_safe)
   CGroup: /system.slice/mysqld.service
           tq60401 /bin/sh /usr/bin/mysqld_safe
           mq60552 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql...

 4月 25 23:14:19 localhost systemd[1]: Starting MySQL Community Server...
 4月 25 23:14:20 localhost mysqld_safe[60401]: 150425 23:14:20 mysqld_safe Lo....
 4月 25 23:14:20 localhost mysqld_safe[60401]: 150425 23:14:20 mysqld_safe St...l
 4月 25 23:14:21 localhost systemd[1]: Started MySQL Community Server.
Hint: Some lines were ellipsized, use -l to show in full.

(5)MySQLログイン確認
# which mysql
/usr/bin/mysql
# mysql --version
mysql  Ver 14.14 Distrib 5.6.24, for Linux (x86_64) using  EditLine wrapper
# mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.6.24 MySQL Community Server (GPL)

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.01 sec)

これで問題なく使えるようにしました。


CentOS7からデフォルトデータベースはMariaDBになった。

主題通り、CentOS7からデフォルトデータベースはMariaDBになりました。
正直、DB知識が少なく、今までMariaDBのことはあんまり触れる機会もありませんでした。
少し調べた結果から、MariaDBはMySQLをベースにフォークしたという言い方があります。
そのあとのバージョンアップで、すこしずつ機能と仕様上で、MySQLと異なってきました。
まあ、CentOSはRHELのソースを使って再Buildしたが、MariaDBも最初はそんな感じじゃなかったかな?
今は完全別の製品となってきました。
詳細的な比較はいろんなところで紹介されています。
たとえば、以下のサイトとかを参照してください。詳細はちゃんと見てませんが。


とりあえず、MariaDBを試してみたいと思います。

(1)パッケージのインストール。(rootユーザ)

# yum -y install mariadb-server
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: ftp.riken.jp
 * extras: ftp.riken.jp
 * updates: ftp.riken.jp
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ mariadb-server.x86_64 1:5.5.41-2.el7_0 を インストール
--> 依存性の処理をしています: perl-DBI のパッケージ: 1:mariadb-server-5.5.41-2.el7_0.x86_64
--> 依存性の処理をしています: perl-DBD-MySQL のパッケージ: 1:mariadb-server-5.5.41-2.el7_0.x86_64
--> 依存性の処理をしています: perl(Data::Dumper) のパッケージ: 1:mariadb-server-5.5.41-2.el7_0.x86_64
--> 依存性の処理をしています: perl(DBI) のパッケージ: 1:mariadb-server-5.5.41-2.el7_0.x86_64
--> トランザクションの確認を実行しています。
---> パッケージ perl-DBD-MySQL.x86_64 0:4.023-5.el7 を インストール
---> パッケージ perl-DBI.x86_64 0:1.627-4.el7 を インストール
--> 依存性の処理をしています: perl(RPC::PlServer) >= 0.2001 のパッケージ: perl-DBI-1.627-4.el7.x86_64
--> 依存性の処理をしています: perl(RPC::PlClient) >= 0.2000 のパッケージ: perl-DBI-1.627-4.el7.x86_64
---> パッケージ perl-Data-Dumper.x86_64 0:2.145-3.el7 を インストール
--> トランザクションの確認を実行しています。
---> パッケージ perl-PlRPC.noarch 0:0.2020-14.el7 を インストール
--> 依存性の処理をしています: perl(Net::Daemon) >= 0.13 のパッケージ: perl-PlRPC-0.2020-14.el7.noarch
--> 依存性の処理をしています: perl(Net::Daemon::Test) のパッケージ: perl-PlRPC-0.2020-14.el7.noarch
--> 依存性の処理をしています: perl(Net::Daemon::Log) のパッケージ: perl-PlRPC-0.2020-14.el7.noarch
--> 依存性の処理をしています: perl(Compress::Zlib) のパッケージ: perl-PlRPC-0.2020-14.el7.noarch
--> トランザクションの確認を実行しています。
---> パッケージ perl-IO-Compress.noarch 0:2.061-2.el7 を インストール
--> 依存性の処理をしています: perl(Compress::Raw::Zlib) >= 2.061 のパッケージ: perl-IO-Compress-2.061-2.el7.noarch
--> 依存性の処理をしています: perl(Compress::Raw::Bzip2) >= 2.061 のパッケージ: perl-IO-Compress-2.061-2.el7.noarch
---> パッケージ perl-Net-Daemon.noarch 0:0.48-5.el7 を インストール
--> トランザクションの確認を実行しています。
---> パッケージ perl-Compress-Raw-Bzip2.x86_64 0:2.061-3.el7 を インストール
---> パッケージ perl-Compress-Raw-Zlib.x86_64 1:2.061-4.el7 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

================================================================================
 Package                      アーキテクチャー
                                          バージョン            リポジトリー
                                                                           容量
================================================================================
インストール中:
 mariadb-server               x86_64      1:5.5.41-2.el7_0      base       11 M
依存性関連でのインストールをします:
 perl-Compress-Raw-Bzip2      x86_64      2.061-3.el7           base       32 k
 perl-Compress-Raw-Zlib       x86_64      1:2.061-4.el7         base       57 k
 perl-DBD-MySQL               x86_64      4.023-5.el7           base      140 k
 perl-DBI                     x86_64      1.627-4.el7           base      802 k
 perl-Data-Dumper             x86_64      2.145-3.el7           base       47 k
 perl-IO-Compress             noarch      2.061-2.el7           base      260 k
 perl-Net-Daemon              noarch      0.48-5.el7            base       51 k
 perl-PlRPC                   noarch      0.2020-14.el7         base       36 k

トランザクションの要約
================================================================================
インストール  1 パッケージ (+8 個の依存関係のパッケージ)

総ダウンロード容量: 12 M
インストール容量: 59 M
Downloading packages:
(1/9): perl-Compress-Raw-Bzip2-2.061-3.el7.x86_64.rpm      |  32 kB   00:00     
(2/9): perl-Compress-Raw-Zlib-2.061-4.el7.x86_64.rpm       |  57 kB   00:00     
(3/9): perl-DBI-1.627-4.el7.x86_64.rpm                     | 802 kB   00:00     
(4/9): perl-DBD-MySQL-4.023-5.el7.x86_64.rpm               | 140 kB   00:00     
(5/9): perl-IO-Compress-2.061-2.el7.noarch.rpm             | 260 kB   00:00     
(6/9): perl-Data-Dumper-2.145-3.el7.x86_64.rpm             |  47 kB   00:01     
(7/9): perl-PlRPC-0.2020-14.el7.noarch.rpm                 |  36 kB   00:00     
(8/9): perl-Net-Daemon-0.48-5.el7.noarch.rpm               |  51 kB   00:01     
(9/9): mariadb-server-5.5.41-2.el7_0.x86_64.rpm            |  11 MB   00:04     
--------------------------------------------------------------------------------
合計                                               2.6 MB/s |  12 MB  00:04     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : perl-Data-Dumper-2.145-3.el7.x86_64             1/9 
  インストール中          : 1:perl-Compress-Raw-Zlib-2.061-4.el7.x86_64     2/9 
  インストール中          : perl-Net-Daemon-0.48-5.el7.noarch               3/9 
  インストール中          : perl-Compress-Raw-Bzip2-2.061-3.el7.x86_64      4/9 
  インストール中          : perl-IO-Compress-2.061-2.el7.noarch             5/9 
  インストール中          : perl-PlRPC-0.2020-14.el7.noarch                 6/9 
  インストール中          : perl-DBI-1.627-4.el7.x86_64                     7/9 
  インストール中          : perl-DBD-MySQL-4.023-5.el7.x86_64               8/9 
  インストール中          : 1:mariadb-server-5.5.41-2.el7_0.x86_64          9/9 
  検証中                  : perl-Compress-Raw-Bzip2-2.061-3.el7.x86_64      1/9 
  検証中                  : perl-Net-Daemon-0.48-5.el7.noarch               2/9 
  検証中                  : perl-Data-Dumper-2.145-3.el7.x86_64             3/9 
  検証中                  : 1:mariadb-server-5.5.41-2.el7_0.x86_64          4/9 
  検証中                  : perl-PlRPC-0.2020-14.el7.noarch                 5/9 
  検証中                  : 1:perl-Compress-Raw-Zlib-2.061-4.el7.x86_64     6/9 
  検証中                  : perl-DBI-1.627-4.el7.x86_64                     7/9 
  検証中                  : perl-IO-Compress-2.061-2.el7.noarch             8/9 
  検証中                  : perl-DBD-MySQL-4.023-5.el7.x86_64               9/9 

インストール:
  mariadb-server.x86_64 1:5.5.41-2.el7_0                                        

依存性関連をインストールしました:
  perl-Compress-Raw-Bzip2.x86_64 0:2.061-3.el7                                  
  perl-Compress-Raw-Zlib.x86_64 1:2.061-4.el7                                   
  perl-DBD-MySQL.x86_64 0:4.023-5.el7                                           
  perl-DBI.x86_64 0:1.627-4.el7                                                 
  perl-Data-Dumper.x86_64 0:2.145-3.el7                                         
  perl-IO-Compress.noarch 0:2.061-2.el7                                         
  perl-Net-Daemon.noarch 0:0.48-5.el7                                           
  perl-PlRPC.noarch 0:0.2020-14.el7   


(2)サービス起動と状態確認
# systemctl start mariadb 
# systemctl status mariadb
mariadb.service - MariaDB database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; disabled)
   Active: active (running) since 土 2015-04-25 20:51:03 JST; 9s ago
  Process: 56525 ExecStartPost=/usr/libexec/mariadb-wait-ready $MAINPID (code=exited, status=0/SUCCESS)
  Process: 56446 ExecStartPre=/usr/libexec/mariadb-prepare-db-dir %n (code=exited, status=0/SUCCESS)
 Main PID: 56524 (mysqld_safe)
   CGroup: /system.slice/mariadb.service
           ├─56524 /bin/sh /usr/bin/mysqld_safe --basedir=/usr
           └─56682 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysq...

 4月 25 20:51:01 kakei mariadb-prepare-db-dir[56446]: The latest information...
 4月 25 20:51:01 kakei mariadb-prepare-db-dir[56446]: You can find additiona...
 4月 25 20:51:01 kakei mariadb-prepare-db-dir[56446]: http://dev.mysql.com
 4月 25 20:51:01 kakei mariadb-prepare-db-dir[56446]: Support MariaDB develo...
 4月 25 20:51:01 kakei mariadb-prepare-db-dir[56446]: Corporation Ab. You ca...
 4月 25 20:51:01 kakei mariadb-prepare-db-dir[56446]: Alternatively consider...
 4月 25 20:51:01 kakei mariadb-prepare-db-dir[56446]: http://mariadb.com/kb/...
 4月 25 20:51:01 kakei mysqld_safe[56524]: 150425 20:51:01 mysqld_safe Logg....
 4月 25 20:51:01 kakei mysqld_safe[56524]: 150425 20:51:01 mysqld_safe Star...l
 4月 25 20:51:03 kakei systemd[1]: Started MariaDB database server.
Hint: Some lines were ellipsized, use -l to show in full.


(3)コマンド確認とDBへの接続
ご覧のとおり、コマンドはmysqlのままで、使いかたは一緒です。

# which mysql
/usr/bin/mysql

# mysql -u root
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.41-MariaDB MariaDB Server

Copyright (c) 2000, 2014, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> 

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

MariaDB [(none)]> quit
Bye

(4)インストールされたパッケージは何があるかを確認してみます。

# rpm -qa | grep mariadb
mariadb-5.5.41-2.el7_0.x86_64
mariadb-server-5.5.41-2.el7_0.x86_64
mariadb-libs-5.5.41-2.el7_0.x86_64

詳細な使い方はおいおい確認していきます。




2015年3月7日土曜日

レンタルサーバのmysqlでデータロード失敗時の対策

[問題]
レンタルサーバのmysqlにデータをロードすると、以下の様なエラーが表示され、
ロードが失敗してしまう。

mysql> load data infile '/virtual/xxx/yyy/data.csv'
     into table table_name
     fields terminated by ','
     enclosed by '"';

ERROR 1045 (28000): Access denied for user 'user_name'@'localhost' (using password: YES)

[原因と対策]
これは、このユーザにfileからデータを読み込む権限がないらしい。

対策1:rootユーザでログインして、このユーザにfile権限を与える。

 mysql>grant file on *.* to 'user_name'@localhost;

レンタルサーバにrootユーザでmysqlにログインすることは、たいてい制限されているため、
この対策は効かない場合がある。

対策2:レンタルサーバにcsvファイルをFTPとかなんとかで持って行き、
以下のやり方でデータをロードする。

$mysql --enable-local-infile -u user_name -ppassword
mysql> load data local infile '/virtual/xxx/yyy/data.csv'
     into table table_name
     fields terminated by ','
     enclosed by '"';

上記で、無事に解決出来ました。





2015年3月1日日曜日

mysql php 日本語 文字化け 対策

●問題
mysqlのサーバとクライアントともUTF-8に設定しているのに、
PHPで返ってきたクエリ結果(日本語)の部分は文字化けとなる。
mysql> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

●対策
(1)コネクトの後に、クエリの文字コードを設定
 //connect
 $s = mysql_connect("localhost", $db_user, $db_pswd);

 //クエリの文字コード設定
 mysql_set_charset("utf8",$s);

(2)さらに、<?phpのあとに、以下を設定するとよいそうです。
 mb_language("uni");
 mb_internal_encoding("utf-8");
 mb_http_input("auto");
 mb_http_output("utf-8");



2015年2月28日土曜日

About mysql engine MyISAM and InnoDB

mysql have 2 engine, one is called MyISAM , another one is called InnoDB.

二つのエンジンについて、構造的には、
【MyISAM】
 ls -l /var/lib/mysql/database_name/
 TABLE_NAME.MYD
 TABLE_NAME.MYI
 TABLE_NAME.frm
 db.opt
【InnoDB】
 ls -l /var/lib/mysql/database_name/
 TABLE_NAME.frm ←これのみ

エンジンを調べるには、
mysql>show table status \G;
ENGINE:MYISAM

InnoDBのテーブルのレコードデータやインデックスデータは、テーブルスペースと呼ばれるファイル内に格納される。標準ではデータベースディレクトリ内に「ibdata1」という名称で作成されるファイルとなる。
InnoDBには商用のRDBMSに匹敵するトランザクション機能を持っている。









ODBCなど外部環境からLinuxのmysql(サーバ)に接続する

Mysqlのユーザが作成されると、ローカルからしか接続できないようになっている。

$ mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 81
Server version: 5.1.69 Source distribution

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> select user,host,password from mysql.user;
+-------+-----------------------+-------------------------------------------+
| user  | host                  | password                                  |
+-------+-----------------------+-------------------------------------------+
| root  | localhost             |                                           |
| root  | localhost.localdomain |                                           |
| root  | 127.0.0.1             |                                           |
|       | localhost             |                                           |
|       | localhost.localdomain |                                           |
| wp    | localhost             | *8C2FB6D9F381D4D1442EF41C174D50EFE9B0E80D |
| boke  | localhost             | *DE76F587B6C62747A1196425D31E9034A9DAB9BB |
| kakei | localhost             | *831A129AEB82E516DEB0BA92C657375D56D02DB7 |
+-------+-----------------------+-------------------------------------------+
8 rows in set (0.00 sec)

外部から接続できるように設定する。

mysql> grant all privileges on *.* to kakei@'192.168.127.0/255.255.255.0';
Query OK, 0 rows affected (0.00 sec)

kakei:外部から接続するためのユーザ
192.168.127.0:接続元のIPアドレス
255.255.255.0:ネットマスク



国際交流を促進するグローバル音楽フェスティバルについて語ろう。

タイトル:国際交流を促進するグローバル音楽フェスティバルの魅力 最近、世界中で注目を集めているのが、国際交流を促進するグローバル音楽フェスティバルです。音楽は言葉を超えて人々をつなぎ、文化や国境を越えて心を通わせる力があります。そんな音楽の力を最大限に活用し、異なる文化や国...