linux 安裝mysql8.0 tar.xz
阿新 • • 發佈:2021-10-31
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