LoginSignup
15
15

More than 3 years have passed since last update.

docker-composeでMySQLのrootパスワードを忘れた場合

Posted at

docker-composeでMySQLのrootパスワードを忘れた場合に自分が行った対処のメモです。

権限なしでmysqlコンテナを起動する

パスワードをリセットするためには権限テーブルを非参照で起動する必要があります。下記のオプションをdocker-compose.ymlに追加。
command: mysqld --skip-grant-tables --skip-networking

docker-compose.yml

mysql:
      build:
        context: ./mysql
        args:
          - MYSQL_VERSION=${MYSQL_VERSION}
      environment:
        - MYSQL_DATABASE=${MYSQL_DATABASE}
        - MYSQL_USER=${MYSQL_USER}
        - MYSQL_PASSWORD=${MYSQL_PASSWORD}
        - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
        - TZ=${WORKSPACE_TIMEZONE}
      command: mysqld --skip-grant-tables --skip-networking 
      volumes:
        - ${DATA_PATH_HOST}/mysql:/var/lib/mysql
        - ${MYSQL_ENTRYPOINT_INITDB}:/docker-entrypoint-initdb.d
      ports:
        - "${MYSQL_PORT}:3306"
      networks:
        - backend

コンテナを再起動し、変更を反映させます。

>docker-compose stop mysql
>docker-compose up -d mysql

パスワード変更

mysqlコンテナに入る
>docker-compose exec mysql bash

パスワードなしでログインできるようになる
mysql> mysql -u root

ユーザ名、ホスト名を確認
mysql> use mysql;
mysql> SELECT user, host FROM user;

パスワードを変更
mysql> SET PASSWORD FOR ユーザ名@ホスト名 = 'パスワード';

最後にcommand: mysqld --skip-grant-tables --skip-networkingをdocker-compose.ymlから削除し、再起動すれば完了。

15
15
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
15