mysql8.0安裝(linux下,二進位制安裝)
【0】環境
OS:Centos7.8
SF:Mysql8.0+最新版
【1】下載解壓
【1.1】下載
官網:https://dev.mysql.com/downloads/mysql/
linux:wgethttps://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.21-linux-glibc2.17-x86_64-minimal.tar.xz
我們這裡要一個最小安裝版就好了
那麼,我這裡實際下載演示的檔案的是8.0.20
【1.2】上傳|解壓|軟連結
(1)構造目錄上傳檔案
mkdir /soft #上傳,無論是rz,或者其他客戶端工具,或者用的linux下載直接copy/mv,把檔案放到/soft 目錄下
(2)解壓目錄
在8.0.16之後使用了xz壓縮方式,而不是傳統的gz壓縮方式,所以解壓程式碼略有不同
#以前的 .gz的壓縮表使用 -zxvf,現在 .xz的壓縮包使用 -Jxvf
tar -Jxvf mysql-8.0.20-linux-x86_64-minimal.tar.xz
(3)生成軟連結
為了方便後續引用這個目錄,給個軟連結,方便書寫該目錄
ln -s mysql-8.0.20-linux-x86_64-minimal mysql
最終效果
【2】環境準備(防火牆|SELINUX|環境變數)
【2.1】關閉SELINUX
SELINUX的三種模式:
enforcing :- SELinux security policy is enforced.(強制模式,違反SELinux 規則的行為會被阻止且記錄到日誌中)
permissive :-SELinux prints warnings instead of enforcing.(寬容模式,違反SELinux 規則的行為只會記錄到日誌中,不會被阻止)
disabled :- No SELinux policy is loaded.(關閉SELinux)
檢視SELinux狀態: 1、/usr/sbin/sestatus -v ##如果SELinux status引數為enabled即為開啟狀態 SELinux status: enabled2、getenforce ##檢查當前限制級別
設定完成後,應該如下:
這裡我們,臨時修改為寬容模式,再修改配置檔案永久關閉
#1、臨時關閉(不用重啟機器): setenforce 0 ##設定SELinux 成為permissive模式 ##setenforce 1 設定SELinux 成為enforcing模式 #2、修改配置檔案需要重啟機器: 修改/etc/selinux/config 檔案 將SELINUX=enforcing改為SELINUX=disabled
設定完成後,檔案應該修改如下:
【2.2】關閉防火牆
簡單搭建就不做防火牆控制了,後續有興趣大家可以自行百度如何新增mysql到防火牆白名單;
stop firewalld
status firewalld
最終效果如下:
【2.3】環境變數
我們因為軟體放到這個路徑的/soft/mysql,所以我們加到環境變數裡的路徑就是 /soft/mysql/bin
echo "export PATH=${PATH}:/soft/mysql/bin" echo "export PATH=${PATH}:/soft/mysql/bin">>/etc/profile source /etc/profile
設定完後,我們看看mysql命令是否可以直接使用了,如下圖,就OK了。
【3】安裝mysql
【3.1】構建賬戶與目錄
(1)構建賬戶
groupadd mysql
useradd mysql -g mysql -s /sbin/nologin
(2)構建目錄/設定許可權
mkdir -p /data/mysql/3306 mkdir -p /data/mysql/3306/data chmod 755 -R /data/mysql chown -R mysql:mysql /data/mysql umask 0022 /data/mysql
【3.2】mysql配置檔案
vim /etc/my.cnf
[client] port = 3306 socket = /data/mysql/3306/mysql.sock default-character-set=utf8mb4 [mysql] disable-auto-rehash #允許通過TAB鍵提示 default-character-set = utf8mb4 connect-timeout = 10 [mysqld] user=mysql server-id = 3306 port = 3306 socket = /data/mysql/3306/mysql.sock pid-file = /data/mysql/3306/mysql.pid basedir = /soft/mysql datadir = /data/mysql/3306/data #bind_address = 10.10.10.11 autocommit = 1 default_authentication_plugin=mysql_native_password character-set-server=utf8mb4 explicit_defaults_for_timestamp=true lower_case_table_names=1 back_log=103 max_connections=10000 max_connect_errors=100000 table_open_cache=512 external-locking=FALSE max_allowed_packet=32M sort_buffer_size=2M join_buffer_size=2M thread_cache_size=51 transaction_isolation=READ-COMMITTED tmp_table_size=96M max_heap_table_size=96M ###***logs long_query_time = 10 slow_query_log = 1 slow_query_log_file=/data/mysql/3306/slow.log #log-warnings = 1 log_error_verbosity=3 log-error = /data/mysql/3306/mysql.err log_output = FILE #引數log_output指定了慢查詢輸出的格式,預設為FILE,你可以將它設為TABLE,然後就可以查詢mysql架構下的slow_log表了 #log-queries-not-using-indexes #log-slow-slave-statements max_binlog_size = 1G #max_relay_log_size = 1G # replication log-bin=/data/mysql/3306/mysql-bin #server-id=1 #binlog_format= ROW #gtid_mode = on #enforce_gtid_consistency = 1 #log_slave_updates = 1 #master-info-repository=TABLE #relay-log-info-repository=TABLE # innodb storage engine parameters innodb_buffer_pool_size=500M innodb_data_file_path=ibdata1:100M:autoextend:max:5G #redo innodb_temp_data_file_path = ibtemp1:100M:autoextend:max:10G #innodb_file_io_threads=4 #預設的是4 innodb_log_buffer_size=16M innodb_log_file_size=256M #undo innodb_log_files_in_group=2 innodb_lock_wait_timeout=50 innodb_file_per_table=1 #獨立表空間
【3.3】mysql 初始化
注意,我這裡加了 insecure,不會設定初始mysql 密碼
mysqld --defaults-file=/etc/my.cnf --datadir=/data/mysql/3306/data --user=mysql --initialize-insecure --console
如果沒有報錯顯示在螢幕上,那多半沒有問題了,我們進目錄看看有沒有問題,資料是否生成,詳情如下:
再看看錯誤日誌檔案,mysql.err 中有沒有報錯
cat mysql.err|grep "\[error\]"
如下圖:沒有任何輸出就沒有問題了。
【3.4】啟動 mysql
mysqld_safe --defaults-file=/etc/my.cnf &
核驗 mysql 服務是否啟動:如下圖,就啟動成功了
【3.5】登入mysql,修改密碼
直接輸入 mysql 就可以進去,因為我們沒有配置密碼,用了 insecure 選項
修改密碼為123456
alter user root@localhost identified with mysql_native_password by '123456'; flush privileges;
然後我們重登驗證,直接mysql無法登入了,需要密碼了