MySQLインストール
1.必要なパッケージをインストールする
# apt update # apt install mysql-server |
2.MySQLサーバのセキュリティ設定を行う
MySQLサーバのセキュリティ関連の設定を行うためにmysql_secure_installtionというツールが用意されているのでこれを実行します。
実行すると、質問形式でいくつかのセキュリティ設定がはじまります。
# mysql_secure_installation 以下のようにパスワードバリデーション用のプラグインを使用するか確認されます。パスワードバリデーションというのは、MySQL用のユーザのパスワード強度をチェックし、十分セキュアなパスワードのみ受け付けるよう制限をかけることができます。例えば、最低何文字以上で必ず記号と数値を1文字以上含むなどです。この条件について次の質問で設定できます。 Securing the MySQL server deployment. Press y|Y for Yes, any other key for No:y 上記の質問でyにした場合は続いてパスワードバリデーションのレベルを聞かれます。LOW、MEDIUM、STRONGの3つのレベルがあり、ここではMEDIUMを選択するため1を入力してEnterを押します There are three levels of password validation policy: LOW Length >= 8 Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG:1 各レベルの内容は以下のようになっています。 LOW 最低8文字以上 Please set the password for root here. パスワードを2回入力すると、0〜100のスコアが入力したパスワードに対して付けられて、これで良いか確認されます。セキュリティレベルが高いほど高いスコアになります。 Estimated strength of the password: 50 今後MySQL用のユーザを作成する際に設定するパスワードは、ここで設定したセキュリティレベルを満たす必要がありますので注意してください By default, a MySQL installation has an anonymous user, Remove anonymous users? (Press y|Y for Yes, any other key for No) :y リモートからのrootログインを禁止するか確認されます。ここではyと入力してEnterを押します Normally, root should only be allowed to connect from 通常MySQLがデフォルトで作成する「test」というどのユーザもアクセス可能なデータベースを削除するかの確認です。yと入力してEnterを押します By default, MySQL comes with a database named ‘test’ that これまで行った設定を反映させるためにリロードして良いかの確認です。yと入力してEnterを押します Reloading the privilege tables will ensure that all changes 最後にここまでで設定した内容が表示され、以下のようにAll done!と表示されればセキュリティ設定は完了です (…以上省略…) – Dropping test database… Success. All done! |
3.MySQLにパスワードでログインできるように設定変更する
上記の設定でパスワードを設定しましたが、これはこのままでは使用されません。MySQL 5.7以降では、MySQLのrootユーザはデフォルトではパスワードによるログインができないようになっています。パスワードの代わりに、システムのrootユーザ(ここではOSがUbuntuなのでUbuntuのrootユーザ)情報でログインする必要があります。すなわち、sudoでMySQLのrootユーザとしてもMySQLにログインできます。
これはMySQL 5.7以降でauth_socketというプラグインが使用されているためです。もし、従来と同様にMySQLのrootユーザ用にパスワードを設定し、そのパスワードでMySQLにログインしたい場合はauth_socketの代わりにmysql_native_passwordというプラグインを使用するよう変更する必要があります。
$ su – パスワード : # mysql mysql> SELECT user,authentication_string,plugin,host FROM mysql.user; 下のように表示されrootユーザのpluginという部分がauth_socketになっていることが確認できます | user | authentication_string | plugin | host | +—————— +————————————— —-+———————– +———–+ | root | | auth_socket | localhost | | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | debian-sys-maint | *5F6EC674A843A2EDC44C4B6BCBD832ADC88AF8BB | mysql_native_password | localhost | +——————+—————————————- —+———————–+———+ これを従来のパスワード認証に変更したい場合は以下のコマンドを実行します。yourpasswordは実際に使用したいパスワードを入力してください mysql> ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘<yourpassword>’; 反映させます mysql> FLUSH PRIVILEGES;
今後MySQLにrootユーザでログインしたい場合は、以下のコマンド # mysql -u root -p パスワード : <yourpassword> |