MySQL 管理

宋黨委發表於2020-12-02

0 安裝MySQL

redhat8.x配置dnf(yum)源(配置DNF)

DNF是linux系統的另一個軟體安裝解決方案,相對於yum,對於依賴有更好,更高效的解決方案。對於開發者來說,也更加友好,而且對於Python也有更好的支援;redhat8已經預設有DNF,只需要修改源就可以直接使用
1、Yum沒有API文件。這意味著開發者需要做更多的工作。Yum開發者寫一個呼叫函式都需要檢視Yum的程式碼庫,使開發變得緩慢。
2、Python3。Fedora將會過渡到Python3,但Yum卻沒有這個能力,而DNF既可以使用Python2,也可以在Python3環境下執行。
3、依賴解決能力長期是Fedora軟體包管理的阿喀硫斯之踵。DNF使用基於SAT的依賴問題解決方法,與SUSE和OpenSUSE的Zypper類似。

#下載原始檔
sudo wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo
#配置DNF,耗時比較久.一般非必須
sudo dnf update  
配置好源後,記得檢視一下.

MYSQL三種安裝方式–rpm包安裝

  1. rpm安裝MySQL
##  檢視有沒有安裝MySQL
rpm -qa | grep -i mysql 
find / -name mysql
## 刪除存在的MySQL檔案
rm -rf 查出的檔案1 檔案2 
  1. 去官網下載相應的rpm包:https://dev.mysql.com/downloads/mysql/
  2. 上傳到/usr/local/src資料夾,進行安裝mysql
    按照以下順序進行安裝,因為它們之間存在依賴關係
    common --> libs --> clients --> server

遇到了需要安裝下面2個依賴的問題
dnf install ncurses-compat-libs
dnf install perl-Getopt-Long

mysql的安裝過程(rpm包安裝)

  1. 設定密碼
    檢視初始密碼 grep -i password /var/log/mysqld.log
    修改密碼 sudo mysql_secure_installation
  2. 錯過第4步,可以
    flush privileges; //重新整理系統許可權表
    ALTER user ‘root’@‘localhost’ IDENTIFIED BY ‘你的密碼’;
    出錯時嘗試Linux 通過RPM包安裝 MySQL 8.0第2條
  3. mysql 解決密碼強度的問題 Your password does not satisfy the current policy requirements
    set global validate_password_policy=LOW;
  4. 跳過授權
    vi /etc/my.cnf
    在[mysqld]下面新增跳過授權命令

skip-grant-tables
重啟服務
service mysqld restart

1. 主從複製

MySQL主從複製實現,主從、主主、主從從
MySQL主從複製原理、半同步操作步驟及原理

  1. 修改主伺服器master:
    #vi /etc/my.cnf
      [mysqld]
       # 日誌檔案格式
        binlog-format=ROW 
        # [必須]啟用二進位制日誌. 名字為mysql-bin 
        log-bin=mysql-bin  
         #[必須]伺服器唯一ID,預設是1,一般取IP最後一段
        server-id=222     
        # 要實現主從複製的資料庫,這裡是ddm
        binlog-do_db=ddm
        ```
        
    

在主伺服器上建立帳戶並授權slave:

mysql> GRANT REPLICATION SLAVE ON . to ‘root’@’%’ identified by ‘mysql3306’; //一般不用root帳號,“%”表示所有客戶端都可能連,只要帳號,密碼正確,此處可用具體客戶端IP代替,如192.168.145.226,加強安全。192.168.145.% 授權給145段內所有使用者
2. 修改從伺服器slave:

  #vi /etc/my.cnf
     [mysqld]
     #不是必須]啟用二進位制日誌
     log-bin=mysql-bin   
     # 日誌檔案格式
  binlog-format=ROW 
   #[必須]伺服器唯一ID,預設是1,一般取IP最後一段
     server-id=226     
      # 雙主互相備份(表示從伺服器可能是另外一臺伺服器的主伺服器). 只作為從機可以不寫
     log-slave-updates=true
  1. 重啟兩臺伺服器的mysql
    service mysqld restart

    systemctrl mysqld restart

    /etc/init.d/mysql restart
  2. 登入主伺服器的mysql,查詢master的狀態

mysql> show master status;
±-----------------±---------±-------------±-----------------±------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
±-----------------±---------±-------------±-----------------±------------------+
| mysql-bin.000001 | 154 | ddm | | |
±-----------------±---------±-------------±-----------------±------------------+
1 row in set (0.00 sec)
注:執行完此步驟後不要再操作主伺服器MYSQL,防止主伺服器狀態值變化

File: 日誌檔名
Position: 檔名所處的位置(偏移量)
Binlog_Do_DB: 要實現主從複製的資料庫

  1. 配置從伺服器Slave:

mysql>change master to master_host=‘192.168.15.1’,master_port=3306,master_user=‘root’,master_password=‘mysql3306’,master_log_file=‘mysql-bin.000001’,master_log_pos=154; //注意不要斷開,308數字前後無單引號。
Mysql>start slave; //啟動從伺服器複製功能

  1. Navicat 連線不上問題
    1. 防火牆問題 2. 埠未開放 3. 未授權
    firewall-cmd --zone=public --add-port=3306/tcp --permanent
    2.重新載入防火牆
    firewall-cmd --reload
    2. 授權給客戶端
    # with grant option 不僅僅授予修改的許可權,還授予許可權的許可權
    grant all privileges on *.* to root@'%' identified by 'mysql3306' with grant option;
    

相關文章