mysql5.7.18版本Linux·環境下數據庫源碼安裝及配置

mysql數據庫安裝及配置

  1. 安裝前的準備

    yum install \
    vim \
    git \
    gcc \
    gcc-c++ \
    wget \
    make \
    cmake \
    automake \
    autoconf \
    libaio \
    libtool \
    net-tools \
    bison-devel \
    libaio-devel \
    ncurses-devel \
    perl-Data-Dumper \
    -y
  2. 下載boost_1_59_0

    cd /usr/local
    wget http://downloads.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz
  3. 下載mysql-5.7.18

    cd /root
    wget http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.18.tar.gz
    tar -zxvf mysql-5.7.18.tar.gz
    cd mysql-5.7.18
  4. 運行cmake

    cmake . \
    -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
    -DWITH_SYSTEMD=1 \
    -DDOWNLOAD_BOOST=1 \
    -DWITH_BOOST=/usr/local \
    -DDEFAULT_CHARSET=utf8mb4 \
    
    make
    make install
  5. 添加mysql用戶

    useradd -s /sbin/nologin -M mysql
  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*
    chown -R mysql:mysql /usr/local/mysql/
  7. 修改SELinux

    vim /etc/sysconfig/selinux
    
    SELINUX=permissive
    
    ESC
    :wq
    
    setenforce 0
  8. my.cnf詳細配置

    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
  9. 初始化數據庫配置

    # --initialize-insecure參數爲不安全的初始化方案,建議使用--initialize參數
    # 以下代碼執行完之後,會在/data/mysql/mysql-error.log保存初始密碼
    
    su mysql
    su mysql !!!
    su mysql !!!
    
    /usr/local/mysql/bin/mysqld \
    --initialize \
    --user=mysql \
    --datadir=/data/mysql \
    --basedir=/usr/local/mysql \
    
    # 查看初始密碼
    cat /var/lib/mysql/mysql.log|grep password
    
    # ssh連接mysql,如果對ssh不瞭解,不要這樣做
    /usr/local/mysql/bin/mysql_ssl_rsa_setup \
    --initialize \
    --user=mysql \
    
    vim /etc/my.cnf
    
    [client]
    port = 3306
    socket = /tmp/mysql.sock
    
    [mysqld]
    port = 3306
    slow_query_log = 1
    long_query_time = 1
    socket = /tmp/mysql.sock
    basedir = /usr/local/mysql
    datadir = /data/mysql
    pid-file = /data/mysql/mysql.pid
    log_error = /data/mysql/mysql-error.log
    slow_query_log_file = /data/mysql/mysql-slow.log
    default_storage_engine = InnoDB
    
    [mysqld_safe]
    log-error=/data/mysql/mysql.log
    pid-file=/data/mysql/mysqld.pid
    
    ESC
    :wq
  10. 添加mysqld.service

    exit
    cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
  11. mysqld.service詳細配置

    vim /usr/lib/systemd/system/mysqld.service
    
    # 將下面的配置覆蓋整個文件內容
    [Unit]
    Description=開機啓動MySQL.
    After=default.target network.target syslog.target
    
    [Service]
    User=mysql
    Group=mysql
    Type=forking
    PIDFile=/data/mysql/mysqld.pid
    TimeoutSec=0
    PermissionsStartOnly=true
    ExecStartPre=/usr/local/mysql/bin/mysqld_pre_systemd
    ExecStart=/usr/local/mysql/bin/mysqld --daemonize --pid-file=/data/mysql/mysql.pid $MYSQLD_OPTS
    EnvironmentFile=-/etc/sysconfig/mysql
    LimitNOFILE = 5000
    Restart=on-failure
    RestartPreventExitStatus=1
    PrivateTmp=false
    
    [Install]
    WantedBy=multi-user.target
    
    ESC
    :wq
  12. 啓用mysqld.service

    systemctl enable mysqld
    systemctl start  mysqld
    systemctl daemon-reload
  13. 測試配置是否正確,沒有任何輸出則表示一切正常

    /usr/local/mysql/bin/mysqld_pre_systemd
  14. 數據文件所屬用戶修改爲mysql(如果‘初始化數據庫配置’時完全按文檔進行,可不執行本步驟,不確定則執行)

    chown -R mysql:mysql /data/mysql/
  15. 啓動mysql

    systemctl enable mysqld
    systemctl start  mysqld
  16. 添加mysql到mysql用戶環境變量

    su mysql
    vim /home/mysql/.bash_profile
    
    PATH=$PATH:$HOME/.local/bin:$HOME/bin:/usr/local/mysql/bin
    
    ESC
    :wq
    
    source /home/mysql/.bash_profile
  17. 嘗試連接mysql

    # mysql默認用戶爲root
    mysql -u root -p
    password:**************
    #修改root[DB用戶]初始密碼
    SET PASSWORD=PASSWORD('**************');
    show databases;
    use mysql;
    show tables;
    select * from user \G;
  18. 測試啓動、停止、重啓mysql

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

    # 數據庫名-通配符及格式:
        *[允許操作所有數據庫]
        %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;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章