【Docker】MySQLでPlease run mysql_upgradのWarningが発生したときの対処法
スポンサーリンク

どうも、ウェブ系ウシジマくんです。

開発環境のDockerにMySQLを使用しているのですが、ログをみると大量の

[Warning] InnoDB: Table mysql/innodb_index_stats has length mismatch in the column name table_name. Please run mysql_upgrade

が発生していました。

今回はその対処法を書いていきます。

MySQLのContainerに侵入する

以下のコマンドでMySQLのcontainerに侵入します。

$ docker run --rm <container名> /bin/bash

mysql_upgradeを実行する

ログを確認すると、Please run mysql_upgradeとでていましたよね。

素直に実行してみましょう。

root@563v9s224777# mysql_upgrade

ありゃ、エラーがでてしまいましたね。接続先のpathである/var/run/mysqld/に、どうやらsocketがないようです。

mysql_upgrade: Got error: 2002: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) while connecting to the MySQL server
Upgrade process encountered error and will not continue.

mysqld.sockというsocketを作成する

socketがあるか、いったん確認してみましょう。

root@563v9s224777# ls -la var/lib/mysql/
total 231876
drwxr-xr-x 6 mysql mysql     4096 Mar  1 01:31 .
drwxr-xr-x 1 root  root      4096 Feb  6 07:06 ..
-rw-rw---- 1 mysql mysql       56 Feb 25 03:12 auto.cnf
-rw-r----- 1 mysql mysql     4636 Mar  1 01:31 ib_buffer_pool
-rw-r----- 1 mysql mysql 50331648 Mar  1 01:31 ib_logfile0
-rw-r----- 1 mysql mysql 50331648 Mar  1 01:14 ib_logfile1
-rw-rw---- 1 mysql mysql 79691776 Mar  1 01:31 ibdata1
drwx------ 2 mysql mysql     4096 Feb 25 03:12 mysql
drwx------ 2 mysql mysql     4096 Feb 25 03:12 performance_schema
drwxr-x--- 2 mysql mysql     4096 Mar  1 01:30 penguin-app_development
drwxr-x--- 2 mysql mysql     4096 Mar  1 01:30 penguin-app_test

確かにないですね。ということで、socketを作成しましょう。

root@563v9s224777# touch /var/run/mysqld/mysqld.sock

作成したので、再度mysql_upgradeを実行してみます。

root@563v9s224777# mysql_upgrade

ありゃ、またエラーが出ましたね。

mysql_upgrade: Got error: 2002: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111) while connecting to the MySQL server
Upgrade process encountered error and will not continue.

mysqld.sock' (111)なので、再起動が必要そうです。ということで、MySQLを再起動しましょう。

root@563v9s224777# /etc/init.d/mysql restart
[info] Stopping MySQL Community Server 5.7.25.
[info] MySQL Community Server 5.7.25 is already stopped.
[info] Re-starting MySQL Community Server 5.7.25.
No directory, logging in with HOME=/
..
[info] MySQL Community Server 5.7.25 is started.

無事に再起動できました!

改めてmysql_upgradeを実行する

これで準備は整いました。もう一度、mysql_upgradeを実行しましょう。

root@563v9s224777# mysql_upgrade
mysql_upgrade: Got error: 1045: Access denied for user 'root'@'localhost' (using password: NO) while connecting to the MySQL server
Upgrade process encountered error and will not continue.

なるほど、権限がないみたいですね。パスワードを入力して、もう一度Try。

なお、パスワードはローカルではなく、MySQLのcontainer用なのでご注意。ご自身で設定したdocker-compose.ymlなどを確認してみましょう。

mysql_upgrade -p
Enter password:
Checking if update is needed.
Checking server version.
Running queries to upgrade MySQL server.
Checking system database.
mysql.columns_priv                                 OK
mysql.db                                           OK
mysql.engine_cost                                  OK
mysql.event                                        OK
mysql.func                                         OK
mysql.general_log                                  OK
mysql.gtid_executed                                OK
mysql.help_category                                OK
mysql.help_keyword                                 OK
mysql.help_relation                                OK
mysql.help_topic                                   OK
mysql.innodb_index_stats                           OK
mysql.innodb_table_stats                           OK
mysql.ndb_binlog_index                             OK
mysql.plugin                                       OK
mysql.proc                                         OK
mysql.procs_priv                                   OK
mysql.proxies_priv                                 OK
mysql.server_cost                                  OK
mysql.servers                                      OK
mysql.slave_master_info                            OK
mysql.slave_relay_log_info                         OK
mysql.slave_worker_info                            OK
mysql.slow_log                                     OK
mysql.tables_priv                                  OK
mysql.time_zone                                    OK
mysql.time_zone_leap_second                        OK
mysql.time_zone_name                               OK
mysql.time_zone_transition                         OK
mysql.time_zone_transition_type                    OK
mysql.user                                         OK
Upgrading the sys schema.
Checking databases.
.....
Upgrade process completed successfully.
Checking if update is needed.

無事にmysql_upgradeが完了しました。ログをみると、Warningが出ていないと思います。お疲れ様でした!

スポンサーリンク
おすすめの記事