7回目-16.MySQL5.7.21設定

さくらVPSCentOS 7 2週間無料のお試し期間 7回目

一覧

 状態:-  閲覧数:521  投稿日:2018-03-03  更新日:2018-03-05
自動起動
起動
最初に行うべき最低限の初期設定
一般的な初期設定
既存設定の移行

自動起動 / 起動

 閲覧数:114 投稿日:2018-03-03 更新日:2018-03-04 

自動起動


サーバー起動時に、自動でMySQLを立ち上げるようにする
・インストールが完了したら、まずはサーバーを起動したら自動的に MySQL Server が起動するように設定する
・systemctl コマンドを利用する
$ sudo systemctl enable mysqld.service

起動


$ sudo systemctl start mysqld.service  


最初に行うべき最低限の初期設定

 閲覧数:143 投稿日:2018-03-03 更新日:2018-03-05 

デフォルトのrootパスワード確認


A temporary password is generated for root@localhost: ☆☆
・<Zvku0ki?gZZ
$ cat /var/log/mysqld.log
2018-03-03T03:05:20.304322Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2018-03-03T03:05:22.871344Z 0 [Warning] InnoDB: New log files created, LSN=45790
2018-03-03T03:05:23.428735Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2018-03-03T03:05:23.538672Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: b7124c74-1e8f-11e8-86d1-9ca3ba01c389.
2018-03-03T03:05:23.583657Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2018-03-03T03:05:23.585052Z 1 [Note] A temporary password is generated for root@localhost: <Zvku0ki?gZZ


mysql_secure_installation


mysql_secure_installation コマンドを実行する
$ mysql_secure_installation

MySQLのrootユーザのパスワード変更を行うかどうか
・rootのパスワード変更(初期状態でMySQLのrootのパスワードが設定されているので変更)
・新しく設定するパスワードは「8文字以上かつ英大文字・小文字・数字・記号」を含んでいないと弾かれる
・下記要件を全て満たすパスワードを入力しなければいけない
・最低1つの数字
・最低1つの大文字英字
・最低1つの子文字英字
・最低1つの特殊文字
・全部で8文字以上の文字列
Securing the MySQL server deployment.

Enter password for user root:

The existing password for the user account root has expired. Please set a new password.

New password:

Re-enter new password:
Sorry, passwords do not match.

New password:

Re-enter new password:
Sorry, passwords do not match.

New password:

Re-enter new password:
Sorry, passwords do not match.

New password:

Re-enter new password:
Sorry, passwords do not match.

New password:

Re-enter new password:
... Failed! Error: Your password does not satisfy the current policy requirements

New password:

Re-enter new password:
Sorry, passwords do not match.

New password:
Sorry, you can't use an empty password here.

New password:
Sorry, you can't use an empty password here.

New password:
Sorry, you can't use an empty password here.

New password:
Sorry, you can't use an empty password here.

New password:
Sorry, you can't use an empty password here.

New password:
Sorry, you can't use an empty password here.

New password:
Sorry, you can't use an empty password here.

New password:
Sorry, you can't use an empty password here.

New password:

Re-enter new password:
Sorry, passwords do not match.

New password:

Re-enter new password:
Sorry, passwords do not match.

New password:

Re-enter new password:
... Failed! Error: Your password does not satisfy the current policy requirements

New password:

Re-enter new password:
Sorry, passwords do not match.

New password:

Re-enter new password:
... Failed! Error: Your password does not satisfy the current policy requirements

New password:

Re-enter new password:
... Failed! Error: Your password does not satisfy the current policy requirements

New password:

Re-enter new password:
The 'validate_password' plugin is installed on the server.
The subsequent steps will run with the existing configuration
of the plugin.
Using existing password for root.

Estimated strength of the password: 100
Change the password for root ? ((Press y|Y for Yes, any other key for No) :

y  

New password:

Re-enter new password:

Estimated strength of the password: 100
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) :

Y

anonymous(匿名)ユーザ削除
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) :

Y


リモートホスト(ローカルホスト以外)からrootログイン禁止
Success.


Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) :

Y

test(テスト用)データベース削除
Success.

By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.


Remove test database and access to it? (Press y|Y for Yes, any other key for No) :


Y

権限テーブルの即時リロード
・ユーザー権限が保存されているテーブルをリロード
 - Dropping test database...
Success.

- Removing privileges on test database...
Success.

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) :

Y
Success.

All done!


動作確認


先程登録したMySQLのrootパスワードでログインしてみる
・rootパスワードを間違えるとどうなるの?
$ mysql -u root -p
Enter password: 
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)


