1. 程式人生 > 其它 >linux 安裝mysql8.0 tar.xz

linux 安裝mysql8.0 tar.xz

1、下載相應的MySQL版本

2、解壓到home目錄下

3、修改my.cnf

[client]
port = 3306 
# MySQL客戶端預設埠號

socket = /home/mysql/mysql-8.0.20/socket/mysql.sock
# 用於本地連線的Unix套接字檔案存放路徑

default-character-set = utf8mb4
# MySQL客戶端預設字符集

[mysql]
auto-rehash
# 開啟tab補齊功能

# 用於本地連線的Unix套接字檔案存放路徑

default-character-set = utf8mb4
# MySQL客戶端預設字符集

max_allowed_packet = 256M
# 指定在網路傳輸中一次訊息傳輸量的最大值。系統預設值 為1MB,最大值是1GB,必須設定1024的倍數。

log_error = /home/mysql/mysql-8.0.20/logs/error_log/error.log
[mysqld]
port = 3306
# MySQL服務端預設監聽的TCP/IP埠

socket = /home/mysql/mysql-8.0.20/socket/mysql.sock
# 用於本地連線的Unix套接字檔案存放路徑

pid_file = /home/mysql/mysql-8.0.20/tmp/mysql.pid
# 程序ID檔案存放路徑

basedir = /home/mysql/mysql-8.0.20
# MySQL軟體安裝路徑

datadir = /home/mysql/mysql-8.0.20/data
# MySQL資料檔案存放路徑

tmpdir = /home/mysql/mysql-8.0.20/tmp
# MySQL臨時檔案存放路徑

character_set_server = utf8mb4
# MySQL服務端字符集

collation_server = utf8mb4_general_ci
# MySQL服務端校對規則

default-storage-engine = InnoDB
# 設定預設儲存引擎為InnoDB

autocommit = OFF
# 預設為ON,設定為OFF,關閉事務自動提交

transaction_isolation = READ-COMMITTED

event_scheduler = ON 
# 開啟事件排程器event_scheduler

lower_case_table_names = 1
# 庫名、表名是否區分大小寫。預設為0,設定1,不區分大小寫,建立的表、資料庫都以小寫形式存放磁碟。

########################################
#                                      #
#       Network & Connection           #
#                                      #
########################################
max_connections = 1000
# MySQL允許的最大併發連線數,預設值151,如果經常出現Too Many Connections的錯誤提示,則需要增大此值。

max_user_connections = 1000
# 每個資料庫使用者的最大連線,(同一個賬號能夠同時連線到mysql服務的最大連線數),預設為0,表示不限制。

back_log = 500
# MySQL監聽TCP埠時設定的積壓請求棧大小,預設50+(max_connections/5),最大不超過900

max_connect_errors = 10000
# 每個主機的連線請求異常中斷的最大次數。對於同一主機,如果有超出該引數值個數的中斷錯誤連線,則該主機將被禁止連線。如需對該主機進行解禁,執行:FLUSH HOST。

interactive_timeout = 28800
# 伺服器關閉互動式連線前等待活動的秒數。互動式客戶端定義為在mysql_real_connect()中使用CLIENT_INTERACTIVE選項的客戶端。預設值:28800秒(8小時)

wait_timeout = 28800
# 伺服器關閉非互動連線之前等待活動的秒數。預設值:28800秒(8小時)
# 指定一個請求的最大連線時間,當MySQL連線閒置超過一定時間後將會被強行關閉。對於4GB左右記憶體的伺服器來說,可以將其設定為5~10。
# 如果經常出現Too Many Connections的錯誤提示,或者show processlist命令發現有大量sleep程序,則需要同時減小interactive_timeout和wait_timeout值。

connect_timeout = 28800
# 在獲取連線時,等待握手的超時秒數,只在登入時生效。主要是為了防止網路不佳時應用重連導致連線數漲太快,一般預設即可。

open_files_limit = 5000
# mysqld能開啟檔案的最大個數,預設最小1024,如果出現too mant open files之類的就需要增大該值。

max_allowed_packet = 256M
# 指定在網路傳輸中一次訊息傳輸量的最大值。系統預設值 為1MB,最大值是1GB,必須設定1024的倍數。

########################################
#                                      #
#          Thread & Buffer             #
#                                      #
########################################
sort_buffer_size = 2M
# 排序緩衝區大小,connection級引數,預設大小為2MB。如果想要增加ORDER BY的速度,首先看是否可以讓MySQL使用索引,其次可以嘗試增大該值。

read_buffer_size = 160M
# 順序讀緩衝區大小,connection級引數,該引數對應的分配記憶體是每連線獨享。對錶進行順序掃描的請求將分配一個讀入緩衝區。

read_rnd_buffer_size = 160M
# 隨機讀緩衝區大小,connection級引數,該引數對應的分配記憶體是每連線獨享。預設值256KB,最大值4GB。當按任意順序讀取行時,將分配一個隨機讀快取區。

join_buffer_size = 320M
# 聯合查詢緩衝區大小,connection級引數,該引數對應的分配記憶體是每連線獨享。

bulk_insert_buffer_size = 64M   
# 批量插入資料快取大小,可以有效提高插入效率,預設為8M

thread_cache_size = 8
# 伺服器執行緒緩衝池中存放的最大連線執行緒數。預設值是8,斷開連線時如果快取中還有空間,客戶端的執行緒將被放到快取中,當執行緒重新被請求,將先從快取中讀取。
# 根據實體記憶體設定規則如下:1G  —> 8,2G  —> 16,3G  —> 32,大於3G  —> 64

thread_stack = 256K
# 每個連線被建立時,mysql分配給它的記憶體。預設192KB,已滿足大部分場景,除非必要否則不要動它,可設定範圍128KB~4GB。

# query_cache_type = 0
# 關閉查詢快取

# query_cache_size = 0
# 查詢快取大小,在高併發,寫入量大的系統,建議把該功能禁掉。

# query_cache_limit = 4M    
# 指定單個查詢能夠使用的緩衝區大小,預設為1M

tmp_table_size = 1024M
# MySQL的heap(堆積)表緩衝大小,也即記憶體臨時表,預設大小是 32M。如果超過該值,則會將臨時表寫入磁碟。在頻繁做很多高階 GROUP BY 查詢的DW環境,增大該值。
# 實際起限制作用的是tmp_table_size和max_heap_table_size的最小值。

max_heap_table_size = 1024M
# 使用者可以建立的記憶體表(memory table)的大小,這個值用來計算記憶體表的最大行數值。

table_definition_cache = 400
# 表定義快取區,快取frm檔案。表定義(global)是全域性的,可以被所有連線有效的共享。

table_open_cache = 1000
# 所有SQL執行緒可以開啟表快取的數量,快取ibd/MYI/MYD檔案。 開啟的表(session級別)是每個執行緒,每個表使用。

table_open_cache_instances = 4
# 對table cache 能拆成的分割槽數,用於減少鎖競爭,最大值64.


skip-external-locking
#skip-locking 
# 避免MySQL的外部鎖定,減少出錯機率,增強穩定性。

skip-name-resolve 
# 禁止MySQL對外部連線進行DNS解析,消除MySQL進行DNS解析。如果開啟該選項,所有遠端主機連線授權都要使用IP地址方式,否則MySQL將無法正常處理連線請求!

#skip-networking 
# 不允許CP/IP連線,只能通過命名管道(Named Pipes)、共享記憶體(Shared Memory)或Unix套接字(Socket)檔案連線。
# 如果Web伺服器以遠端連線方式訪問MySQL資料庫伺服器,則不要開啟該選項,否則無法正常連線!
# 適合應用和資料庫共用一臺伺服器的情況,其他客戶端無法通過網路遠端訪問資料庫

########################################
#                                      #
#                 Logs                 #
#                                      #
########################################

###################     Slow Log   ######################
slow_query_log = ON
# 開啟慢查詢日誌

slow_query_log_file = /home/mysql/mysql-8.0.20/logs/slow_log/slow.log
# 慢查詢日誌存放路徑

long_query_time = 10
# 超過10秒的查詢,記錄到慢查詢日誌,預設值10

log_queries_not_using_indexes = ON
# 沒有使用索引的查詢,記錄到慢查詢日誌,可能引起慢查詢日誌快速增長

log_slow_admin_statements = ON
# 執行緩慢的管理語句,記錄到慢查詢日誌
# 例如 ALTER TABLE, ANALYZE TABLE, CHECK TABLE, CREATE INDEX, DROP INDEX, OPTIMIZE TABLE, and REPAIR TABLE.

###################     Error Log   ####################
log_error = /home/mysql/mysql-8.0.20/logs/error_log/error.log
# 錯誤日誌存放路徑

log_error_verbosity = 2
# 全域性動態變數,預設3,範圍:1~3
# 表示錯誤日誌記錄的資訊,1:只記錄error資訊;2:記錄error和warnings資訊;3:記錄error、warnings和普通的notes資訊

########################################
#                                      #
#           Replication                #
#                                      #
########################################

###################     Bin Log    ######################
server_id = 6
# 資料庫伺服器ID

log_bin = /home/mysql/mysql-8.0.20/logs/bin_log/binlog
# 二進位制日誌存放路徑

log_bin_index = /home/mysql/mysql-8.0.20/logs/bin_log/binlog.index
# 同binlog,定義binlog的位置和名稱

binlog_format = row
# binlog格式,複製有3種模式STATEMENT,ROW,MIXED

# expire_logs_days = 10
# 只保留最近10天的binlog日誌

max_binlog_size = 50M
# 每個binlog日誌檔案的最大容量

binlog_cache_size = 2M
# 每個session分配的binlog快取大小
# 事務提交前產生的日誌,記錄到Cache中;事務提交後,則把日誌持久化到磁碟

log_slave_updates = ON
# 開啟log_slave_updates,從庫的更新操作記錄進binlog日誌

sync_binlog = 1
# sync_binlog=0(預設),事務提交後MySQL不重新整理binlog_cache到磁碟,而讓Filesystem自行決定,或者cache滿了才同步。
# sync_binlog=n,每進行n次事務提交之後,MySQL將binlog_cache中的資料強制寫入磁碟。

binlog_rows_query_log_events = ON
# 將row模式下的sql語句,記錄到binlog日誌,預設是0(off)

[mysqldump]                        
max_allowed_packet = 256M
quick
# mysqldump匯出大表時很有用,強制從伺服器查詢取得記錄直接輸出,而不是取得所有記錄後將它們快取到記憶體中。

[mysqlhotcopy]
interactive-timeout

[mysqld_safe]
#ledir = /app/mysql/bin
# 包含mysqld程式的軟體安裝路徑,用該選項來顯式表示伺服器位置。
log_error = /home/mysql/mysql-8.0.20/logs/error_log/error.log

4、執行初始化命令

sudo /home/mysql/mysql-8.0.20/bin/mysqld --defaults-file=/home/mysql/mysql-8.0.20/conf/my.cnf --initialize --user=mysql --basedir=/home/mysql/mysql-8.0.20 --datadir=/home/mysql/mysql-8.0.20/data --log-error=/home/mysql/mysql-8.0.20/logs/error_log/error.log

注意:執行完後需要檢視log中隨機生成的密碼

5、修改support-files下的mysql.server檔案

  basedir=MySQL的home路徑

datadir=MySQL的home路徑/data

6、sudo mysql.server start

7、使用隨機生成的密碼登入

8、修改密碼

alter user 'root'@'localhost' identified by '123456';

9、在/usr/lib/systemd/system新增mysql.service,內容如下

[Unit]
Description=Mysql
Documentation=man:mysqld
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=syslog.target network.target remote-fs.target nss-lookup.target
 
[Service]
User=mysql # 此使用者必須存在,即為啟動mysql的使用者
Group=mysql
Type=forking
ExecStart=/home/mysql/mysql-8.0.20/bin/mysqld 
--defaults-file=/home/mysql/mysql-8.0.20/conf/my.cnf
--basedir=/home/mysql/mysql-8.0.20
--datadir=/home/mysql/mysql-8.0.20/data
--plugin-dir=/home/mysql/mysql-8.0.20/lib/plugin
--user=mysql
--log-error=/home/mysql/mysql-8.0.20/log/mysql.err
--open-files-limit=65000
--pid-file=/home/mysql/mysql-8.0.20/tmp/mysql.pid
--socket=/home/mysql/mysql-8.0.20/socket/mysql.sock
--port=3306 #根據自己配置,編寫啟動命令 ExecStop=/home/mysql/mysql-8.0.20/bin/mysqladmin shutdown -p123456 PrivateTmp=false [Install] WantedBy=multi-user.target

或者

[Unit]
Description=Mysql
Documentation=man:mysqld
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=syslog.target network.target remote-fs.target nss-lookup.target
 
[Service]
User=mysql # 此使用者必須存在,即為啟動mysql的使用者
Group=mysql
Type=forking
PIDFile=/home/mysql/mysql-8.0.20/tmp/mysql.pid
ExecStart=/home/mysql/mysql-8.0.20/support-files/mysql.server start
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=false
 
[Install]
WantedBy=multi-user.target

10、儲存退出後,過載systemctl;systemctl daemon-reload

11、systemctl enable mysql 設定開機自啟動

systemctl start mysql

systemctl stop mysql

systemctl status mysql

systemctl restart mysql