CentOS7.Xyum安裝MySQL

qq2233466866發表於2018-06-11

yum安裝mysql

  1. 安裝前的準備

    yum install 
    vim 
    wget 
    -y
  2. 獲取原始碼資源包

    wget http://repo.mysql.com/mysql57-community-release-el7-10.noarch.rpm
  3. 安裝原始碼資源包

    rpm -ivh mysql57-community-release-el7-10.noarch.rpm
  4. 通過資源包安裝mysql

    yum install mysql-server -y
  5. 修改my.conf

    vim /etc/my.cnf
    
    [client]
    default-character-set = utf8mb4
    
    [mysql]
    default-character-set = utf8mb4
    
    [mysqld]
    datadir=/data/mysql
    character-set-server=utf8mb4
    init_connect=`SET NAMES utf8mb4`
    collation-server=utf8mb4_unicode_ci
    character-set-client-handshake=FALSE
    
    symbolic-links=0
    log-error=/var/log/mysqld.log
    socket=/var/lib/mysql/mysql.sock
    pid-file=/var/run/mysqld/mysqld.pid
    secure_file_priv=/var/lib/mysql-files
    
    server-id=1
    binlog-format=Row
    log-bin=/data/mysql/mysql-bin
    sql-mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
    
    ESC
    :wq
  6. 建立資料檔案目錄、所屬組、使用者改為mysql

    mkdir /data
    mkdir /data/mysql
    chown -R mysql:mysql /etc/my.cnf
    chown -R mysql:mysql /data/mysql/
    chown -R mysql:mysql /var/*/mysql*
  7. 修改SELinux

    vim /etc/sysconfig/selinux
    
    SELINUX=permissive
    
    ESC
    :wq
    
    setenforce 0
  8. 啟動資料庫,生成socket檔案

    systemctl enable mysqld
    systemctl start mysqld
    # 因為配置檔案中指定了
    log-error=/var/log/mysqld.log
    # 所以初始密碼在如下檔案中
    /var/log/mysqld.log
    cat /var/log/mysqld.log|grep password
    # 結果顯示
    A temporary password is generated for root@localhost: **************
  9. 修改資料庫初始密碼

    mysql -u root -p
    # 輸入原始密碼
    **************
    # 設定允許使用弱密碼
    SET GLOBAL validate_password_policy=0;
    ALTER USER `root`@`localhost` IDENTIFIED BY `**************`;
    GRANT ALL PRIVILEGES ON *.* TO `mysql`@`%` IDENTIFIED BY `**************` WITH GRANT OPTION;
    FLUSH PRIVILEGES;
    QUIT;
  10. 初始化資料庫(除了密碼一律選擇Y)

    # 如果是資料庫【安裝】則只執行下面這步
    mysql_secure_installation
    
    # 如果是資料庫【升級】則只執行下面這步(**************表示資料庫之前的密碼)
    mysql_upgrade -u root -p
    **************
  11. 配置防火牆

    systemctl enable firewalld
    systemctl start  firewalld
    firewall-cmd --permanent --zone=public --add-port=3306/tcp
    firewall-cmd --reload
  12. 測試啟動、停止、重啟mysql

    #啟用並啟動
    systemctl enable mysqld
    systemctl start mysqld
    #禁用並關閉
    systemctl disable mysqld
    systemctl stop mysqld
    #啟用並重新啟動
    systemctl enable mysqld
    systemctl restart mysqld
  13. 設定外部訪問密碼

    # 資料庫名-萬用字元及格式:
        *[允許操作所有資料庫]
        %pay%[允許操作名字包含`pay`的資料庫]
        mydatabase[僅允許操作`mydatabase`資料庫]
    # 表名-萬用字元及格式:
        *[允許操作所有表]
        %pay%[允許操作名字包含`pay`的表]
        mytable[僅允許操作`mytable`表]
    # ip地址-萬用字元及格式:
        %/0.0.0.0[允許任意IP訪問]
        xxx.xxx.xxx.xxx[僅限公網訪問]
        192.168.x.xxx[僅限區域網訪問]
        localhost/127.0.0.1/::1[僅限本機訪問]
    
    # 資料庫授權格式
    GRANT 許可權名 ON 資料庫名.資料表名 TO `資料使用者`@`訪問IP` IDENTIFIED BY `使用者密碼` WITH GRANT OPTION;
    
    # 為任意資料庫表 任意操作 分配root使用者,僅限本地訪問
    GRANT ALL PRIVILEGES ON *.* TO `root`@`localhost` IDENTIFIED BY `**************` WITH GRANT OPTION;
    GRANT ALL PRIVILEGES ON *.* TO `root`@`127.0.0.1` IDENTIFIED BY `**************` WITH GRANT OPTION;
    GRANT ALL PRIVILEGES ON *.* TO `root`@`::1` IDENTIFIED BY `**************` WITH GRANT OPTION;
    
    # 為任意資料庫表 任意操作 分配mysql使用者,任意IP訪問(安裝除錯階段、本地開發使用,用後即刪)
    GRANT ALL PRIVILEGES ON *.* TO `mysql`@`%` IDENTIFIED BY `**************` WITH GRANT OPTION;
    
    # 為任意資料庫表 增刪改查 分配單獨使用者,為不同的業務分配專屬使用者
    GRANT INSERT ON *.* TO `insert1`@`127.0.0.1` IDENTIFIED BY `**************` WITH GRANT OPTION;
    GRANT DELETE ON *.* TO `delete1`@`127.0.0.1` IDENTIFIED BY `**************` WITH GRANT OPTION;
    GRANT UPDATE ON *.* TO `update1`@`127.0.0.1` IDENTIFIED BY `**************` WITH GRANT OPTION;
    GRANT SELECT ON *.* TO `select1`@`127.0.0.1` IDENTIFIED BY `**************` WITH GRANT OPTION;
    
    # 重新整理許可權
    FLUSH PRIVILEGES;
  14. 領支付寶紅包支援作者

    掃碼領支付寶紅包