・正しいrootパスワードを入力するとどうなるの?
$ mysql -u root -p    
                                                               
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.7.21 MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> EXIT
Bye


一般的な初期設定

 閲覧数:142 投稿日:2018-03-04 更新日:2018-03-14 

現状確認


$ mysql -u root -p      
                                                                     
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 5.7.21 MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+--------+
| Variable_name                        | Value  |
+--------------------------------------+--------+
| validate_password_check_user_name    | OFF    |
| validate_password_dictionary_file    |        |
| validate_password_length             | 8      |
| validate_password_mixed_case_count   | 1      |
| validate_password_number_count       | 1      |
| validate_password_policy             | MEDIUM |
| validate_password_special_char_count | 1      |
+--------------------------------------+--------+
7 rows in set (0.01 sec)

mysql>


mysql> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

mysql>


my.cnfバックアップ


念のためオリジナルの設定ファイルをバックアップしておく
・-iオプション(--interactive) … 上書き時に確認をする
・-org … originの略
mv -i /etc/my.cnf /etc/my.cnf.org
※今回は実行していない。リネームになっているので、実行する際は必ずコピーへ変更する

文字コードの設定


文字コードをUTF-8へ変更
・「/etc/my.cnf」をviで開いて、次の2項目を最終行へ追記
・skip-character-set-client-handshake」を設定すると、クライアントの応答が全てUTF-8になる
$ sudo vi /etc/my.cnf
character_set_server=utf8
skip-character-set-client-handshake


設定を反映させるため、MySQLを再起動
$ systemctl restart mysqld.service
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to manage system services or units.
Authenticating as: ★★
Password:
==== AUTHENTICATION COMPLETE ===


確認
$ mysql -u root -p
mysql> show variables like 'char%';
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id:    2
Current database: *** NONE ***

+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.01 sec)

mysql>


パスワード強度を下げる


デフォルトで4種類の文字を含まないといけない
・rootパスワードに関してはともかく、一般DBユーザのパスワード強度はもっとゆるく設定しておかないと面倒
※「rootユーザ」と「一般DBユーザ」のパスワード強度切り分けは出来ない

「/etc/my.cnf」の最終行あたりに下記を追記
$ sudo vi /etc/my.cnf
validate_password_length=6
validate_password_policy=LOW


設定を反映させるため、MySQLを再起動
$ systemctl restart mysqld.service
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to manage system services or units.
Authenticating as: ★★
Password:
==== AUTHENTICATION COMPLETE ===


確認
mysql> SHOW VARIABLES LIKE 'validate_password%';    
                                                                     
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id:    2
Current database: *** NONE ***

+--------------------------------------+-------+
| Variable_name                        | Value |
+--------------------------------------+-------+
| validate_password_check_user_name    | OFF   |
| validate_password_dictionary_file    |       |
| validate_password_length             | 6     |
| validate_password_mixed_case_count   | 1     |
| validate_password_number_count       | 1     |
| validate_password_policy             | LOW   |
| validate_password_special_char_count | 1     |
+--------------------------------------+-------+
7 rows in set (0.01 sec)

mysql>


その他


MySQL5.7は、各種設定のデフォルト値がマイナーバージョンで異なる
・例えば、MySQL5.7.4から5.7.10までは、パスワードの有効期限のデフォルト値が360日だったが、MySQL5.7.11以降は無期限に変更された


CentOS7にMySQL導入&初期設定をおこなう
CentOS7 に MySQL5.7 のインストール~初期設定
CentOS 7にMySQL最新版をインストール
MySQL 5.7 インストールと設定メモ

既存設定の移行

 閲覧数:148 投稿日:2018-03-06 更新日:2018-03-07 

my.cnf


新規の現状
$ sudo find / -type f -ls  | fgrep my.cnf
[sudo] password for ★★: 
find: ‘/proc/10362/task/10362/fdinfo/6’: そのようなファイルやディレクトリはありません
find: ‘/proc/10362/fdinfo/6’: そのようなファイルやディレクトリはありません
4944255    4 -rw-r--r--   1 root     root         1079  3月  5 10:14 /etc/my.cnf    


$ cat /etc/my.cnf
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html

[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

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

character_set_server=utf8
skip-character-set-client-handshake
validate_password_length=6
validate_password_policy=LOW


既存
$ sudo find / -type f -ls  | fgrep my.cnf  
[sudo] password for ★★: 
find: `/proc/20675/task/20675/fdinfo/5': そのようなファイルやディレクトリはありません
find: `/proc/20675/fdinfo/5': そのようなファイルやディレクトリはありません
4982494    4 -rw-r--r--   1 root     root          960  3月 16  2017 /etc/my.cnf.org
4986151    4 -rw-r--r--   1 root     root         1468 10月 18 22:21 /etc/my.cnf
4996286    4 -rw-r--r--   1 root     root          438 10月 14  2014 /etc/my.cnf-20160212
4985128    4 -rw-r--r--   1 root     root          406 10月 14  2014 /etc/my.cnf.org.20141014
4983882    4 -rw-r--r--   1 root     root         1317  2月 13  2016 /etc/my.cnf.rpmsave
4983873    4 -rw-r--r--   1 root     root         1066  1月 15  2016 /etc/my.cnf.rpmnew


$ cat /etc/my.cnf
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html

[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
#default-time-zone = 'Asia/Tokyo'
log_timestamps=SYSTEM
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
character_set_server=utf8mb4
#loose-mecab-rc-file=MYSQL_HOME/lib/mecab/etc/mecabrc
loose-mecab-rc-file=/usr/lib64/mysql/mecab/etc/mecabrc
innodb_ft_min_token_size = 1
validate-password=OFF

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

innodb_file_per_table
sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION


[mysql]
default-character-set=utf8

[client]
default-character-set=utf8mb4

[mysqldump]
default-character-set=utf8mb4

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


[mysqld]


log_timestamps=SYSTEM
MySQL5.7.17インストール / MySQL5.6.34 からのバージョンアップ対応

datadir=/var/lib/mysql
・データディレクトリ
※デフォルトで設定済

socket=/var/lib/mysql/mysql.sock
・UNIXドメインソケット
※デフォルトで設定済

character_set_server=utf8mb4
・utf8をutf8mb4へ変更

validate-password=OFF
・前工程で追加した「validate_password_length=6」「validate_password_policy=LOW」をコメントアウト
MySQL5.7でCREATE USERするときのパスワードチェックを無効にする方法

loose-mecab-rc-file=/usr/lib64/mysql/mecab/etc/mecabrc
MySQL 5.7.6のInnoDB日本語全文検索 MeCab Plugin

innodb_ft_min_token_size = 1
12.9.6 MySQL の全文検索の微調整

innodb_file_per_table
・MySQL 5.6.6とそれ以降ではデフォルトでONになっているオプション
・innodb_file_per_tableを有効にすることで,InnoDBの各テーブルのデータとインデックスを個別のファイル管理にすることができる
・MySQL5.7なので設定不要

sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
MySQL5.6 
MySQL5.7.19で、datetime型の'0000-00-00'と'2017-10-00'を使用可にする
システム変数ピックアップ

[client]


default-character-set=utf8mb4


my.cnf
my.confファイルの[client]グループと[mysql]グループについて


7回目-15.MySQL5.7.21インストール



週間人気ページランキング / 9-14 → 9-20
順位 ページタイトル抜粋 アクセス数
1 PHPのmb_send_mail関数でメール送信できない | メール処理システム 29
2 Nginx設定。エラーログレベル | Nginx(Webサーバ) 21
3 Python 3.5 アンインストール / yum remove | Python(プログラミング言語) 11
4 FFmpeg 2.8.15 を yum インストール | ソフトウェアスイート 10
5 PHP実行ユーザ設定 / CentOS6 / Apache | PHP(プログラミング言語) 9
6 PHP Version 7.1.2 php-mecabエクステンション対応 / PHP 7.0.14 からのアップグレード  | MeCab(形態素解析) 8
6 ソースからビルドしたPython 2.7.3 アンインストール失敗 | Python(プログラミング言語) 8
7 touch コマンド / viコマンド。新規ファイル作成時の違い | Linuxコマンド 7
7 さくらVPS0 7
8 9回目-13.MySQL5.7.21設定 | CentOS 7 2週間無料のお試し期間 9回目(さくらVPS) 6
8 「設定ファイルに、暗号化 (blowfish_secret) 用の非公開パスフレーズの設定を必要とするようになりました。」対応 6
9 PHPファイルでchmodエラー | PHP(プログラミング言語) 5
9 設定 2019/1/22 / 一般ユーザがmailコマンドでメール送信 / 管理者がmailコマンドでメール送信 5
10 Postfix | メール処理システム 4
10 CentOSでcpコマンド動作確認するためには、Control + T ではなく、 -v オプションを使用 | cp(Linuxコマンド) 4
10 499 (Request has been forbidden by antivirus) | HTTP(通信プロトコル) 4
10 tar | Linuxコマンド 4
10 Python 3.6 インストール / make altinstall | Python(プログラミング言語) 4
10 「CentOS6」から「CentOS7」への移行 | CentOS 7 (CentOS) 4
10 echo と cat の違い 4
2021/9/21 1:01 更新