1. 程式人生 > 實用技巧 >Centos7 安裝mysql5.7

Centos7 安裝mysql5.7

Centos7 安裝mysql5.7

轉載自:https://www.cnblogs.com/zymnstlm

由於CentOS7的yum源中沒有mysql,需要到mysql的官網下載yum repo配置檔案。

下載

#wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm

yum源安裝

# rpm -ivh mysql57-community-release-el7-9.noarch.rpm

安裝mysql

# yum -y install mysql-server

啟動

# systemctl start mysqld

獲取臨時密碼

# grep 'temporary password' /var/log/mysqld.log

登入(需要用到之前獲取到的臨時密碼)

# mysql -u root -p

修改密碼,5.7有密碼強度要求(大小寫數字字母至少8位)

# ALTER USER 'root'@'localhost' IDENTIFIED BY '新的密碼';

修改密碼複雜度要求

# set global validate_password_policy=0;--表示將密碼安全等級設定為low
# set global validate_password_length=6;--表示將密碼長度設定為最小6位

開啟root使用者遠端連線許可權

# grant all privileges on . to root@'%' identified by "password";
# flush privileges;

防火牆開啟3306埠

# --permanent 永久生效,沒有此引數重啟後失效
# firewall-cmd --zone=public --add-port=3306/tcp --permanent 

# 重新載入
# firewall-cmd --reload

查詢配置

# 檢視mysql查詢配置檔案的順序  修改排在第一個的配置
# mysql --help|grep 'my.cnf'

修改配置

[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
#log-error = /var/log/mysql/error.log
# By default we only accept connections from localhost
#bind-address = 127.0.0.1
# Disabling symbolic-links is recommended to prevent assorted security risks
#支援符號連結,就是可以通過軟連線的方式,管理其他目錄的資料庫,最好不要開啟,當一個磁碟或分割槽空間不夠時,可以開啟該引數將資料儲存到其他的磁碟或分割槽。
#http://blog.csdn.net/moxiaomomo/article/details/17092871
symbolic-links=0

########basic settings########
server-id = 11 
port = 3306
user = mysql
#設定autocommit=0,則使用者將一直處於某個事務中,直到執行一條commit提交或rollback語句才會結束當前事務重新開始一個新的事務。set autocommit=0的好處是在頻繁開啟事務的場景下,減少一次begin的互動。
autocommit = 1
#utf8mb4編碼是utf8編碼的超集,相容utf8,並且能儲存4位元組的表情字元。 
#採用utf8mb4編碼的好處是:儲存與獲取資料的時候,不用再考慮表情字元的編碼與解碼問題。
character_set_server=utf8mb4
skip_name_resolve = 1
max_connections = 800
# 對於同一主機,如果有超出該引數值個數的中斷錯誤連線,則該主機將被禁止連線。如需對該主機進行解禁,執行:FLUSH HOST。
max_connect_errors = 1000
#資料庫隔離級別
transaction_isolation = READ-COMMITTED
#MySQL在完成某些join(連線)需求的時候,為了減少參與join的“被驅動表”的讀取次數以提高效能,需要使用到join buffer來協助完成join操作當join buffer 太小,MySQL不會將該buffer存入磁碟檔案而是先將join buffer中的結果與需求join的表進行操作,然後清空join buffer中的資料,繼續將剩餘的結果集寫入次buffer中
join_buffer_size = 128M
tmp_table_size = 64M
tmpdir = /tmp
#該值設定過小將導致單個記錄超過限制後寫入資料庫失敗,且後續記錄寫入也將失敗
max_allowed_packet = 64M
#mysql在關閉一個互動的連線之前所要等待的秒數
interactive_timeout = 1200
#mysql在關閉一個非互動的連線之前所要等待的秒數
wait_timeout = 600
#MySQL讀入緩衝區的大小
read_buffer_size = 16M
#MySQL的隨機讀緩衝區大小
read_rnd_buffer_size = 8M
#MySQL的順序讀緩衝區大小
sort_buffer_size = 8M
########log settings########
log_error = /var/log/docker_log/mysql/error.log
#開啟慢查詢日誌
slow_query_log = 1
#超出次設定值的SQL即被記錄到慢查詢日誌
long_query_time = 6
slow_query_log_file = /var/log/docker_log/mysql/slow.log
#表示記錄下沒有使用索引的查詢
log_queries_not_using_indexes = 1
#記錄管理語句
log_slow_admin_statements = 1
#開啟複製從庫複製的慢查詢的日誌
log_slow_slave_statements = 1
#設定每分鐘增長的沒有使用索引查詢的日誌數量
log_throttle_queries_not_using_indexes = 10
expire_logs_days = 90
min_examined_row_limit = 100
########replication settings########
#將master.info和relay.info儲存在表中
master_info_repository = TABLE
relay_log_info_repository = TABLE
log_bin = bin.log
#當每進行n次事務提交之後,MySQL將進行一次fsync之類的磁碟同步指令來將binlog_cache中的資料強制寫入磁碟。設定為零是讓系統自行決定
sync_binlog = 5
#開啟全域性事務ID,GTID能夠保證讓一個從伺服器到其他的從伺服器那裡實現資料複製而且能夠實現資料整合的
gtid_mode = on
#開啟gtid,必須主從全開
enforce_gtid_consistency = 1
#從伺服器的更新是否寫入二進位制日誌
log_slave_updates = 1
#三種模式 STATEMENT(有可能主從資料不一致,日質量小)、ROW(產生大量二進位制日誌)、MIXED
binlog_format = mixed
#relay-log日誌記錄的是從伺服器I/O執行緒將主伺服器的二進位制日誌讀取過來記錄到從伺服器本地檔案,然後SQL執行緒會讀取relay-log日誌的內容並應用到從伺服器
relay_log = /var/log/docker_log/mysql/relay.log
relay_log_recovery = 1
#開啟簡單gtid,開啟此項會提升mysql執行恢復的效能
binlog_gtid_simple_recovery = 1
slave_skip_errors = ddl_exist_errors
########innodb settings########
#這個引數在一開始初始化時就要加入my.cnf裡,如果已經建立了表,再修改,啟動MySQL會報錯。最好為8K
#innodb_page_size = 16K
innodb_page_size = 8K
#資料緩衝區buffer pool大小,建議使用實體記憶體的 75%
innodb_buffer_pool_size = 2G
#當buffer_pool的值較大的時候為1,較小的設定為8
innodb_buffer_pool_instances = 8
#執行時load緩衝池,快速預熱緩衝池,將buffer pool的內容(檔案頁的索引)dump到檔案中,然後快速load到buffer pool中。避免了資料庫的預熱過程,提高了應用訪問的效能
innodb_buffer_pool_load_at_startup = 1
#執行時dump緩衝池
innodb_buffer_pool_dump_at_shutdown = 1
#在innodb中處理使用者查詢後,其結果在記憶體空間的緩衝池已經發生變化,但是還未記錄到磁碟。這種頁面稱為髒頁,將髒頁記錄到磁碟的過程稱為刷髒
innodb_lru_scan_depth = 2000
innodb_io_capacity = 4000
innodb_io_capacity_max = 8000
#事務等待獲取資源等待的最長時間,超過這個時間還未分配到資源則會返回應用失敗,預設50s
innodb_lock_wait_timeout = 30
#日誌組所在的路徑,預設為data的home目錄;
innodb_log_group_home_dir = /data/mysql/
#innodb_undo_directory = /data/mysql/undolog/
#這個引數控制著innodb資料檔案及redo log的開啟、刷寫模式,http://blog.csdn.net/gua___gua/article/details/44916207
#innodb_flush_method = O_DIRECT-不經過系統快取直接存入磁碟,
innodb_file_format = Barracuda
innodb_file_format_max = Barracuda
innodb_strict_mode = 1
#innodb獨享表空間,有點很多,缺點會導致單個表文件過大
#innodb_file_per_table = 1
#undo日誌回滾段 預設為128
innodb_undo_logs = 128
#傳統機械硬碟建議使用,而對於固態硬碟可以關閉
#innodb_flush_neighbors = 1
innodb_log_file_size = 1G
innodb_log_buffer_size = 64M
#控制是否使用獨立purge執行緒
innodb_purge_threads = 1
#改為ON時,允許單列索引最大達到3072。否則最大為767
innodb_large_prefix = 1
innodb_thread_concurrency = 8
#開啟後會將所有的死鎖記錄到error_log中
innodb_print_all_deadlocks = 1
innodb_sort_buffer_size = 16M 
########semi sync replication settings########
#半同步複製
plugin_load = "rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"
loose_rpl_semi_sync_master_enabled = 1
loose_rpl_semi_sync_slave_enabled = 1
loose_rpl_semi_sync_master_timeout = 5000
#表示轉儲每個bp instance LRU上最熱的page的百分比。通過設定該引數可以減少轉儲的page數。
innodb_buffer_pool_dump_pct = 40
#刷髒的程序N-1
innodb_page_cleaners = 4
innodb_undo_log_truncate = 1
innodb_max_undo_log_size = 2G
#控制回收(收縮)undo log的頻率.undo log空間在它的回滾段沒有得到釋放之前不會收縮,
innodb_purge_rseg_truncate_frequency = 128
log_timestamps=system
#該引數基於MySQL5.7 Group Replication組複製的,沒有使用不要設定
#transaction_write_set_extraction=MURMUR32
#http://www.cnblogs.com/hzhida/archive/2012/08/08/2628826.html
show_compatibility_56=on

命令

systemctl start mysqld  # 啟動
systemctl stop mysqld  # 關閉
systemctl restart mysqld # 重啟

修改排在第一個的配置