Centos7安裝MySQL8.0

請到這個地址看:http://www.javashuo.com/article/p-zwqvcpzb-k.html Centos7安裝MySQL8.0 - 操做手冊html

 

1、yum安裝方式:

  • 卸載以前版本的mysql:
[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

   

下載地址:  https: //pan .baidu.com /s/1QzYaSnzAQeTqAmk8FE9doA   提取密碼: 2maw
  • 安裝、啓動、第一次登陸
[root@DB-node01 ~]# yum localinstall https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm #安裝yum源文件
[root@DB-node01 ~]# yum install mysql-community-server
[root@DB-node01 ~]# systemctl start mysqld
[root@DB-node01 ~]# systemctl enable mysqld
[root@DB-node01 ~]# grep 'temporary password' /var/log/mysqld.log
2019-03-06T01:53:19.897262Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: e53xDalx.*dE
[root@DB-node01 ~]# mysql -p'e53xDalx.*dE'
########
  • 修改密碼、密碼複雜性要求
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
 
mysql> set global validate_password.policy=0;  --Mysql5.7有點不同了.
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> select version();  --查看版本
mysql> show global variables like 'port'; --查看服務端口
mysql> select host,user,authentication_string from mysql.user;  --查看mysql鏈接的受權信息
+-----------+------------------+------------------------------------------------------------------------+
| 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 in set (0.00 sec)

#######node

mysql5.7以後的數據庫裏mysql.user表裏已經沒有password這個字段了,password字段改爲了authentication_string。mysql

mysql> select host,user,password from mysql.user;  --這是mysql5.6及如下版本的查看命令,  
ERROR 1054 (42S22): Unknown column 'password' in 'field list'

 

============================= mysql8.0修改用戶密碼命令 ================================
mysql> use mysql;
mysql> ALTER USER  'root' @ 'localhost'  IDENTIFIED BY  '123456' ;
mysql> flush privileges;
 

2、二進制安裝

 
下載Mysql8.0.12地址:  https: //pan .baidu.com /s/1LyXrkrCPP7QKLrWYbLRBlw
提取密碼:  emmf
  • 刪除系統默認或以前可能安裝的其餘版本的mysql
[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/src/
[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

 

  • 配置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                            = 3306
 
default-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

  

  •  初始化、啓動、登陸、重置初始密碼
6) 初始化 (稍等一下子, 能夠到/data/mysql/log/mysqld.err日子裏查看初始化過程, 看看有沒有error信息)
[mysql@mysql-node ~]$ mysqld --defaults-file=/data/mysql/conf/my.cnf  --initialize-insecure  --user=mysql 
 
7) 啓動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)
 
