MySQL を Cygwin からセットアップする方法です。
MySQL 設定

Cygwin PC-UNIX Windows ソフトウェア データベース 設定

Cygwin で MySQL を速攻セットアップする

Cygwin に MySQL(MariaDB) をセットアップして実行する手順です。

設定環境


CYGWIN_NT-10.0 PC 3.1.4(0.340/5/3) 2020-02-19 08:49 x86_64 Cygwin
Server version: 10.3.14-MariaDB Source distribution

MySQL を Cygwin でセットアップする手順

Cygwin MySQL

セットアップからインストールするのが簡単です。setup-x86_64.exe を起動してインストールする場合、上の赤枠のパッケージが必須になります。

MySQL を Cygwin で実行する手順

データベースの初期化作業を行います。

 cygwin
$ mysql_install_db

このコマンドはデータベース MySQL の初期化作業です。
高速なマシンでも30秒近く必要な場合があります。

 cygwin
Installing MariaDB/MySQL system tables in '/var/lib/mysql' ...
2020-04-12 12:15:57 0 [Warning] InnoDB: innodb_open_files 300 should not be greaterthan the open_files_limit 256
OK
To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system
~ (途中略) ~

管理者 root ユーザーにパスワードを設定します。

 cygwin
$ /usr/bin/mysqladmin -u root password '12345678'

上の例では「12345678」をパスワードに設定しています。

MySQL にアクセスするときは

 cygwin
$ mysql -u root

としてパスワードを入力して SQL コマンドを打てるようになるのですが、

 cygwin
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysql.sock' (119)

となり、エラーになることがあります。
これは、 MySQL (サーバー)、が起動していないので、MySQL(クライアント)は接続できませんということで、エラーになっています。この場合は、

 cygwin
$ /usr/bin/mysqld_safe --datadir='/var/lib/mysql'&

として、試験的に起動します。
デフォルトのまま使う場合は、「--datadir='/var/lib/mysql'」は省いて問題ありません。
 cygwin
$ /usr/bin/mysqld_safe &

コマンド末尾の「&」を付け忘れないのがミソです。

MySQL(サーバー)をシャットダウンするときは、以下のようにします。

 cygwin
$ mysqladmin -u root -p shutdown

ここでは、シャットダウンせずに次のコマンドを打ち込みます。

 cygwin
$ mysql -u root -p
Enter password: <設定したパスワードを入れます。例:"1234565678">
Welcome to the MariaDB monitor.  Commands end with ; or g.
Your MariaDB connection id is 9
Server version: 10.3.14-MariaDB Source distribution
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
MariaDB [(none)]>

日本語の文字化け対策を行う

MySQL はデフォルトではラテン文字の文字コードになっています。
どの文字コードを使用するかを適当にしてしまうと、データベースを構築したときに何が原因で文字化けしているのかを突き止めるのに、本来不要な時間を割かれることになります。
注意点は二つです。

  • クライアント側、サーバー側が(通信接続する場合を含む)使用する文字コード
  • データベース(テーブルやカラムを含む)文字コード

設定のポイントとしては、デフォルトで使う文字コードを抜かりなく設定しておくことです。デフォルトさえしっかりと意識できていれば、意図しない文字コードが使われた部分(プロセス)を特定するのは難しくありません。

まず、現在のデーベースの文字コードがどうなっているのかをチェックします。

 cygwin
MariaDB [(none)]> 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.011 sec)
MariaDB [(none)]> \q

show variables like '%char%';」とコマンドすることにより、サーバーとクライアントの文字コードがわかります。
上の例では、すべて UTF8 に設定できているので問題ありませんが、cp932(Shift_JIS拡張)等になっている場合、WordPress 等で使用するときは、これが文字化けを引き起こす可能性があります。文字化けに関しては、PHP 等の設定、組み込みモジュールなどの関連で一概には言えませんが、現在では UTF8 にしておくのが一番無難です。

最低限確認する項目は以下の通り、

character_set_client
クライアントからSQL文が発行される時に使用される文字コード。

character_set_connection
クライアント側から受け取った文字をこの文字コードに変換します。

character_set_results
クライアントへSQLの結果を送信する時にこの文字コードに変換される。

character_set_filesystem や character_sets_dir は UTF8 でなくても問題ありません。

my.cnf.d に utf8 をデフォルト設定にする

システムによって、設定ファイルが少々変わりますが、Cygwin の最新版では、"/etc/my.cnf" ではなく、"/etc/my.cnf.d" 以下のファイルに個別に設定します。

〔デフォルト文字コード設定〕"etc/my.cnf.d/server.cnf" に書き足す

"etc/my.cnf.d/server.cnf" を開いて、[mysqld]の記述部を検索し、「character-set-server = utf8」を書き足します(あるいはコメントを外す)。
ファイルの書き換えは、vi 等のエディタでやるのもかまいませんが、メモ帳などで "C:\Cygwin64\etc\my.cnf.d\server.cnf" を直接開いて書き換えてもかまいません。

 cygwin
[mysqld]
character-set-server = utf8
〔デフォルト文字コード設定〕"etc/my.cnf.d/client.cnf" に書き足す

"etc/my.cnf.d/client.cnf" を開いて、[client]の記述部を検索し、「default-character-set = utf8」を書き足します(あるいはコメントを外す)。
ファイルの書き換えは、vi 等のエディタでやるのもかまいませんが、メモ帳などで "C:\Cygwin64\etc\my.cnf.d\client.cnf" を直接開いて書き換えてもかまいません。

 cygwin
[client]
default-character-set = utf8


設定が終わったら、MySQL(サーバー)を再起動して完了です。
 cygwin
$ mysqladmin -u root -p shutdown
$ mysqld_safe --datadir='/var/lib/mysql'&

Linux や FreeBSD などで MySQL を動かしている場合は、ディストリビューションごとの再起動コマンドがあります。多くは上のコマンドを組み合わせた内容です。


関連記事
FreeBSD MySQL インストール
FreeBSD に MySQL を設定する手順

前回、Cygwin に MySQL を設定するときは、あまり考えることなくスムーズに設定ができてしまいましたが、本格運用 ...

続きを見る


関連記事
HeidiSQL
HeidiSQL を PostgreSQL と MySQL のWindows クライアントにする

データベース(PostgreSQL や MySQL)を操作するときに、psql などで操作するのが手っ取り早いのですが、 ...

続きを見る


関連記事
Cygwin
Windows に Cygwin をセットアップする入門編

Cygwin は Windows 上で Linux ディストリビューションと同様の機能が使えるようにする、オープンソース ...

続きを見る


関連記事
Apache 設定
Cygwin で apache と PHP を速攻セットアップする

Cygwin を使って Apache を速攻セットアップする手順です。 設定環境 CYGWIN_NT-10.0 PC 3 ...

続きを見る

-Cygwin, PC-UNIX, Windows, ソフトウェア, データベース, 設定
-, , , ,

© 2020 ネーテルス