読者です 読者をやめる 読者になる 読者になる

kodama-tech.blog

技術的なこといろんなこと書きます。golangに関すること多めです。

MySQLのrootパスワードを変更する

こんにちは、こだまです。
今日はテイストを変えて、MySQLのことを書こうと。
というのも、MySQLを使用することになったのですが、バージョンが上がってパスワードの設定方法が面倒になったそうで、備忘録を込めて。

MySQLのパスワードのセキュリティレベルがデフォルトで高いために簡単なパスワードが使えなかったりします。
そんな時は、MySQLに接続して、設定ファイルを書き換えてあげれば良いのです。

MySQLに入って、
mysql > show databasesをすると、mysqlというデータベースがあります。
ここにいろんな設定が書き込んであります。

mysql > use mysqlでデータベースを変えて、
mysql > show tablesすると、userテーブルを発見すると思います。
ここのauthentication_stringを変更するとパスワードが変更できます。具体的には以下のように。

update user set authentication_string=PASSWORD('ここにパスワードを書く') where User=‘root';

これで変更完了。
一度mysqlから抜けて
$ sudo mysql.server restartで再起動をかけるとパスワードの変更が反映されます。

上記の方法でパスワードが変更できない人へ

おそらくvalidate_passwordプラグインが有効になっているのだと思います。
MySQL5.7.8以降はnpmパッケージではデフォルトで有効になっているそうです。
さあ、設定を変更してみましょう。
mysql > show variables like ‘validate_password%';
でテーブルを見ると、

f:id:shu_hey:20161118204801p:plain

こんな感じかなと思います。
ぱっと見分からないのは、validate_password_policyかなと思います。
公式を参照すると以下のような設定になっています。

・ LOW ポリシーは、パスワードの長さのみテストします。パスワードは少なくとも 8 文字の長さでなければなりません。

・ MEDIUM ポリシーは、パスワードが最低 1 つの数値文字を含み、1 つの小文字および大文字を含み、1 つの特殊文字 (英数字以外) を含む必要があるという条件を追加します。

・STRONG ポリシーは、パスワードの 4 文字以上の部分文字列が、(辞書ファイルが指定された場合に) 辞書ファイル内の単語と一致してはならないという条件を追加します。

なので、例えばLOWポリシーに変更するのであれば、
mysql> SET GLOBAL validate_password_policy=LOW;
とかで設定できます。
長さの規制を4文字にするなら
mysql> SET GLOBAL validate_password_length=4;
みたいな感じで設定できます。