Setup Mysql
MySQLの初期セットアップで、パスワードが設定されていないrootユーザーにパスワードを設定する方法ですね。 最も簡単で推奨される方法は、MySQLが提供している mysql_secure_installation という対話形式のスクリプトを使用することです。 これを使えば、パスワード設定だけでなく、セキュリティ上推奨される基本的な設定をまとめて行うことができます。
おすすめの方法: mysql_secure_installation を使う
この方法は、質問に答えていくだけで、以下のセキュリティ設定を簡単に行えます。
- root ユーザーのパスワード設定
- 匿名ユーザーの削除
- リモートからの root ログインの禁止
- テストデータベースの削除
手順
ターミナル(コマンドプロンプト)を開きます。
以下のコマンドを実行します。 多くの場合、管理者権限が必要なため sudo を付けて実行します。
# 管理者権限でスクリプトを実行します
sudo mysql_secure_installation
対話形式で設定を進めます。 以下のような質問が表示されるので、答えていってください。(バージョンによって多少文言が異なります)
VALIDATE PASSWORD component? (パスワード強度チェック機能を有効にしますか?)
y (Yes) を入力してEnterキーを押すのがおすすめです。パスワードの強度(長さ、数字・大文字・小文字・記号を含むか)をポリシーとして設定できます。
0 (LOW), 1 (MEDIUM), 2 (STRONG) の中からポリシーレベルを選択します。通常は 1 (MEDIUM) で十分です。
New password: (新しいパスワードを入力してください)
rootユーザーに設定したい新しいパスワードを入力します。入力した文字は表示されません。
Re-enter new password: (新しいパスワードを再入力してください)
確認のため、同じパスワードをもう一度入力します。
Remove anonymous users? (匿名ユーザーを削除しますか?)
y を推奨します。誰でもアクセスできる匿名ユーザーはセキュリティリスクになります。
Disallow root login remotely? (rootユーザーのリモートログインを禁止しますか?)
y を強く推奨します。rootユーザーでのリモート接続を禁止することで、外部からの攻撃リスクを大幅に減らせます。
Remove test database and access to it? (テストデータベースを削除しますか?)
y を推奨します。初期状態で存在するテスト用のデータベースは、本番環境では不要です。
Reload privilege tables now? (設定を今すぐ反映しますか?)
y を選択してください。ここまでの設定をMySQLに即時反映させます。
これで初期セキュリティ設定は完了です! 🎉
代替案: SQLコマンドで直接パスワードを設定する
パスワードの設定だけを素早く行いたい場合は、以下の方法もあります。
手順
パスワードなしでMySQLにログインします。
ターミナルで以下のコマンドを実行してください。
# rootユーザーでMySQLにログインします
sudo mysql -u root
パスワードを設定するコマンドを実行します。 MySQLにログインできたら、以下のSQL文を実行します。 '新しいパスワード' の部分を、実際に設定したいパスワードに置き換えてください。
-- 'root'ユーザーのパスワードを 'localhost' からの接続に限り設定します
ALTER USER 'root'@'localhost' IDENTIFIED BY '新しいパスワード';
設定を反映させます。 以下のコマンドで、変更した権限設定をすぐに反映させます。
-- 権限情報をメモリに再読み込みします
FLUSH PRIVILEGES;
MySQLを終了します。
exit;
これでパスワードの設定は完了です。次回からは、設定したパスワードを使ってログインしてください。
# パスワードを使ってログインする場合
mysql -u root -p