8) 登陸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 in set (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 interface can 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 in set (0.00 sec)

  

  •  受權
#授予用戶權限. 必須先要建立用戶, 才能受權!!
(建立用戶時要帶@並指定地址, 則grant受權時的地址就是這個@後面指定的!, 不然grant受權就會報錯!)
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 in set (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 in set (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 in set (0.00 sec)
 
mysql> show grants for kevin@'172.16.60.%';
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Grants for kevin@172.16.60.%                                                                                                                                                                                                                                                                                                                                                                                |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| 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 in set (0.00 sec)

 

 

MySQL單機多實例安裝配置

上面已經有了一個3306端口的MySQL實例, 如今須要再起來兩個實例, 分別爲3307, 3308. 操做以下:sql

  •  建立數據目錄、生成和修改mysql配置文件
#建立實例的數據目錄
[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*

  

  • 初始化實例、啓動mysql、設置密碼
進行初始化兩個實例
[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    23996     1  0 14:37 ?        00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/data/mysql/conf/my.cnf
mysql    24743 23996  0 14: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     30473 23727  0 15:33 pts/0    00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/data/mysql3307/conf/my.cnf
mysql    31191 30473 17 15:33 pts/0    00: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     31254 23727  0 15:33 pts/0    00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/data/mysql3308/conf/my.cnf
mysql    31977 31254 39 15:33 pts/0    00: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     32044 23727  0 15:34 pts/0    00: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三個端口實例的啓動命令分別爲:
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

   

編寫mysql多端口實例的登陸腳本

上面的多端口實例配置以後, 查看一個登陸腳本:myin (注意將腳本中的密碼改成本身的密碼)
  • 編寫登陸腳本並受權(此處故障解決方法在下方)
[root@mysql-node ~]# ll /usr/local/mysql/bin/myin
-rwxrwxr-x 1 mysql mysql 161 Aug 22  2018 /usr/local/mysql/bin/myin
[root@mysql-node ~]# cat /usr/local/mysql/bin/myin
#!/bin/bash
 
p=$1
shift
mysql -h"127.0.0.1" -P"$p" --default-character-set=utf8mb4 --show-warnings -uroot -p'123456' -A --prompt="(\u@\p)[\d]> " "$@"

 

  • 嘗試登陸
[mysql@mysql-node ~]# myin 3306
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 1130 (HY000): Host '127.0.0.1' is not allowed to connect to this MySQL server

 

  • 解決方法

這是由於各個端口實例中的root用戶受權的是localhost, 而不是127.0.0.1, 則能夠再次添加一個針對127.0.0.1的root用戶受權或者將myin腳本中的127.0.0.1 修改成 localhost數據庫

[root@mysql-node ~]# sed -i 's/127.0.0.1/localhost/g' /usr/local/mysql/bin/myin
[root@mysql-node ~]# cat /usr/local/mysql/bin/myin
#!/bin/bash
 
p=$1
shift
mysql -h"localhost" -P"$p" --default-character-set=utf8mb4 --show-warnings -uroot -p'123456' -A --prompt="(\u@\p)[\d]> " "$@"
 
則如今能夠登陸各個實例了, 登陸命令爲"myin port"
 
登陸3306端口實例
[root@mysql-node ~]# myin 3306
>
 
登陸3307端口實例
[root@mysql-node ~]# myin 3307
>
 
登陸3308端口實例
[root@mysql-node ~]# myin 3308
>

  

生產環境下的思路: 同一個業務庫單獨放在一個實例下, 不要混用數據庫. 單機多實例間能夠作主從或主主同步, 也能夠在多機多實例之間坐主從或主主同步.
好比: 
A機器有三個實例:  3310, 3311, 3312
B機器有三個實例:  3310, 3311, 3312
C機器有三個實例:  3310, 3311, 3312 vim

則三臺機器的每一個對應的端口實例之間作主從或主主同步(GTID, MGR), 一主兩從, 或三主模式.  (多實例環境最好不要用3306端口, 不然常常會出現一些誤操做)centos

 

 

3、Mysql8.0使用過程當中踩過的一些坑

1)  建立用戶和受權
在mysql8.0建立用戶和受權和以前不太同樣了,其實嚴格上來說,也不能說是不同, 只能說是更嚴格, mysql8.0須要先建立用戶(建立用戶時要帶@並指定地址, 則grant受權時的地址就是這個@後面指定的!, 不然grant受權就會報錯!)和設置密碼,而後才能受權。bash

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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及以前版本的直接受權的方法, 會有報錯:session

1
2
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

2)  Mysql8.0默認是不能使用root帳號進行遠程登陸的! root帳號只能本地登陸!socket

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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  in  set  (0.00 sec)
 
若是想要遠程登陸, 則須要進行update更新下root帳號的權限
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  in  set  (0.00 sec)

這樣就能在遠程使用root帳號登陸該mysql8.0的數據庫了

3) 修改root帳號權限, 容許root帳號遠程登陸後, 用navicat進行mysql的遠程鏈接時,出現了彈窗報錯: 

 

出現這個緣由是mysql8 以前的版本中加密規則是mysql_native_password, 而在mysql8以後,加密規則是caching_sha2_password, 解決問題方法有兩種:
1) 一種是升級navicat驅動;
2) 一種是把mysql用戶登陸密碼加密規則還原成mysql_native_password;

這裏選擇第二種方法來解決:

1
2
3
4
5
6
7
8
9
10
11
#修改加密規則
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)

這樣問題就解決了。

4) sqlyog連接時出現2058異常

1
2
3
4
5
6
1) 使用sqlyog連接時會出現2058的異常,此時咱們須要修改mysql,命令行登陸mysql(與修改密碼中登陸相同,使用修改後的密碼),而後執行下面的命令:
    mysql > ALTER USER  'root' @ 'localhost'  IDENTIFIED WITH mysql_native_password BY  'password' ;
    其中password爲本身修改的密碼。而後SQLyog中從新鏈接,則可鏈接成功,OK。
 
2) 若是報錯:ERROR 1396 (HY000): Operation ALTER USER failed  for  'root' @ 'localhost' 則使用下面命令:
    mysql > ALTER USER  'root' @ '%'  IDENTIFIED WITH mysql_native_password BY  'password' ;

5) 修改默認編碼方式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
mysql8.0默認編碼方式爲utf8mb4,所以使用時不須要修改,可以使用以下命令查看:
mysql > SHOW VARIABLES WHERE Variable_name LIKE  'character_set_%'  OR Variable_name LIKE  'collation%' ;
 
若是須要修改其餘編碼方式,好比須要修改成utf8mb4,可使用以下方式:
修改mysql配置文件my.cnf, 找到後請在如下三部分裏添加以下內容:
[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,也能夠不加這個參數,會自動檢測。
而autoReconnect= true  是必須加上的。

6) 部分參數配置查詢命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#查詢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%'
***************當你發現本身的才華撐不起野心時,就請安靜下來學習吧***************
相關文章
相關標籤/搜索