CentOSでのMySQL8.0のインストールと展開、非常に詳細!

[ MySQL](https://cloud.tencent.com/product/cdb?from=10680)8公式バージョン8.0.11がリリースされました。公式によると、MySQL8はMySQL 5.7より2倍高速であり、多くの改善などがあります。速いパフォーマンス!誰が最高?参照してください:[MySQL 5.7 vs 8.0、どちらのパフォーマンスが優れていますか? ](http://mp.weixin.qq.com/s?__biz=MzI0MDQ4MTM5NQ==&mid=2247502346&idx=2&sn=e6457333ea4016d981a56a64812a1e1c&chksm=e918af16de6f2600b95116d15d6a13c8fa7f42e1c3f5d66e8ba18609e02b76eca3dd2664a42f&scene=21#wechat_redirect)

Mysql8.0のインストール(YUMメソッド)

  1. 最初に、デフォルトまたは以前にシステムによってインストールされた可能性のある他のバージョンの[mysql](http://mp.weixin.qq.com/s?__biz=MzI0MDQ4MTM5NQ==&mid=2247501230&idx=2&sn=0754a0a419cf17ac2d5bbbcb6ac06687&chksm=e918a0b2de6f29a444f73e9f01687a440bbfb07d9c3e2c82215e31006680feee47fd64f0d0f0&scene=21#wechat_redirect)を削除します
[ root@DB-node01 ~]# for i in$(rpm -qa|grep mysql);do rpm -e $i --nodeps;done
[ root@DB-node01 ~]# rm -rf /var/lib/mysql && rm -rf /etc/my.cnf

  1. Mysql8.0yumリソースライブラリをインストールします
mysql80-community-release-el7-1.noarch.rpm    
 
[ root@DB-node01 ~]# yum localinstall https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm
  1. Mysql8.0をインストールします
[ root@DB-node01 ~]# yum install mysql-community-server
   
# MySQLサーバーの起動とMySQLの自動起動
[ root@DB-node01 ~]# systemctl start mysqld
[ root@DB-node01 ~]# systemctl enable mysqld

  1. デフォルトのパスワードで初めてログインした後、パスワードをリセットする必要があります
デフォルトのパスワードを表示する,次のデフォルトのパスワードは"e53xDalx.*dE"[root@DB-node01 ~]# grep 'temporary password'/var/log/mysqld.log
2019- 03- 06 T01:53:19.897262Z 5[Note][MY-010454][Server] A temporary password is generated for root@localhost: e53xDalx.*dE
  
[ root@DB-node01 ~]# mysql -pe53xDalx.*dE
............
mysql> select version();
ERROR 1820(HY000): You must reset your password using ALTER USER statement before executing this statement.

エラーメッセージは、初期パスワードをリセットする必要があることを示してから、mysqlログインパスワードのリセットを開始します(mysqlデータベースに切り替えるには、use [mysql](http://mp.weixin.qq.com/s?__biz=MzI0MDQ4MTM5NQ==&mid=2247499648&idx=1&sn=49a4e97ecd5704f61ac3a3ff1bb42b8d&chksm=e9189a9cde6f138ac5fc9b0b84975c4c916f6e016e10581be94f4d15dc5d58e4e3941c46e210&scene=21#wechat_redirect)を使用することに注意してください)。

mysql> use mysql;
ERROR 1820(HY000): You must reset your password using ALTER USER statement before executing this statement.
   
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
ERROR 1819(HY000): Your password does not satisfy the current policy requirements

これは実際にはvalidate_password_policyの値に関連しており、mysql8.0はvalidate_password_policyに関連する構成名を変更しました。これはMysql5.7とは少し異なります。

mysql>set global validate_password.policy=0;
Query OK,0 rows affected(0.00 sec)
   
mysql>set global validate_password.length=1;
Query OK,0 rows affected(0.00 sec)

次に、パスワードを変更します

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
Query OK,0 rows affected(0.05 sec)
   
mysql> flush privileges;
Query OK,0 rows affected(0.03 sec)

終了し、新しいパスワードでmysqlに再度ログインします

[ root@DB-node01 ~]# mysql -p123456
...........
mysql> select version();+-----------+|version()|+-----------+|8.0.15|+-----------+1 row inset(0.00 sec)

サービスポートを表示

mysql> show global variables like 'port';+---------------+-------+| Variable_name | Value |+---------------+-------+| port          |3306|+---------------+-------+1 row inset(0.01 sec)

mysql接続の認証情報を表示する

mysql> select host,user,password from mysql.user;
ERROR 1054(42S22): Unknown column 'password'in'field list'

上記はmysql5.6以下のviewコマンドです。mysql5.7以降のデータベースのmysql.userテーブルにパスワードフィールドがなく、パスワードフィールドがauthentication_stringに変更されています。

mysql> select host,user,authentication_string from mysql.user;+-----------+------------------+------------------------------------------------------------------------+| host      | user             | authentication_string                                                  |+-----------+------------------+------------------------------------------------------------------------+| localhost | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED || localhost | mysql.session    | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED || localhost | mysql.sys        | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED || localhost | root             | $A$005${7J0=4Dc7Jym8eI/FU4jimKWFvkD9XmoAkF1ca5.Un0bc6zgmPtU.0|+-----------+------------------+------------------------------------------------------------------------+4 rows inset(0.00 sec)

mysql8.0ユーザーパスワードの変更コマンド

mysql> use mysql;
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
mysql> flush privileges;

Mysql8.0のインストール(バイナリモード)

  1. 最初に、デフォルトまたは以前にシステムによってインストールされた可能性のある他のバージョンの[mysql](http://mp.weixin.qq.com/s?__biz=MzI0MDQ4MTM5NQ==&mid=2247490615&idx=1&sn=54faa8277b7bb5e2a66debc1bd49305a&chksm=e91b792bde6cf03da6456be89a10f65eb1b49bca3bd4ea40467bf01609dfa7c89082d472d90e&scene=21#wechat_redirect)を削除します
[ root@mysql8-node ~]# for i in$(rpm -qa|grep mysql);do rpm -e $i --nodeps;done
[ root@mysql8-node ~]# rm -rf /var/lib/mysql && rm -rf /etc/my.cnf

  1. 必要なパッケージをインストールします
[ root@mysql8-node ~]# yum -y install libaio
[ root@mysql8-node ~]# yum -y install net-tools

  1. Mysql8.0.12をダウンロードしてインストールします
[ root@mysql8-node ~]# groupadd mysql
[ root@mysql8-node ~]# useradd -g mysql mysql
 
[ root@mysql8-node ~]# cd /usr/local/src/[root@mysql-node src]# ll
- rw-r--r--1 root root 620389228 Aug 222018 mysql8.0.12_bin_centos7.tar.gz
[ root@mysql-node src]# tar -zvxf mysql8.0.12_bin_centos7.tar.gz
[ root@mysql-node src]# mv mysql /usr/local/[root@mysql-node src]# chown -R mysql.mysql /usr/local/mysql
 
[ root@mysql-node src]# vim /home/mysql/.bash_profile
export PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH
[ root@mysql-node src]# source /home/mysql/.bash_profile
[ root@mysql-node src]# echo "PATH=$PATH:/usr/local/mysql/bin">>/etc/profile
[ root@mysql-node src]# source /etc/profile

  1. データディレクトリを作成する
[ root@mysql-node src]# mkdir -p /data/mysql/{data,log,binlog,conf,tmp}[root@mysql-node src]# chown -R mysql.mysql /data/mysql

  1. [mysql](http://mp.weixin.qq.com/s?__biz=MzI0MDQ4MTM5NQ==&mid=2247490571&idx=2&sn=86253fc5508f6f32daf866272aa7feac&chksm=e91b7917de6cf0014f41bfeb50dbc8630c9ff92be55aa537e838be0f46a3cf0075def9149e4c&scene=21#wechat_redirect)を構成します
[ root@mysql-node src]# su - mysql
[ mysql@mysql-node ~]$ vim /data/mysql/conf/my.cnf
[ mysqld]
lower_case_table_names          =1
user                            = mysql
server_id                       =1
port                            =3306default-time-zone ='+08:00'
enforce_gtid_consistency        = ON
gtid_mode                       = ON
binlog_checksum                 = none
default_authentication_plugin   = mysql_native_password
datadir                         =/data/mysql/data
pid-file                        =/data/mysql/tmp/mysqld.pid
socket                          =/data/mysql/tmp/mysqld.sock
tmpdir                          =/data/mysql/tmp/
skip-name-resolve               = ON
open_files_limit                =65535
table_open_cache                =2000
 
################# innodb########################
innodb_data_home_dir            =/data/mysql/data
innodb_data_file_path           = ibdata1:512M;ibdata2:512M:autoextend
innodb_buffer_pool_size = 12000M
innodb_flush_log_at_trx_commit =1
innodb_io_capacity =600
innodb_lock_wait_timeout =120
innodb_log_buffer_size = 8M
innodb_log_file_size = 200M
innodb_log_files_in_group =3
innodb_max_dirty_pages_pct =85
innodb_read_io_threads =8
innodb_write_io_threads =8
innodb_thread_concurrency =32
innodb_file_per_table
innodb_rollback_on_timeout
 
innodb_undo_directory           =/data/mysql/data
innodb_log_group_home_dir       =/data/mysql/data
 
################### session###########################
join_buffer_size = 8M
key_buffer_size = 256M
bulk_insert_buffer_size = 8M
max_heap_table_size = 96M
tmp_table_size = 96M
read_buffer_size = 8M
sort_buffer_size = 2M
max_allowed_packet = 64M
read_rnd_buffer_size = 32M
 
############ log set###################
log-error                       =/data/mysql/log/mysqld.err
log-bin                         =/data/mysql/binlog/binlog
log_bin_index                   =/data/mysql/binlog/binlog.index
max_binlog_size                 = 500M
slow_query_log_file             =/data/mysql/log/slow.log
slow_query_log                  =1
long_query_time                 =10
log_queries_not_using_indexes   = ON
log_throttle_queries_not_using_indexes  =10
log_slow_admin_statements       = ON
log_output                      = FILE,TABLE
master_info_file                =/data/mysql/binlog/master.info

  1. 初期化(しばらく待ってください。/data/mysql/log/mysqld.err日で初期化プロセスをチェックして、エラーメッセージがあるかどうかを確認できます)
[ mysql@mysql-node ~]$ mysqld --defaults-file=/data/mysql/conf/my.cnf  --initialize-insecure  --user=mysql 

  1. mysqldを起動します
[ mysql@mysql-node ~]$ mysqld_safe --defaults-file=/data/mysql/conf/my.cnf &[mysql@mysql-node ~]$ lsof -i:3306
COMMAND   PID  USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
mysqld  24743 mysql   23u  IPv6 23132988      0t0  TCP *:mysql(LISTEN)
  1. mysqlにログインし、パスワードをリセットします
初めてローカルでsockファイルを使用してmysqlにログインするのにパスワードは必要ありません
[ mysql@mysql-node ~]# mysql -S /data/mysql/tmp/mysqld.sock
.............
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
Query OK,0 rows affected(0.07 sec)
 
mysql> flush privileges;
Query OK,0 rows affected(0.03 sec)
 
mysql> select host,user,authentication_string from mysql.user;+-----------+------------------+------------------------------------------------------------------------+| host      | user             | authentication_string                                                  |+-----------+------------------+------------------------------------------------------------------------+| localhost | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED || localhost | mysql.session    | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED || localhost | mysql.sys        | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED || localhost | root             |*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9                              |+-----------+------------------+------------------------------------------------------------------------+4 rows inset(0.00 sec)

ログアウト、パスワードをリセットした後、パスワードなしでsockファイルでログインすることはできません

[ root@mysql-node ~]# mysql -S /data/mysql/tmp/mysqld.sock
ERROR 1045(28000): Access denied for user 'root'@'localhost'(using password: NO)[root@mysql-node ~]# mysql -p123456
mysql:[Warning] Using a password on the command line interfacecan be insecure.
ERROR 2002(HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

sockファイルへのソフトリンクを作成する

[ root@mysql-node ~]# ln -s /data/mysql/tmp/mysqld.sock /tmp/mysql.sock

ログインする

[ root@mysql-node ~]# mysql -p123456
または
[ root@mysql-node ~]# mysql -uroot -S /data/mysql/tmp/mysqld.sock -p123456
.............
mysql> select version();+-----------+|version()|+-----------+|8.0.12|+-----------+1 row inset(0.00 sec)
 
# ユーザー権限を付与する.最初にユーザーを作成する必要があります,承認するには!!(ユーザーを作成するときは、@そして、アドレスを指定します,次に、付与が承認されたときのアドレスはこれです@後で指定!,それ以外の場合、許可の付与はエラーを報告します!)
mysql> create user 'kevin'@'%' identified by '123456';
Query OK,0 rows affected(0.11 sec)
 
mysql> grant all privileges on *.* to 'kevin'@'%'with grant option; 
Query OK,0 rows affected(0.21 sec)
 
mysql> select host,user,authentication_string from mysql.user;+-----------+------------------+------------------------------------------------------------------------+| host      | user             | authentication_string                                                  |+-----------+------------------+------------------------------------------------------------------------+|%| kevin            |*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9                              || localhost | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED || localhost | mysql.session    | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED || localhost | mysql.sys        | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED || localhost | root             |*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9                              |+-----------+------------------+------------------------------------------------------------------------+5 rows inset(0.00 sec)
 
mysql> update mysql.user set host='172.16.60.%' where user="kevin";
Query OK,1 row affected(0.16 sec)
Rows matched:1  Changed:1  Warnings:0
 
mysql> flush privileges;
Query OK,0 rows affected(0.05 sec)
 
mysql> select host,user,authentication_string from mysql.user;+-------------+------------------+------------------------------------------------------------------------+| host        | user             | authentication_string                                                  |+-------------+------------------+------------------------------------------------------------------------+|172.16.60.%| kevin            |*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9                              || localhost   | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED || localhost   | mysql.session    | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED || localhost   | mysql.sys        | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED || localhost   | root             |*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9                              |+-------------+------------------+------------------------------------------------------------------------+5 rows inset(0.00 sec)
 
mysql>  create user 'bobo'@'172.16.60.%' identified by '123456';      
Query OK,0 rows affected(0.09 sec)
 
mysql> grant all privileges on *.* to 'bobo'@'172.16.60.%';     
Query OK,0 rows affected(0.17 sec)
 
mysql> flush privileges;
Query OK,0 rows affected(0.04 sec)
 
mysql> select host,user,authentication_string from mysql.user;+-------------+------------------+------------------------------------------------------------------------+| host        | user             | authentication_string                                                  |+-------------+------------------+------------------------------------------------------------------------+|172.16.60.%| bobo             |*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9                              ||172.16.60.%| kevin            |*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9                              || localhost   | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED || localhost   | mysql.session    | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED || localhost   | mysql.sys        | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED || localhost   | root             |*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9                              |+-------------+------------------+------------------------------------------------------------------------+6 rows inset(0.00 sec)
 
mysql> show grants for kevin@'172.16.60.%';+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| Grants for [email protected].%|+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, CREATE ROLE, DROP ROLE ON *.* TO `kevin`@`172.16.60.%` WITH GRANT OPTION |+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+1 row inset(0.00 sec)

MySQLシングルマシンマルチインスタンスインストール構成

上記のバイナリ展開から、ポート3306のMySQLインスタンスが設定されていることがわかります。次に、それぞれ3307と3308の2つのインスタンスを設定する必要があります。操作は次のとおりです。

インスタンスのデータディレクトリを作成します

[ root@mysql-node ~]# mkdir -p /data/mysql3307/{data,log,binlog,conf,tmp}[root@mysql-node ~]# mkdir -p /data/mysql3308/{data,log,binlog,conf,tmp}[root@mysql-node ~]# chown -R mysql.mysql /data/mysql3307
[ root@mysql-node ~]# chown -R mysql.mysql /data/mysql3308

mysqlを構成します

[ root@mysql-node ~]# cp -r /data/mysql/conf/my.cnf /data/mysql3307/conf/[root@mysql-node ~]# cp -r /data/mysql/conf/my.cnf /data/mysql3308/conf/[root@mysql-node ~]# sed -i 's#/data/mysql/#/data/mysql3307/#g'/data/mysql3307/conf/my.cnf
[ root@mysql-node ~]# sed -i 's#/data/mysql/#/data/mysql3308/#g'/data/mysql3308/conf/my.cnf
[ root@mysql-node ~]# sed -i 's/3306/3307/g'/data/mysql3307/conf/my.cnf
[ root@mysql-node ~]# sed -i 's/3306/3308/g'/data/mysql3308/conf/my.cnf  
[ root@mysql-node ~]# chown -R mysql.mysql /data/mysql*

2つのインスタンスを初期化します

[ root@mysql-node ~]# mysqld --defaults-file=/data/mysql3307/conf/my.cnf  --initialize-insecure  --user=mysql 
[ root@mysql-node ~]# mysqld --defaults-file=/data/mysql3308/conf/my.cnf  --initialize-insecure  --user=mysql

次に、mysqldを起動します

[ root@mysql-node ~]# mysqld_safe --defaults-file=/data/mysql3307/conf/my.cnf &[root@mysql-node ~]# mysqld_safe --defaults-file=/data/mysql3308/conf/my.cnf &

起動が成功したかどうかを確認します

[ root@mysql-node ~]# ps -ef|grep mysql
mysql    239961014:37?00:00:00/bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/data/mysql/conf/my.cnf
mysql    2474323996014:38?00:00:17/usr/local/mysql/bin/mysqld --defaults-file=/data/mysql/conf/my.cnf --basedir=/usr/local/mysql --datadir=/data/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --log-error=/data/mysql/log/mysqld.err --open-files-limit=65535--pid-file=/data/mysql/tmp/mysqld.pid --socket=/data/mysql/tmp/mysqld.sock --port=3306
root     3047323727015:33 pts/000:00:00/bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/data/mysql3307/conf/my.cnf
mysql    31191304731715:33 pts/000:00:02/usr/local/mysql/bin/mysqld --defaults-file=/data/mysql3307/conf/my.cnf --basedir=/usr/local/mysql --datadir=/data/mysql3307/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/mysql3307/log/mysqld.err --open-files-limit=65535--pid-file=/data/mysql3307/tmp/mysqld.pid --socket=/data/mysql3307/tmp/mysqld.sock --port=3307
root     3125423727015:33 pts/000:00:00/bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/data/mysql3308/conf/my.cnf
mysql    31977312543915:33 pts/000:00:02/usr/local/mysql/bin/mysqld --defaults-file=/data/mysql3308/conf/my.cnf --basedir=/usr/local/mysql --datadir=/data/mysql3308/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/mysql3308/log/mysqld.err --open-files-limit=65535--pid-file=/data/mysql3308/tmp/mysqld.pid --socket=/data/mysql3308/tmp/mysqld.sock --port=3308
root     3204423727015:34 pts/000:00:00 grep --color=auto mysql
 
[ root@mysql-node ~]# lsof -i:3307
COMMAND   PID  USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
mysqld  31191 mysql   22u  IPv6 23144844      0t0  TCP *:opsession-prxy(LISTEN)[root@mysql-node ~]# lsof -i:3308
COMMAND   PID  USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
mysqld  31977 mysql   22u  IPv6 23145727      0t0  TCP *:tns-server(LISTEN)[root@mysql-node ~]# lsof -i:3306
COMMAND   PID  USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
mysqld  24743 mysql   23u  IPv6 23132988      0t0  TCP *:mysql(LISTEN)

3307ポートインスタンスにログインし、パスワードを設定します

[ root@mysql-node ~]# mysql -S /data/mysql3307/tmp/mysqld.sock
............
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
Query OK,0 rows affected(0.11 sec)
 
mysql> flush privileges;
Query OK,0 rows affected(0.11 sec)

ログアウトし、新しいパスワードでログインします

[ root@mysql-node ~]# mysql -uroot -S /data/mysql3307/tmp/mysqld.sock -p123456   
.............
mysql>

同様に、3308ポートインスタンスにログインしてパスワードを設定します

[ root@mysql-node ~]# mysql -S /data/mysql3308/tmp/mysqld.sock
...........
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
Query OK,0 rows affected(0.13 sec)
 
mysql> flush privileges;
Query OK,0 rows affected(0.03 sec)

ログアウトし、新しいパスワードでログインします

[ root@mysql-node ~]# mysql -uroot -S /data/mysql3308/tmp/mysqld.sock -p123456
....................
mysql>

3306, 3307, 3308 3つのポートインスタンスの起動コマンドは次のとおりです。

mysqld_safe --defaults-file=/data/mysql/conf/my.cnf &
mysqld_safe --defaults-file=/data/mysql3307/conf/my.cnf &
mysqld_safe --defaults-file=/data/mysql3308/conf/my.cnf &

ログインコマンドは次のとおりです。

mysql -uroot -S /data/mysql/tmp/mysqld.sock -p123456
mysql -uroot -S /data/mysql3307/tmp/mysqld.sock -p123456
mysql -uroot -S /data/mysql3308/tmp/mysqld.sock -p123456

ただし、繰り返しインストールの問題を解決するために、マルチインスタンスインストール方法を特別にスクリプトに編集しました。必要な読者は、この公式アカウントのバックグラウンドで** MySQL8 **に直接返信して、マルチインスタンスインストールスクリプトを取得できます。

**Mysql8.0 ** ###の使用中に、いくつかのピットが踏まれました

mysql> create user 'kevin'@'%' identified by '123456';
Query OK,0 rows affected(0.04 sec)
 
mysql> grant all privileges on *.* to 'kevin'@'%'with grant option;   
Query OK,0 rows affected(0.04 sec)
 
mysql> create user 'bobo'@'%' identified by '123456';    
Query OK,0 rows affected(0.06 sec)
 
mysql> grant all privileges on *.* to 'bobo'@'%'with grant option;
Query OK,0 rows affected(0.03 sec)
 
mysql> flush privileges;
Query OK,0 rows affected(0.04 sec)
 
mysql> select host,user,authentication_string from mysql.user;+-----------+------------------+------------------------------------------------------------------------+| host      | user             | authentication_string                                                  |+-----------+------------------+------------------------------------------------------------------------+|%| bobo             | $A$005$1VY")q?G6<^X@-6LsXrPt5C0TwlTuvHbaOa3sYF0DKViIGoRPuCF8AzwiFcim1  ||%| kevin            | $A$005$hy`U}ZB#R::rA8W0y2rmwgySqzv0rmR1eTeNDSaXfQPWIsrh7ytbVdi85       || localhost | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED || localhost | mysql.session    | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED || localhost | mysql.sys        | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED || localhost | root             | $A$005$/VO_y^7,]6;2qxggBLmJzhA0Qylu5/AHuRScZ/ykKedgZKh/6krOIzPs2       |+-----------+------------------+------------------------------------------------------------------------+

Mysql5.7以前のバージョンの直接認証方法を引き続き使用すると、エラーが報告されます。

mysql> grant all privileges on *.* to 'shibo'@'%' identified by '123456';
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 '123456'' at line 1
mysql> select host,user,authentication_string from mysql.user;+-----------+------------------+------------------------------------------------------------------------+| host      | user             | authentication_string                                                  |+-----------+------------------+------------------------------------------------------------------------+|%| bobo             | $A$005$1VY")q?G6<^X@-6LsXrPt5C0TwlTuvHbaOa3sYF0DKViIGoRPuCF8AzwiFcim1 ||%| kevin            | $A$005$hy`U}ZB#R::rA8W0y2rmwgySqzv0rmR1eTeNDSaXfQPWIsrh7ytbVdi85 || localhost | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED || localhost | mysql.session    | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED || localhost | mysql.sys        | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED || localhost | root             | $A$005$/VO_y^7,]6;2qxggBLmJzhA0Qylu5/AHuRScZ/ykKedgZKh/6krOIzPs2 |+-----------+------------------+------------------------------------------------------------------------+6 rows inset(0.00 sec)

リモートでログインする場合は、ルートアカウントの権限を更新する必要があります

mysql> update mysql.user set host='%' where user="root";
Query OK,1 row affected(0.10 sec)
Rows matched:1  Changed:1  Warnings:0
 
mysql> flush privileges;
Query OK,0 rows affected(0.14 sec)
 
mysql> select host,user,authentication_string from mysql.user;+-----------+------------------+------------------------------------------------------------------------+| host      | user             | authentication_string                                                  |+-----------+------------------+------------------------------------------------------------------------+|%| bobo             | $A$005$1VY")q?G6<^X@-6LsXrPt5C0TwlTuvHbaOa3sYF0DKViIGoRPuCF8AzwiFcim1  ||%| kevin            | $A$005$hy`U}ZB#R::rA8W0y2rmwgySqzv0rmR1eTeNDSaXfQPWIsrh7ytbVdi85       ||%| root             | $A$005$/VO_y^7,]6;2qxggBLmJzhA0Qylu5/AHuRScZ/ykKedgZKh/6krOIzPs2       || localhost | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED || localhost | mysql.session    | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED || localhost | mysql.sys        | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |+-----------+------------------+------------------------------------------------------------------------+6 rows inset(0.00 sec)

このようにして、rootアカウントを使用してmysql8.0データベースにリモートでログインできます。

  1. ルートアカウントの権限を変更し、ルートアカウントがリモートでログインできるようにした後、Navicatを使用してmysqlにリモート接続すると、ポップアップエラーメッセージが表示されました。

これは、mysql8より前のバージョンの暗号化ルールがmysql_native_passwordであり、mysql8の後の暗号化ルールがcache_sha2_passwordであるため、問題を解決するには2つの方法があります。

  1. 1つは、navicatドライバーをアップグレードすることです。
  1. 1つは、mysqlユーザーログインパスワード暗号化ルールをmysql_native_passwordに復元することです。ここでは、解決する2番目の方法を選択します。
# 暗号化ルールを変更する
mysql> ALTER USER 'root'@'%' IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER;       
Query OK,0 rows affected(0.16 sec)
 
# ユーザーのパスワードを更新する
mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
Query OK,0 rows affected(0.08 sec)
 
# 権限の更新
mysql> FLUSH PRIVILEGES;
Query OK,0 rows affected(0.03 sec)

このようにして問題は解決されます。

  1. Sqlyogリンク2058例外
  1. デフォルトのエンコーディングを変更するmysql8.0のデフォルトのエンコーディングはutf8mb4であるため、使用時に変更する必要はありません。次のコマンドを使用して表示できます。
mysql > SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%';

utf8mb4などの他のエンコード方法を変更する必要がある場合は、次の方法を使用できます。

mysql構成ファイルを変更します.cnf,それを見つけたら、次の3つの部分に次のコンテンツを追加してください。
[ client]default-character-set= utf8mb4
[ mysql]default-character-set= utf8mb4
[ mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'

次に、mysqldサービスを再起動します。ここで:

character_set_client(クライアントソースデータで使用される文字セット)character_set_connection(接続レイヤーの文字セット)character_set_database(現在選択されているデータベースのデフォルトの文字セット)character_set_results(クエリ結果の文字セット)character_set_server(デフォルトの内部操作文字セット)

データベース接続パラメーター:

characterEncoding=utf8はutf8mb4として自動的に認識されます。または、このパラメーターを追加せずに自動的に検出できます。
自動再接続中=trueを追加する必要があります。

# mysqlの最大接続数設定を照会する
mysql> show global variables like 'max_conn%';
mysql> SELECT @@MAX_CONNECTIONS AS 'Max Connections';
 
# リンクの最大数を表示する
mysql> show global status like 'Max_used_connections';
 
# 低速クエリログが有効になっているかどうか、およびログの場所を確認します
mysql> show variables like 'slow_query%';
 
# 遅いクエリログのタイムアウト記録時間を表示する
mysql> show variables like 'long_query_time';
 
# リンクの作成と現在進行中のリンクの数を表示します
mysql> show status like 'Threads%';
 
# 現在のデータベースリンクを表示
mysql> show processlist;

# データベース構成の表示
mysql> show variables like '%quer%';
  • 著者:派手なクリア**出典:https://www.cnblogs.com/kevingrace/p/10482469.html *

Recommended Posts

CentOSでのMySQL8.0のインストールと展開、非常に詳細!
CentOS6 / 7でのMySQL8.0のインストール、展開、および構成
CentOS7でのErlang20.2のインストールと展開
CentOSでのZabbixのインストールと展開およびローカリゼーション
CentOS7でのJenkinsのインストールと展開のチュートリアル
Centos7のインストールとAirflowの展開の詳細
CentOS8でのMySQL8.0のインストール、展開、および構成のチュートリアル
Centosmysqlのインストールと構成
Centos8のインストール図(非常に詳細なチュートリアル)
CentOSでのJava-JDKのインストールと構成
CentOs7のインストールと展開Zabbix3.4オリジナル
Centos7mysqlデータベースのインストールと構成
CentOS 7でのTomcatのインストールと構成(Tomcatの起動)
centos7でのredisのインストールと構成
Centos7のインストールとgitlabサーバーの展開
CentOS7.2でのKVMのインストールと予備使用
CentOS7の下にmysql5.7をインストールします
VMware10でのCentOS7のインストールと構成のグラフィックチュートリアル
Centos7によるPHPのインストールとNginxのチュートリアルの詳細
Mysql8.0.15インストール構成(centos7)
Centos7にmysqlをインストールします
CentOS6.5でのrsyncサーバーのインストールと構成
CentOS6.5の下にmysql5.1をインストールします
CentOS7 DockerNginxの展開と操作の詳細な説明
Centosでのconfluence6.3操作記録のインストールとクラッキング
CentosでのJira7操作記録のインストールとクラッキング
Centos7でのJDK、mysql、tomcatの環境構成
CentOSでのRedisクラスターのインストール
CentOS7のインストールと構成PPTP
CentOSのインストールと構成cmake
LinuxにMySQLをインストールする(CentOS 7)
Centos7.5のインストールと構成MongoDB4.0.4
CentOSでのRedisクラスターのインストール
CentOS7のインストールと構成PPTP
CentOS7postgresqlのインストールと使用
Centos7elk7.1.1のインストールと使用
CentOSでの脆弱性スキャンおよび分析ソフトウェアNessusの展開
CentOS7はopenjdk、tomcat、mysqlプロセスの紹介をインストールします
CentOS7yumはmysqlをインストールして起動します
CentOS5.9でkeepalivedをインストールして構成します
CentOSYumはMySQL5.6をコンパイルしてインストールします
Centos5.2でLAMPをコンパイルしてインストールします
CentOSでNginxとuを使用する
CentOS8インストールMariaDB詳細チュートリアル
Centos6.9でのRabbitMQクラスター展開レコード
ジェンキンス学習のcentos6.9の下でのインストール
CentOS6最小インストールKVM詳細チュートリアル
Centos7hadoopクラスターのインストールと構成
CentOS7のインストールとGitlabのメンテナンス
CentOS7でのElasticsearchクラスター展開レコード
CentOS7でOpenSSLとOpenSSHをアップグレードする
Ubuntu18の非常に詳細な一般的なソフトウェアのインストール
CentOS7.3はiptablesをインストールして詳細に使用します
CentOS7yumはmysqlをインストールして起動します
Centos7とcentos8はmysql5.65.78.0をインストールするのでとても簡単です
CentOS7.Xシステムのインストールと最適化
Python3をインストールし、CentOS8でansible
CentOS6.8でdockerをインストールして使用する
CentOS 7Tomcatサービスのインストールと構成
Centos 7 RAID5の詳細な説明と構成
最新のCentos7インストールMysql8ガイド