[ 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)
[ 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
mysql80-community-release-el7-1.noarch.rpm
[ root@DB-node01 ~]# yum localinstall https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm
[ root@DB-node01 ~]# yum install mysql-community-server
# MySQLサーバーの起動とMySQLの自動起動
[ root@DB-node01 ~]# systemctl start mysqld
[ root@DB-node01 ~]# systemctl enable mysqld
デフォルトのパスワードを表示する,次のデフォルトのパスワードは"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;
[ 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
[ root@mysql8-node ~]# yum -y install libaio
[ root@mysql8-node ~]# yum -y install net-tools
[ 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
[ root@mysql-node src]# mkdir -p /data/mysql/{data,log,binlog,conf,tmp}[root@mysql-node src]# chown -R mysql.mysql /data/mysql
[ 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
[ mysql@mysql-node ~]$ mysqld --defaults-file=/data/mysql/conf/my.cnf --initialize-insecure --user=mysql
[ 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)
初めてローカルで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)
上記のバイナリ展開から、ポート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 **に直接返信して、マルチインスタンスインストールスクリプトを取得できます。
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データベースにリモートでログインできます。
これは、mysql8より前のバージョンの暗号化ルールがmysql_native_passwordであり、mysql8の後の暗号化ルールがcache_sha2_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)
このようにして問題は解決されます。
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