LoginSignup
21
24

More than 3 years have passed since last update.

Mysql8系でパスワード変更

Last updated at Posted at 2020-02-06

「MySQLにログインできない!」
MySQL5.6以前のバージョンを使っていた方は、少し戸惑うかもしれません。
実はMySQL5.7以降では、rootユーザーでログインする手順が少し変わっています。
これは、セキュリティに対してより厳しくなったことによる変更らしいです。

mysql5系でパスワードを変更する記事は多くありますが、mysql8系だとあまり見かけませんでしたので備忘録としてメモ

目的

mysql8系でパスワードを変更できるようになる

対象者

mysql8系で、

・パスワードを忘れて困っている人
・パスワードを変更したい人

参考

mysqlについては記事が多いですが、随時参考にすべき資料をアップデートしていきます。

よく使うMySQLコマンド集

何故5系と違うか→関数が違うから

5系での記事を試して見るも
PASSWORD() 関数は、MySQL version 5.67 までで廃止されているらしいです。8系だとガラッと色々変わってますね

//失敗例1
mysql > update mysql.user set password=password('hogehoge') where user = 'root';

//失敗例2
mysql > SET PASSWORD FOR root@localhost=PASSWORD('hoge');

//結果
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'PASSWORD('root')' at line 1

ログイン

mysql -u ユーザー名 -D データベース名 -p

-u オプションでは MySQL に接続するユーザー名を指定します。
-D オプションでは接続先のデータベース名を指定します。
-p オプションはパスワードを送信する場合に指定します。

例えば、root ユーザーで test というデータベースに接続する場合、下記のようにコマンドを実行します。
尚、root ユーザーにはパスワードを設定している場合は、-p オプションも付加します。

mysql -u root -D test -p

パスワードリセット流れ

1 MySQLを止めます

$ mysql.server stop

2 MySQLをセーフモードで起動します。

$ mysqld_safe --skip-grant-tables &

3 別のターミナルを開き、rootユーザのパスワード無し状態でログインします。

$ mysql -u root

4 rootユーザーのパスワードを空に設定します。

mysql > UPDATE mysql.user SET authentication_string=null WHERE User='root';

5 セーフモードで開いたMySQLを閉じます

mysql > exit

6 killします

セーフモードでMySQLを起動させたターミナル(コマンド$ mysqld_safe --skip-grant-tables &を実行したターミナルで)が終了しない時(コマンドが打てるようにならない)は下記コマンドを実行して動いているMySQLをkillします。

※XXXXXは同じ数字が入りますので注意してください
※ . を忘れると、違うコマンドになりますので注意です

$ mysql.server status
>SUCCESS! MySQL running (XXXXX)
$ kill XXXXX

grepすると、grepした時のと併せて2つ以上になると思います。

$ ps aux | grep mysqld
taiga            28278   0.0  0.0  4277512    704 s003  S+    1:21PM   0:00.00 grep mysqld
taiga            XXXXX   0.0  0.0  4283208   1272 s003  S     1:14PM   0:00.02 /bin/sh /usr/local/Cellar/mysql/8.0.18_1/bin/mysqld_safe --datadir=/usr/local/var/mysql --pid-file=/usr/local/var/mysql/Taiga.local.pid
$ kill -9 XXXXX

8 今度は通常モードでMySQLを起動します

(aliasで msr で設定すると簡略化できていいですよ)

$ mysql.server restart

8 何も入力せずEnterを押下します。

$ mysql -u root -p 

9 パスワードを再設定する。※重要

mysql > use mysql;
mysql > ALTER USER 'root'@'localhost' identified BY '任意のパスワード';

何も設定したくない場合(空)は、空欄にします。

mysql > ALTER USER 'root'@'localhost' identified BY '';

10 一度MySQLから出ます。

mysql > exit

11 再設定した任意のパスワードを入力してEnterを押下しログインできるか確認します。

$ mysql -u root -p

ターミナルが下記のようになれば成功です!

mysql >

mysqlのパスワードを変えたりして、1~10を繰り返せば結構なれますので是非。

21
24
0

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
21
24