MySQLの初期設定についてメモしておく
2020-07-21
アプリケーションでMySQLをよく使っていますが、初期設定としておきたいことを記録していきます。
初回のrootパスワード
インストール時にログファイル
- /var/log/mysqld.log
A Temporary password is generated for root@localhost: <初期rootパスワード>
このように記述されてるので、これをまずrootログインに使用する。
(下に書いているMySQLクライアントからのログイン等に用いることができる)
上記で初期rootパスワードが準備されていますが、
A Temporary password is generated for root…(rootのために一時パスワードを作りました!)
となっていたので、ちゃんとしたものに作り直しておきましょう。
次の見出しで初期設定をしていきます。
※あらためて次回以降にVMインスタンスを立てて実際に構築し、詰まりそうなところ、手順を記録していきたいと思います。
※パスワードポリシーは公式サイトの通り、MEDIUMポリシーに沿っているので注意。
対話による初期設定
このコマンドで必要最低限のセキュリティ設定をしてくれる。
$ mysql_secure_installation
この操作では
- rootパスワード変更
- anonymousユーザーの削除
- リモートからのrootユーザーでのログインの禁止
- testデータベースの削除
のようなセキュリティにかかわる設定を対話形式で設定できます。
パスワードの設定や、他にもyesかnoで聞かれるので、必要に応じて答えていきましょう。
MySQLクライアントでログインする方法
$ mysql -u root -p
このコマンドで、 rootユーザー・パスワードありでログインします。
細かい初期設定をするなら、rootのような強い権限でログインする必要あり。
my.cnfの設定
/etc/my.cnfがあるようなので、こちらに初期設定をしていきます。
- my.cnf
[mysqld]
# サーバ側の文字コードをutf-8に
character-set-server=utf8mb4
# データファイルが作成される場所の指定
datadir=/var/lib/mysql
# ソケットの指定(unixソケットでつなぐ場合。TCPソケットでもできる)
socket=/var/lib/mysql/mysql.sock
# デフォルトのストレージエンジン
default-storage-engine=InnoDB
# InnoDBのファイルをテーブルごとに作成するように指定
# MySQL5.6.6からデフォルトで有効
innodb_file_per_table
# パスワードのデフォルト有効期限を無効にする
# MySQL5.7からユーザーのパスワードの有効期限がデフォルトで360日になった模様
default_password_lifetime=0
## 追加設定
[mysql]
# クライアント側の文字コードもutf-8に指定
default-character-set=utf8mb4
設定の再読み込み(サービスの再起動)
上記の設定を完了したら、
$ sudo systemctl restart mysql
でmysqlデーモンを再起動する。
設定が反映されます。
必要に応じてmysqldの自動起動設定もしておきたいですね。
では、今日はこのへんで!