mysql8.0初期プローブ:(一)インストールと初期化使用


おかしいけどmysql 5.7の次のバージョンは5.8ではなく8.0に直接ジャンプしたが、特性と機能の最適化が大幅に改善された.
前にたくさんの文章を読んでmysql 8と言いました.0は大きく変化したが、1回のテストでは、ほとんどの操作が一致し、いくつかの操作が異なるだけだ.
次は一歩一歩大きな違いがあるかどうかを見て、この文章は2つの方面だけを話します.
インストール
mysql公式は従来と同様にバイナリパッケージを与える方式であるため,従来の実装方式と大きな差はない.
まず公式サイトはバイナリパッケージをダウンロードして、それから正常に解凍してインストールすることができて、私は以下の方式に慣れました
tar xf mysql-8.0.11-linux-glibc2.12-x86_64.tar.gz
mv mysql-8.0.11-linux-glibc2.12-x86_64 /usr/local/
cd /usr/local/
ln -sf mysql-8.0.11-linux-glibc2.12-x86_64/ mysql80
mkdir -p /data/mysql/data80
groupadd mysql
useradd -g mysql -s /sbin/nologin mysql

実はバイナリパッケージもインストールコンセプトがなくて、すべて持ってきて使います
-注意:操作前に他のmysqlリリース版の干渉がないことを確認し、特にyumインストールとrpmインストール、
#      rpm     mysql mariadb    
rpm -qa |grep -E 'mysql|mariadb'
mariadb-libs-5.5.44-2.el7.centos.x86_64
#       rpm   
rpm -e --nodeps mariadb-libs-5.5.44-2.el7.centos.x86_64
rpm -e --nodeps mysql.x86_64

初期化の使用
1.初期化
実はmysql 5と7違いはない
/usr/local/mysql80/bin/mysqld --defaults-file=/usr/local/mysql80/my.cnf --initialize

そしてパスワードも前と同じ場所で
sed -n '/password/p' /data/mysql/data80/mysql.err
.....A temporary password is generated for root@localhost: %pqGI?ATQ4fg,

起動する前に権限を設定してから起動してください.
chown -R mysql:mysql /data/mysql/data*
/usr/local/mysql80/support-files/mysql.server start

まずmysql 8を用いる.0持参したmysqlクライアントと初期化パスワードが登録され、後でなぜこんなことをするのかと言います.
/usr/local/mysql80/bin/mysql -uroot -p'%pqGI?ATQ4fg' -S /tmp/mysql80.sock  -P3308

パスワードの変更も5.7と同じです
mysql> alter user 'root'@'localhost' identified by '123';
mysql> set password for 'root'@'localhost'=password('123');
mysql> update mysql.user set authentication_string=password('123') where user='root' and Host = 'localhost';
mysql> flush privileges;

このとき、デフォルトのmysqlクライアントでログインすると、このエラーが発生する可能性があります.
mysql -uroot -p123 -P3308 -S /tmp/mysql80.sock 
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 2059 (HY000): Authentication plugin 'caching_sha2_password' cannot be loaded: /usr/local/mysql/lib/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory

mysql 5.7環境ではdefault_を設定できますがauthentication_pluginは認証暗号化方式を変更するが、一般の人は設定しない.mysql 8.0でデフォルトはdefault_になりますauthentication_plugin=caching_sha2_passwordは、初期化したばかりのrootユーザーも含めて、この認証暗号化方式です.この結果、新しいプロトコルで駆動しない限り、例えば8.0に付属のmysqlクライアントを使用しなければなりません.そうしないと、データベースに接続できません.これは必然的に互換性のない状況をもたらし、幸いにも、古い方法に戻ることができる.
vim my.cnf
[mysqld]
default_authentication_plugin=mysql_native_password

