Web アプリの開発で必要となる Mysql を WSL の Ubuntu 8.10 にインストールした際のメモ。バージョンは 5.7 を利用した。
WSL Ubuntu 8.10 に MySQL 5.7 をインストールする
インストールは apt で可能。
$ sudo apt-get install mysql-server
しかし、起動しようとすると以下のようにエラーが出た。
$ sudo service mysql start
* Starting MySQL database server mysqld
No directory, logging in with HOME=/
/etc/passwd を確認すると ディレクトリが nonexistent になってたので以下のコマンドで変更してやる。
$ sudo usermod -d /var/lib/mysql mysql
また、このままでは root でもログインできなかったので、mysqld --initialize を実行して root パスワードを生成させる。
$ sudo mysqld --initialize
$ # --initialize specified but the data directory has files in it. Aborting.
$ # とエラーが出た場合は以下のコマンドでデータディレクトリを削除する。
$ # sudo rm -rf /var/lib/mysql/
$
$ grep 'temporary password' /var/log/mysql/error.log
2018-09-27T07:44:54.103905Z 1 [Note] A temporary password is generated for root@localhost: PASSWORD
パスワードはログに出力される。あくまで一時的なものなのですぐ変更しよう。
MySQL へのログインと root パスワードの変更
ログに出力された一時的なパスワードを利用して mysql にログインする。
$ sudo service mysql start
* Starting MySQL database server mysqld [ OK ]
$
$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.22-0ubuntu18.04.1
mysql>
ログインできたらパスワードを変更する。
mysql> use mysql;
mysql> update user set authentication_string=PASSWORD("Password") where User='root';
Query OK, 0 rows affected, 1 warning (0.01 sec)
Rows matched: 1 Changed: 0 Warnings: 1
mysql> flush privileges;
Query OK, 0 rows affected (0.03 sec)
これで指定したパスワードで root ログインできる。
MySQL の文字コードの設定変更
最後になったが文字コードの設定もしておこう。MySQL 5.7 はデフォルトでは以下のような感じになっている。
mysql> show variables like "chara%";
+--------------------------+----------------------------+
| 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)
以下の2つの設定ファイルに文字コードの指定を加える。
$ sudo vim /etc/mysql/conf.d/mysql.cnf
[mysql]
default-character-set = utf8mb4
$
$ sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
character-set-server = utf8mb4
その後 sudo service mysql restart と打って MySQL サーバを再起動し、再度ログインして文字コードを確認する。
mysql> show variables like "chara%";
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
これで OK のようだ。