1. 程式人生 > >linux(centos)下安裝mysql5.7(mysql8.0類似)

linux(centos)下安裝mysql5.7(mysql8.0類似)

本人使用的是centos64位系統。mysql安裝步驟如下

1、下載mysql安裝包---二進位制壓縮包:

下載免費社群版本:

2、檢視系統是否自帶mysql,若有則將其解除安裝:

3、解壓壓縮包:

將壓縮包放在你需要安裝的路徑下:a:新建路徑指令--- mkdir /path。b:進入該路徑下---- cd /path。

將壓縮包解壓:指令--- tar -zxvf /path

4、新增使用者組和使用者mysql:

檢視是否已存在使用者組及使用者:指令----cat /etc/group | grep mysql ; cat /etc/passwd | grep mysql

若無顯示則代表之前未建立使用者組及使用者,否則已經建立了。

建立使用者組及使用者:

5、建立存放資料資料夾,並相應賦予讀寫許可權以及使用者組和使用者許可權,並將安裝目錄做一個連線:

a、mkdir -p /home/dataSet/mysqldata/data 

b、mkdir -p /home/dataSet/mysqldata/log

c、mkdir -p /home/dataSet/mysqldata/tmp

d、chown -R mysql:mysql /opt/dataSet/mysqldata/

e、chmod -R 750 /home/dataSet/mysqldata/

f、ln -s /home/app/mysql mysql 

    #將安裝目錄做一個連線

6、建立配置檔案my.cnf,並儲存:

檔案內容如下,將相應內容,改成自己的路徑:

[client]                                        # 客戶端設定,即客戶端預設的連線引數
port = 3306                                    # 預設連線埠
socket = /home/mysql/3306/tmp/mysql.sock                        # 用於本地連線的socket套接字,mysqld守護程序生成了這個檔案

[mysqld]                                        # 服務端基本設定
# 基礎設定
server-id = 1                                  # Mysql服務的唯一編號 每個mysql服務Id需唯一
port = 3306                                    # MySQL監聽埠
basedir = /usr/local/mysql                      # MySQL安裝根目錄
datadir = /home/mysql/3306/data                      # MySQL資料檔案所在位置
tmpdir  = /home/mysql/3306/tmp                                  # 臨時目錄,比如load data infile會用到
socket = /home/mysql/3306/tmp/mysql.sock        # 為MySQL客戶端程式和伺服器之間的本地通訊指定一個套接字檔案
pid-file = /home/mysql/3306/log/mysql.pid      # pid檔案所在目錄
skip_name_resolve = 1                          # 只能用IP地址檢查客戶端的登入,不用主機名
character-set-server = utf8mb4                  # 資料庫預設字符集,主流字符集支援一些特殊表情符號(特殊表情符佔用4個位元組)
transaction_isolation = READ-COMMITTED          # 事務隔離級別,預設為可重複讀,MySQL預設可重複讀級別
collation-server = utf8mb4_general_ci          # 資料庫字符集對應一些排序等規則,注意要和character-set-server對應
init_connect='SET NAMES utf8mb4'                # 設定client連線mysql時的字符集,防止亂碼
lower_case_table_names = 1                      # 是否對sql語句大小寫敏感,1表示不敏感
max_connections = 400                          # 最大連線數
max_connect_errors = 1000                      # 最大錯誤連線數
explicit_defaults_for_timestamp = true          # TIMESTAMP如果沒有顯示宣告NOT NULL,允許NULL值
max_allowed_packet = 128M                      # SQL資料包傳送的大小,如果有BLOB物件建議修改成1G
interactive_timeout = 1800                      # MySQL連線閒置超過一定時間後(單位:秒)將會被強行關閉
wait_timeout = 1800                            # MySQL預設的wait_timeout值為8個小時, interactive_timeout引數需要同時配置才能生效
tmp_table_size = 16M                            # 內部記憶體臨時表的最大值 ,設定成128M;比如大資料量的group by ,order by時可能用到臨時表;超過了這個值將寫入磁碟,系統IO壓力增大
max_heap_table_size = 128M                      # 定義了使用者可以建立的記憶體表(memory table)的大小
query_cache_size = 0                            # 禁用mysql的快取查詢結果集功能;後期根據業務情況測試決定是否開啟;大部分情況下關閉下面兩項
query_cache_type = 0

