開発したアプリなど一覧

WSL Ubuntu 18.04 に MySQL 5.7 をインストールする

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 のようだ。

Sponsored Link

コメント