しかし、このパラメータは新しい権限を持つユーザーにのみ有効であり、古いrootパスワードは古い方法で使用されます.次のようにします.
#        
/usr/local/mysql80/bin/mysql -uroot -p123 -P3308 -S /tmp/mysql80.sock
#       
mysql> select Host,User,plugin,authentication_string from mysql.user;
+-----------+------------------+-----------------------+------------------------------------------------------------------------+
| Host      | User             | plugin                | authentication_string                                                  |
+-----------+------------------+-----------------------+------------------------------------------------------------------------+
| localhost | mysql.infoschema | mysql_native_password | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE                              |
| localhost | mysql.session    | mysql_native_password | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE                              |
| localhost | mysql.sys        | mysql_native_password | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE                              |
| localhost | root             | caching_sha2_password | $A$005$.Sf}Q/Jh>3b6CjI5/vMJVDIQbS1dbFWaCVuiby7aX3ZY4lB6/M7Vvny5DUA |
+-----------+------------------+-----------------------+------------------------------------------------------------------------+
4 rows in set (0.00 sec)

pluginは異なることが分かる、パスワードの暗号化方式も明らかに一致しないことによって違いが生じる.
そしてもう一人のユーザーを新規作成すると、以前と同じように見えます.
mysql> select Host,User,plugin,authentication_string from mysql.user;
+-----------+------------------+-----------------------+------------------------------------------------------------------------+
| Host      | User             | plugin                | authentication_string                                                  |
+-----------+------------------+-----------------------+------------------------------------------------------------------------+
| %         | sroot            | mysql_native_password | *E56A114692FE0DE073F9A1DD68A00EEB9703F3F1                              |
| localhost | mysql.infoschema | mysql_native_password | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE                              |
| localhost | mysql.session    | mysql_native_password | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE                              |
| localhost | mysql.sys        | mysql_native_password | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE                              |
| localhost | root             | caching_sha2_password | $A$005$.Sf}Q/Jh>3b6CjI5/vMJVDIQbS1dbFWaCVuiby7aX3ZY4lB6/M7Vvny5DUA |
+-----------+------------------+-----------------------+------------------------------------------------------------------------+
5 rows in set (0.00 sec)

デフォルトのmysqlクライアントで再ログイン
mysql -usroot -p123123 -P3308 -S /tmp/mysql80.sock
mysql> \s
--------------
mysql  Ver 14.14 Distrib 5.7.20, for linux-glibc2.12 (x86_64) using  EditLine wrapper

Connection id:        17
Current database:    
Current user:        sroot@localhost
SSL:            Not in use
Current pager:        stdout
Using outfile:        ''
Using delimiter:    ;
Server version:        8.0.11 MySQL Community Server - GPL
Protocol version:    10
Connection:        Localhost via UNIX socket
Server characterset:    utf8
Db     characterset:    utf8
Client characterset:    utf8
Conn.  characterset:    utf8
UNIX socket:        /tmp/mysql80.sock
Uptime:            1 hour 25 min 18 sec

Threads: 2  Questions: 120  Slow queries: 0  Opens: 230  Flush tables: 2  Open tables: 203  Queries per second avg: 0.023
--------------

互換性の問題が解決した.
2.授権
mysql 8でユーザーを作成すると述べた.0ユーザーの作成と承認は以前とは異なります.異なるとは言えませんが、より厳密には、ユーザーを作成し、パスワードを設定してから許可する必要があります.
#       
create user 'sroot'@'%' identified by '123123';
#     
grant all privileges on *.* to 'sroot'@'%' with grant option;

以前のやり方でやれば、文法の間違いを報告することになる.
grant all privileges on *.* to 'sroot'@'%' identified by '123123';
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'identified by '123123'' at line 1

ライセンスユーザーは方法に注意しなければなりません
3.パラメータ変更
レイアウトが限られているので、私はmyを貼っていません.cnfファイル、いくつかの特性の原因のため、mysql 8.0いくつかの構成は以前とは異なり、以下に私が発見したものを列挙する.
query_Cacheは完全に消えたmysql 5.7手動で閉じるように設定する必要があるので、気にしなくてもいいので、対応する2つのパラメータを注釈することができます.
#query_cache_size=0
#query_cache_type=0

innodb_undo_logsはこれ以上設定できませんmysql 8.0ではundo独立テーブルスペースはデフォルトで開き、値は2、つまりデフォルトの2つですがinnodb_を設定することはできません.undo_logsこのパラメータはロールバックセグメントの大きさを指定し、ロールバックセグメントのデフォルトは128です.
#innodb_undo_logs

実はしばらく気づかなかったので,発見してから補充した.
そしてシステムがinnodbエンジンとして表現されていることも発見され、実は以前も特性の中で見た.