# 使用者程序分配到的記憶體設定,每個session將會分配引數設定的記憶體大小
read_buffer_size = 2M                          # MySQL讀入緩衝區大小。對錶進行順序掃描的請求將分配一個讀入緩衝區,MySQL會為它分配一段記憶體緩衝區。
read_rnd_buffer_size = 8M                      # MySQL的隨機讀緩衝區大小
sort_buffer_size = 8M                          # MySQL執行排序使用的緩衝大小
binlog_cache_size = 1M                          # 一個事務,在沒有提交的時候,產生的日誌,記錄到Cache中;等到事務提交需要提交的時候,則把日誌持久化到磁碟。預設binlog_cache_size大小32K

back_log = 130                                  # 在MySQL暫時停止響應新請求之前的短時間內多少個請求可以被存在堆疊中;官方建議back_log = 50 + (max_connections / 5),封頂數為900

# 日誌設定
log_error = /home/mysql/3306/log/error.log                          # 資料庫錯誤日誌檔案
slow_query_log = 1                              # 慢查詢sql日誌設定
long_query_time = 1                            # 慢查詢時間;超過1秒則為慢查詢
slow_query_log_file = /home/mysql/3306/log/slow.log                  # 慢查詢日誌檔案
log_queries_not_using_indexes = 1              # 檢查未使用到索引的sql
log_throttle_queries_not_using_indexes = 5      # 用來表示每分鐘允許記錄到slow log的且未使用索引的SQL語句次數。該值預設為0,表示沒有限制
min_examined_row_limit = 100                    # 檢索的行數必須達到此值才可被記為慢查詢,查詢檢查返回少於該引數指定行的SQL不被記錄到慢查詢日誌
expire_logs_days = 5                            # MySQL binlog日誌檔案儲存的過期時間,過期後自動刪除

# 主從複製設定
log-bin = mysql-bin                            # 開啟mysql binlog功能
binlog_format = ROW                            # binlog記錄內容的方式,記錄被操作的每一行
binlog_row_image = minimal                      # 對於binlog_format = ROW模式時,減少記錄日誌的內容,只記錄受影響的列

# Innodb設定
innodb_open_files = 500                        # 限制Innodb能開啟的表的資料,如果庫裡的表特別多的情況,請增加這個。這個值預設是300
innodb_buffer_pool_size = 64M                  # InnoDB使用一個緩衝池來儲存索引和原始資料,一般設定物理儲存的60% ~ 70%;這裡你設定越大,你在存取表裡面數據時所需要的磁碟I/O越少
innodb_log_buffer_size = 2M                    # 此引數確定寫日誌檔案所用的記憶體大小,以M為單位。緩衝區更大能提高效能,但意外的故障將會丟失資料。MySQL開發人員建議設定為1-8M之間
innodb_flush_method = O_DIRECT                  # O_DIRECT減少作業系統級別VFS的快取和Innodb本身的buffer快取之間的衝突
innodb_write_io_threads = 4                    # CPU多核處理能力設定,根據讀,寫比例進行調整
innodb_read_io_threads = 4
innodb_lock_wait_timeout = 120                  # InnoDB事務在被回滾之前可以等待一個鎖定的超時秒數。InnoDB在它自己的鎖定表中自動檢測事務死鎖並且回滾事務。InnoDB用LOCK TABLES語句注意到鎖定設定。預設值是50秒
innodb_log_file_size = 32M                      # 此引數確定資料日誌檔案的大小,更大的設定可以提高效能,但也會增加恢復故障資料庫所需的時間

7、資料庫初始化,啟動mysql:

a、初始化資料庫:

/home/app/mysql/bin/mysqld --user=mysql --basedir=/home/app/mysql --tmpdir=/home/dataSet/mysqldata/tmp --datadir=/home/dataSet/mysqldata/data --initialize-insecure

b、免密登入:

cat /home/dataSet/mysqldata/log/error.log | grep -i password

c、設定啟動檔案和環境變數:

cp /home/app/mysql/support-files/mysql.server  /etc/init.d/mysql

d、啟動資料庫:

/etc/init.d/mysql start

8、配置環境變數,並生效:

mysql.sh檔案內容為:export PATH=$PATH:/home/app/mysql/bin    #路徑為mysql安裝路徑

9、檢視是否安裝成功:

10、使用mysql

a、啟動MySQL:service mysql start

b、關閉MySQL:service mysql stop

c、檢視MySQL狀態:service mysql status

d、進入MySQL:mysql -u 使用者名稱 -p密碼

由於之前設定了免密登入,直接為空,按enter鍵進入。若出現如下問題,原因:centos預設連線 /tmp/mysql.sock而不是之前my.cnf檔案設定的路徑;解決方法如下: