CentOSインストールMysql-5.7

14124 ワード

以前CentOSにmysql-5.7をインストールしていたときに多くの問題が発生しましたが、ここでまとめます.
1.Mysql-5.7をダウンロード
まずMYSQL公式サイトにmysql-5.7.15-1をダウンロードします.el7.x86_64.rpm-bundle.tar(本編を書くときは2016-09-20で、後でmysqlが更新されるので、変わるかどうかはわかりませんが、皆さんがこのような問題が発生したときにも解決できます).
2.設置前の準備
ダウンロードしました.tarパッケージはCentOSのディレクトリの下に置かれます.たとえば/home/user/(userは現在のユーザーを表します)
# tar xf mysql-5.7.11-1.el6.x86_64.rpm-bundle.tar

必要なコンポーネントのインストール
[ CPU   ]
#yum install numactl 
[        ]                            
#yum install libaio 
#yum install perl-Time-HiRes per-devel

3.存在するMysqlをアンインストールする
mysql-community-serverをインストールする前に、mysql-community-clientとmysql-community-common rpmパッケージをインストールする必要があります.community-clientとcommunity-commonパッケージをインストールする前に、mysql-libを削除する必要があります(システムが付属しているバージョンが低すぎます).
[      mysql ]
# rpm -qa | grep mysql 
mysql-libs-5.1.73-3.el6_5.x86_64
[   mysql       ]
# rpm -e --nodeps mysql-libs-5.1.73-7.el6.x86_64 

4.Mysql-5.7のインストール
上はmysql-libの古いパッケージをアンインストールして、今mysql-libの最新版のファイルをインストールして、このパッケージはrpm-bundleの中ですべてあって、直接インストールすればいいです.
# ls
mysql-5.7.11-1.el6.x86_64.rpm-bundle.tar mysql-community-embedded-5.7.11-1.el6.x86_64.rpm mysql-commu
mysql-community-client-5.7.11-1.el6.x86_64.rpm mysql-community-embedded-devel-5.7.11-1.el6.x86_64.rpm mysql-commu
mysql-community-common-5.7.11-1.el6.x86_64.rpm mysql-community-libs-5.7.11-1.el6.x86_64.rpm

# rpm -ivh mysql-community-common-5.7.11-1.el6.x86_64.rpm
# rpm -ivh mysql-community-libs-5.7.11-1.el6.x86_64.rpm
# rpm -ivh mysql-community-client-5.7.11-1.el6.x86_64.rpm
# rpm -ivh mysql-community-server-5.7.11-1.el6.x86_64.rpm

5.Mysqlの起動
# service mysql start
mysql: unrecognized service                                      [ mysql5.7    mysqld ]
# service mysqld start
Initializing MySQL database: [ OK ]
Installing validate password plugin: [ OK ]
Starting mysqld: [ OK ] [ netstat -tlunp          ] Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name [         mysql     ]
tcp 0 0 :::3306 :::* LISTEN 19928/mysqld                          

6.Mysqlパスワードの変更
rpm mysqlをインストールすると、ログにパスワードが自動的に初期化されます.
# grep "password" /var/log/mysqld.log
2016-03-11T01:44:23.093873Z 1 [Note] A temporary password is generated for root@localhost: 8%<rjn;+,11Y

システム初期化のパスワードは8%<rjn;+,11Yであることがわかります.その後、このパスワードを使用してmysqlにログインし、変更する必要があります.しかし、最新のmysqlバージョンはパスワードポリシーに要求されているため、通過するには複雑さを増やさなければなりません.
# mysql -uroot -p
Enter password:                 
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 14
Server version: 5.7.11

Copyright (c) 2000, 2016, 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        ]
mysql> set password='Yes@126.com';                         
Query OK, 0 rows affected (0.15 sec)

[         ]
mysql> set password='123456';                              
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

現在のパスワードはmysqlのセキュリティポリシーに合致しないことを示します.これは、私たちのパスワードがmysqlの事前設定の強度を満たしていないためです.パスワードの強度はvalidate password strength()関数によって評価されます(0から100の数を返します).
[     25 ]
mysql> select VALIDATE_PASSWORD_STRENGTH('123456'); +--------------------------------------+
| VALIDATE_PASSWORD_STRENGTH('123456') | +--------------------------------------+
| 25 | +--------------------------------------+
1 row in set (0.00 sec)

