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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM