24
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

MySQL 8.0のパスワードとシステム変数

Last updated at Posted at 2018-05-19

MySQL 8.0が正式リリースされたので、CentOS 7にインストールしてみました。その備忘録的なものです。

自分用の開発用インストールレシピをGithubにアップしていたりするのですが、いろいろ面倒なので、MySQL 5.6から強化されたパスワード関連の設定を最弱設定にしていたりします。(まぁ開発用なので別にいいかということで)
MySQL 5.7で更に強化されてしまったわけですが。

で、同じような設定をMySQL 8.0でも同じ設定をしてみたのですが、どうも反映されない。
どうも変数名自体が変わっていて、無駄な変数を設定しまったようです。

パスワード関連のmy.cnfの設定

MySQL 5.7まではこんな感じにしてました。(パスワード設定の部分だけ抜粋)

[mysqld]
validate-password=FORCE_PLUS_PERMANENT
validate_password_length=4
validate_password_mixed_case_count=0
validate_password_number_count=0
validate_password_policy=0
validate_password_special_char_count=0

MySQL 8.0では上記が下記のようになるようです。

[mysqld]
validate_password.length=4
validate_password.mixed_case_count=0
validate_password.number_count=0
validate_password.policy=0
validate_password.special_char_count=0

変数の名前が変わっている。。。
これでちょっとハマりました。

実際どれ位の変数名が変わっているのか。

MySQL 8.0でテーブルキャッシュの実装がなくなったので、そのへんの変数は消えてるんだろうなとは思っていました。
気になって調べて見たんですが、量が多いので、ここへの記載は避けます。(途中で諦めました)

パスワードからの変更方法が変わってる?

MySQLサーバーをインストール後、rootユーザーのパスワードを変更するんですが、MySQL 5.7までは以下の構文で出来たはず。。。

SET PASSWORD FOR root@localhost=PASSWORD('password');

MySQL 8.0では上記構文が使えないようです。代わりにALTER USER構文を使います。ROLEの機能が入ったせい?

ALTER USER 'root'@'localhost' IDENTIFIED BY 'password';

こぼれ話

MySQLのクリーンインストール。

変な手順でやったせいか、ALTER USERするときにmysql.userがないから無理とか怒られたので。一応以下でうまく行くっぽい。

  1. systemctl stop mysqld
  2. rm -rf /var/lib/mysql/*
  3. yum remove mysql-server
  4. yum intall mysql-server
  5. systemctl start mysqld
  6. systemctl enable mysqld

PHPからアクセスできない

プログラム書くのがめんどくさいんで詳しくは調べてないんですが、これを書いている時点でphpMyAdminからアクセスすることは出来ませんでした。
現象的には以下のページのような感じなんですが。

この辺が解決策かなと思ったんですが。

環境はNginx + PHP 7.2.5。
力尽きたので今回はここまで。

2019.05.08追記

どうもパスワード設定を旧設定にするためにプラグインを読み込まなければならないらしい。

my.cnf
[webmaster@dev01 db]$ cat /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

character-set-server=utf8
skip-character-set-client-handshake

default_authentication_plugin = mysql_native_password # これが必要

validate_password.length=4
validate_password.mixed_case_count=0
validate_password.number_count=0
validate_password.policy=0
validate_password.special_char_count=0

[client]
default-character-set=utf8

で、MySQLにログインして、ALTER USERするときにプラグインを指定する。CREATE USERでも使えるオプションです。

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

CREATE DATABASE `wordpress` CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER 'wordpress'@'%' IDENTIFIED WITH mysql_native_password BY 'wordpress';
GRANT ALL PRIVILEGES ON `wordpress`.* TO 'wordpress'@'%';

参考

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?