この強度はvalidate_password_policyの値が関係しています.validate_password_policyには次の値があります.
Policy
Tests Performed
0 or LOW
Length
1 or MEDIUM
Length; numeric, lowercase/uppercase, and special characters
2 or STRONG
Length; numeric, lowercase/uppercase, and special characters; dictionary file
デフォルトは1、つまりMEDIUMなので、最初に設定したパスワードは長さに一致し、数字、小文字、大文字、特殊文字を含む必要があります.手順を進めるにはvalidate_が必要ですpasswordプラグインはすでにインストールされている必要があります.MySQL 5.7はデフォルトでインストールされています.ではvalidateを検証する方法passwordプラグインはインストールされていますか?以下のパラメータを表示すると、インストールされていない場合は出力が空になります.
mysql> SHOW VARIABLES LIKE 'validate_password%'; +--------------------------------------+-------+
| Variable_name | Value | +--------------------------------------+-------+
| validate_password_dictionary_file | | | validate_password_length | 5 | | validate_password_mixed_case_count | 1 | | validate_password_number_count       | 1     |
| validate_password_policy             | LOW   |
| validate_password_special_char_count | 2 | +--------------------------------------+-------+
6 rows in set (0.18 sec)

时には、自分でテストするためだけに、パスワードをそんなに複雑に設定したくないことがあります.例えば、rootのパスワードを123456に設定したいだけです.2つのグローバルパラメータを変更する必要があります.まずvalidate_を変更します.password_policyパラメータの値
mysql> select VALIDATE_PASSWORD_STRENGTH('1'); +---------------------------------+
| VALIDATE_PASSWORD_STRENGTH('1') | +---------------------------------+
| 0 | +---------------------------------+
1 row in set (0.00 sec)

これにより,パスワードを判断する基準はパスワードの長さに基づいている.これはvalidate_password_lengthパラメータで決定します.
mysql> select @@validate_password_length; +----------------------------+
| @@validate_password_length | +----------------------------+
| 8 | +----------------------------+
1 row in set (0.00 sec)

validate_password_lengthパラメータのデフォルトは8で、最小値の制限があり、最小値は:
validate_password_length = validate_password_number_count + validate_password_special_char_count + (2 * validate_password_mixed_case_count)
ここでvalidate_password_number_countはパスワードのデータの長さを指定し、validate_password_special_char_countはパスワードの特殊文字の長さを指定し、validate_password_mixed_case_countはパスワードの大文字の長さを指定します.これらのパラメータは、デフォルト値が1なのでvalidate_password_lengthの最小値は4で、validate_を明示的に指定するとpassword_lengthの値は4未満で、エラーは報告されませんがvalidate_password_lengthの値は4に設定されます.次のようになります.
mysql> set global validate_password_length=1;
Query OK, 0 rows affected (0.00 sec)

mysql> select @@validate_password_length; +----------------------------+
| @@validate_password_length | +----------------------------+
| 4 | +----------------------------+
1 row in set (0.00 sec)

validate_を変更した場合password_number_count validate_password_special_char_count validate_password_mixed_case_countのいずれかの値はvalidate_password_lengthは動的に変更されます.
mysql> select @@validate_password_mixed_case_count; +--------------------------------------+
| @@validate_password_mixed_case_count | +--------------------------------------+
| 1 | +--------------------------------------+
1 row in set (0.00 sec)

mysql> select @@validate_password_special_char_count; +----------------------------------------+
| @@validate_password_special_char_count | +----------------------------------------+
| 1 | +----------------------------------------+
1 row in set (0.00 sec)

mysql> select @@validate_password_number_count; +----------------------------------+
| @@validate_password_number_count | +----------------------------------+
| 1 | +----------------------------------+
1 row in set (0.00 sec)

次に、3つの値のうちの1つを変更します.
mysql> select @@validate_password_number_count; +----------------------------------+
| @@validate_password_number_count | +----------------------------------+
| 1 | +----------------------------------+
1 row in set (0.00 sec)

mysql> set global validate_password_special_char_count=2;
Query OK, 0 rows affected (0.00 sec)

mysql> select @@validate_password_special_char_count; +----------------------------------------+
| @@validate_password_special_char_count | +----------------------------------------+
| 2 | +----------------------------------------+
1 row in set (0.00 sec)

mysql> select @@validate_password_length; +----------------------------+
| @@validate_password_length | +----------------------------+
| 5 | +----------------------------+
1 row in set (0.00 sec)

今からパスワードを変更します(さっきの設定で、パスワードには特殊文字を含まなくてもいいですが、最低5桁は必要です).
mysql> set password="123456";
Query OK, 0 rows affected (0.00 sec)

mysql> set password="1234";
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements