Centos7離線rpm安裝MySQL-5.7.29【推薦】

DevinKim發表於2020-11-16

Centos7離線rpm安裝MySQL-5.7.29

一.徹底解除安裝系統原裝的MySQL

1.查詢mysql程式

如果查到的結果不為空,則進入第2步解除安裝mysql

rpm -qa|grep -i mysql

2.解除安裝mysql

#停止mysql服務
systemctl stop mysqld
#刪除軟體命令
rpm -e –nodeps $(rpm -qa|grep -i mysql)

# 如果提示依賴包錯誤,則使用以下命令嘗試:
rpm -ev $(rpm -qa|grep -i mysql) --nodeps

# 如果提示錯誤:error: %preun(xxxxxx) scriptlet failed, exit status 1
# 則用以下命令嘗試:
rpm -e --noscripts $(rpm -qa|grep -i mysql)

3.刪除mysql目錄和檔案

#刪除解除安裝後殘留的mysql的目錄
find / -name mysql    #然後使用 rm -rf 將查詢到的目錄全部刪除


#刪除殘留的mysql的配置檔案
rm -rf /etc/my.cnf
rm -rf /etc/my.cnf.d

二.下載rpm安裝包

方式一:使用百度網盤下載:

方式二:在MySQL官網中找到YUM源rpm安裝包:
下載頁面:https://downloads.mysql.com/archives/community/

在這裡插入圖片描述

具體下載地址:https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.29-1.el7.x86_64.rpm-bundle.tar

上傳並解壓rpm的壓縮包

mkdir -p /baicdt/softwares/mysql_rpm
cd /baicdt/softwares/

# 使用rz命令將下載的tar包上傳到當前目錄 yum -y install lrzsz
# 解壓至/baicdt/softwares/mysql_rpm目錄
tar -xvf /baicdt/softwares/mysql-5.7.29-1.el7.x86_64.rpm-bundle.tar -C /baicdt/softwares/mysql_rpm/

三.安裝mysql

# 進入解壓後的目錄刪除不需要安裝的包
cd /baicdt/softwares/mysql_rpm

擴充套件:各rpm包的作用如下表,我們僅安裝使用到的包即可

NO包名作用是否安裝
1clientMySQL客戶端
2common服務端和客戶端常用庫檔案
3devel客戶端開發用的標頭檔案及庫
4embedded嵌入式版本
5embedded-compat相容老版本嵌入式的共享庫
6embedded-devel嵌入式版本的標頭檔案與庫
7libs資料庫客戶端共享庫
8libs-compat相容老版本的共享庫
9server資料庫服務端與相關工具
10testMySQL測試套件

開始安裝:

# 注意:因逐層建存在依賴,安裝順序不要隨意變
cd /baicdt/softwares/mysql_rpm
rpm -ivh mysql-community-common-5.7.29-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.29-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-compat-5.7.29-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.29-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.29-1.el7.x86_64.rpm

# 刪除安裝包後,檢視是否安裝成功
rm -rf /baicdt/softwares/mysql_rpm/* && rpm -qa|grep -i mysql

四.啟動mysql服務

#1.臨時啟動mysql服務
systemctl start mysqld

#2.開機啟動mysql服務
systemctl enable mysqld

#3.檢視MySQL的啟動狀態
systemctl status mysqld

#4.檢視mysql程式是否正常開啟
ps -le | grep mysqld
netstat -ntlp | grep mysqld

五.修改mysql密碼

1.首次登陸mysql

mysql安裝完成之後,在/var/log/mysqld.log檔案中給root生成了一個預設密碼。通過以下命令找到密碼:

grep 'temporary password' /var/log/mysqld.log

在這裡插入圖片描述

# 使用剛才找到的密碼登入MySQL
mysql -u root -p
-- 修改root使用者密碼(二選一)
set password for 'root'@'localhost'=password('Wsygzgr_2020');
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Wsygzgr_2020';

2.修改密碼策略和預設編碼

生產環境為了安全考慮,不要改密碼策略!!!

測試機環境為了方便記mysql密碼,可選擇下面的方案①:

vim /etc/my.cnf

在配置檔案中新增下面的內容:

#因為伺服器是測試環境,為了方便記mysql密碼,關閉了密碼策略。如果是生產環境,則不建議修改密碼策略
validate_password=off

character_set_server=utf8
init_connect='SET NAMES utf8'

重新啟動mysql服務使配置生效:

systemctl restart mysqld
#登陸mysql
mysql -u root -pWsygzgr_2020

修改root使用者密碼為123456

set password for 'root'@'localhost'=password('123456');

MySQL預設配置檔案路徑:

  • 配置檔案: /etc/my.cnf
  • 日誌檔案: /var/log//var/log/mysqld.log
  • 服務啟動指令碼: /usr/lib/systemd/system/mysqld.service
  • socket檔案: /var/run/mysqld/mysqld.pid

3.使用者遠端登入配置

mysql預設只允許root帳戶在本地登入,想要遠端連線mysql,必須開啟root使用者允許遠端連線,或者新增一個允許遠端連線的帳戶。

開啟root使用者遠端連線(任意IP都可以訪問)

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
FLUSH PRIVILEGES;

擴充套件:

  • 指定特定的IP,開啟root使用者遠端連線

    GRANT ALL PRIVILEGES ON . TO 'root'@'指定的IP' IDENTIFIED BY 'root使用者的密碼' WITH GRANT OPTION;
    FLUSH PRIVILEGES;
    
  • 一般為了安全起見,會建立專用的遠端訪問使用者

    GRANT ALL PRIVILEGES ON *.* TO 'dadeity'@'%' IDENTIFIED BY 'daDeity@163.com' WITH GRANT OPTION;
    FLUSH PRIVILEGES;
    

六.修改MySQL預設編碼

編輯 vim /etc/my.cnf 配置檔案,新增如下配置:

character_set_server=utf8
init_connect='SET NAMES utf8'

重啟MySQL服務

systemctl restart mysqld
# 登陸mysql
mysql -uroot -p123456

檢視MySQL預設編碼確認是否修改成功:

show variables like 'char%';

在這裡插入圖片描述

檢視排序規則

show variables like 'collation%';

在這裡插入圖片描述

七.忘記root使用者密碼解決方案

編輯 vim /etc/my.cnf 配置檔案,新增如下配置:

[mysqld]
skip-grant-tables

重啟mysql,並不使用密碼登入mysql

systemctl restart mysqld
mysql  -u root

修改root使用者的密碼

update mysql.user set authentication_string=password('123456') where user='root' and Host = 'localhost';
flush privileges

設定好密碼後再刪掉/etc/my.cnf中的skip-grant-tables配置項,並重啟mysql

八.建立新使用者

-- 建立新使用者
CREATE USER '新使用者名稱'@'%'IDENTIFIED BY '設定新使用者的密碼';
-- 把資料庫的訪問許可權給新使用者
GRANT ALL PRIVILEGES ON 資料庫名.* TO '使用者名稱'@'%' IDENTIFIED BY '密碼'; 
-- 給新使用者開啟所有遠端訪問許可權
GRANT ALL PRIVILEGES ON *.* TO '使用者名稱'@'%' IDENTIFIED BY '密碼' WITH GRANT OPTION;
-- 重新整理mysql的許可權列表            
FLUSH PRIVILEGES;  

九.開啟binlog日誌

binlog日誌簡單介紹:

  • 用來記錄mysql中的 增加 、 刪除 、 修改 操作
  • select操作 不會 儲存到binlog中
  • 必須要 開啟 mysql中的binlog功能,才會生成binlog日誌
  • binlog日誌就是一系列的二進位制檔案

編輯 vim /etc/my.cnf 配置檔案,新增如下配置:

log-bin=/var/lib/mysql/mysql-bin 
binlog-format=ROW 
server_id=1

# 配置說明
# 1、配置binlog日誌的存放路徑為/var/lib/mysql目錄,檔案以mysql-bin開頭
# 2、配置mysql中每一行記錄的變化都會詳細記錄下來
# 3、配置當前機器器的服務ID(如果是mysql叢集,不能重複)

配置說明:

  1. 配置binlog日誌的存放路徑為/var/lib/mysql目錄,檔案以mysql-bin開頭
  2. 配置mysql中每一行記錄的變化都會詳細記錄下來
  3. 配置當前機器器的服務ID(如果是mysql叢集,不能重複)

重啟mysql並登入

systemctl restart mysqld
mysql -u root -p123456

登入mysql執行以下SQL命令檢視配置是否生效

show variables like '%log_bin%';

mysql輸出以下內容,表示binlog已經成功開啟

+---------------------------------+--------------------------------+
| Variable_name                   | Value                          |
+---------------------------------+--------------------------------+
| log_bin                         | ON                             |
| log_bin_basename                | /var/lib/mysql/mysql-bin       |
| log_bin_index                   | /var/lib/mysql/mysql-bin.index |
| log_bin_trust_function_creators | OFF                            |
| log_bin_use_v1_row_events       | OFF                            |
| sql_log_bin                     | ON                             |
+---------------------------------+--------------------------------+
6 rows in set (0.00 sec)

檢視生產的binlog日誌,為二進位制格式

[root@core01 ~]# cd /var/lib/mysql
[root@core01 mysql]# ll -ah | grep mysql-bin.000001
-rw-r-----   1 mysql mysql  154 Jul 17 10:36 mysql-bin.000001

十.主從複製配置

安裝環境:

主(Master) centos7:192.168.52.100

從(Slave) centos7:192.168.52.110

1. Master的配置

vim /etc/my.cnf

配置的內容為:

#主節點開啟二進位制日誌功能
log-bin=mysql-bin
#標識唯一id(必須),一般使用ip最後位
server-id=100
#不需要同步的資料庫,可設定多個
binlog-ignore-db=information_schema
binlog-ignore-db=mysql
#指定需要同步的資料庫,可以設定多個
binlog-do-db=test
binlog-do-db=demo

修改完配置,重啟mysql

systemctl restart mysqld
#進入Mysql
mysql -u root -p123456

    賦予從庫許可權帳號,允許使用者在主庫上讀取日誌,賦予192.168.52.110也就是Slave機器有File許可權,只賦予Slave機器有File許可權還不行,還要給它REPLICATION SLAVE的許可權才可以。

GRANT FILE ON *.* TO 'root'@'192.168.52.110' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE ON *.* TO 'root'@'192.168.52.110' IDENTIFIED BY '123456';
FLUSH PRIVILEGES;

重啟Mysql後檢視主庫資訊

show master status;

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-s803tMbk-1605500249803)(…/…/AppData/Roaming/Typora/typora-user-images/image-20200403123526928.png)]

    這裡的 File 、Position 是在配置Salve的時候要使用到的,Binlog_Do_DB表示要同步的資料庫,Binlog_Ignore_DB 表示Ignore的資料庫,這些都是在配置的時候進行指定的。
    另外:如果執行這個步驟始終為Empty set(0.00 sec),那說明前面的my.cnf沒配置對。

2. Slave的配置

vim /etc/my.cnf

配置的內容為:

#主節點開啟二進位制日誌功能
log-bin=mysql-bin
#標識唯一id(必須),一般使用ip最後位
server-id=110

#指定不需要複製的資料庫(與主節點binlog-ignore-db要一一對應)
replicate-ignore-db=information_schema
replicate-ignore-db=mysql

#指定需要同步的資料庫(與主節點binlog-ignore-db要一一對應)
replicate-do-db=test
replicate-do-db=demo

#此選項告訴從屬伺服器將其SQL執行緒執行的更新記錄到其自己的二進位制日誌中。
log-slave-updates
#跳過所有錯誤
slave-skip-errors=all
slave-net-timeout=60

修改完配置,重啟mysql

systemctl restart mysqld
#進入Mysql
mysql -u root -p123456
STOP SLAVE;
CHANGE MASTER TO MASTER_HOST='192.168.52.100',MASTER_USER='root',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=154;
-- 開啟Slave
START SLAVE; 

    在這裡指定Master的資訊,master_log_file是在配置Master的時候的File選項, master_log_pos是在配置Master的Position 選項,這裡要進行對應。

檢視配置的資訊:

SHOW SLAVE STATUS \G;

當查詢結果中包含下面兩行結果,則表示配置成功了

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

對主庫做增刪改操作,驗證從庫資料同步情況。

相關文章