CentOS 7離線安裝MySQL 5.7

来源:https://www.cnblogs.com/vipygd/archive/2018/03/09/8535691.html
-Advertisement-
Play Games

系列文章首發平臺為[果凍想個人博客][2]。果凍想,是一個原創技術文章分享網站。在這裡果凍會分享他的技術心得,技術得失,技術人生。我在[果凍想][2]等待你,也希望你能和我分享你的技術得與失,期待。 前言 網上已經有那麼多的關於CentOS 7如何安裝MySQL的文章了, 那為什麼我還要寫這沒一篇關 ...


系列文章首發平臺為果凍想個人博客。果凍想,是一個原創技術文章分享網站。在這裡果凍會分享他的技術心得,技術得失,技術人生。我在果凍想等待你,也希望你能和我分享你的技術得與失,期待。

果凍想-一個原創技術文章分享網站

前言

網上已經有那麼多的關於CentOS 7如何安裝MySQL的文章了, 那為什麼我還要寫這沒一篇關於CentOS 7安裝MySQL的文章呢?主要有以下幾個原因:

  • 網上很多都是線上安裝;由於很多時候,在生產環境進行部署時,生產機器都是不可能直接連公網的,導致網上很多的文章沒有借鑒意義;
  • 網上很多文章都比較舊,安裝的MySQL版本也比較舊,沒有進行更新,導致很多步驟在新的MySQL版本安裝上不適用;
  • 網上很多文章本身就是錯的,很容易誤導讀者;我曾經就被誤導過;

為了總結一篇實用的,不誤導大家的文章,也讓搜索到我這篇文章的讀者們不用再浪費時間去搜索別的安裝教程,節省大家的時間,所以抽點時間把如何在CentOS 7下離線安裝MySQL的步驟進行詳細的總結;為大家圖個方便,也為自己做個筆記和總結。

前期準備

  1. MySQL 5.7 Linux安裝包下載:https://dev.mysql.com/downloads/mysql/
    官網下載安裝包

  2. 查詢並卸載系統自帶的Mariadb

    rpm -qa | grep mariadb
    rpm -e --nodeps 文件名

安裝實施

  1. 為了方便資料庫管理,對於安裝的MySQL資料庫,生產上我們都會建立一個mysql用戶和mysql用戶組:

    # 添加mysql用戶組
    groupadd mysql
    
    # 添加mysql用戶
    useradd -g mysql mysql -d /home/mysql
    
    # 修改mysql用戶的登陸密碼
    passwd mysql
  2. 創建臨時目錄、數據目錄和日誌目錄

    /home/mysql/3306/data
    /home/mysql/3306/log
    /home/mysql/3306/tmp
  3. 將下載的mysql-5.7.21-linux-glibc2.12-x86_64.tar安裝包上傳至伺服器/usr/local目錄下;

    # 解壓縮
    tar -xvf mysql-5.7.21-linux-glibc2.12-x86_64.tar
    
    # 會得到一個mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz文件,再解壓縮
    tar -zxvf mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz
    
    # 建立軟鏈接,便於以後版本升級
    ln -s mysql-5.7.21-linux-glibc2.12-x86_64 mysql
    
    # 修改mysql文件夾下所有文件的用戶和用戶組
    chown -R mysql:mysql mysql/
  4. 創建配置文件

    # 創建配置文件
    cd /etc
    
    # 在my.cnf文件中添加對應的配置項,文章末尾會提供一個預設的my.cnf配置
    vi my.cnf
  5. 安裝資料庫

    # 初始化資料庫,並指定啟動mysql的用戶
    ./mysqld --initialize --user=mysql

    安裝完成後,在my.cnf中配置的datadir目錄下生成一個error.log文件,裡面記錄了root用戶的隨機密碼。

  6. 設置開機自啟動服務

    # 複製啟動腳本到資源目錄
    cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld
    
    # 增加mysqld服務控制腳本執行許可權
    chmod +x /etc/rc.d/init.d/mysqld
    
    # 將mysqld服務加入到系統服務
    chkconfig --add mysqld
    
    # 檢查mysqld服務是否已經生效
    chkconfig --list mysqld
    
    # 切換至mysql用戶,啟動mysql
    service mysqld start
  7. 配置環境變數
    為了更好的操作mysql,配置環境變數。

    # 切換至mysql用戶
    su - mysql
    
    # 修改配置文件,增加export PATH=$PATH:/usr/local/mysql/bin
    vi .bash_profile
    
    # 立即生效
    source .bash_profile
  8. 登陸,修改密碼

    # 登陸mysql
    mysql -uroot -p
    
    # 修改root用戶密碼
    set password for root@localhost=password("123456");

總結

好了,到此關於CentOS 7離線安裝MySQL5.7的總結完畢。如果大家有任何疑問,或者在安裝過程中卡住了,都可以在下放留言。希望我的這篇文章對大家有幫助。

附錄

下述的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                      # 此參數確定數據日誌文件的大小,更大的設置可以提高性能,但也會增加恢復故障資料庫所需的時間

安裝錯誤說明

一、在安裝過程中出現./mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory錯誤時,請切回root用戶,執行以下命令即可:

yum install libaio

變更記錄

  • 2018-03-02 增加安裝錯誤說明

如果你覺的文章還不錯,可以關註果凍想微信公眾號,定期推送技術文章:
果凍想微信公眾號

果凍想-一個原創技術文章分享網站。

2018年2月4日 於呼和浩特。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 【聲明】 本文版權歸原作者所有,歡迎轉載,轉載請註明出處。 原作者:瀟湘隱者 出處:http://www.cnblogs.com/kerrycode/ 原文鏈接:https://www.cnblogs.com/kerrycode/p/3785768.html Linux系統是32位還是64位查看方法 ...
  • shell和進程的關係: 我們從login shell 說起,login shell用於表示登陸進程,是指用戶剛登錄系統時,由系統創建,用以運行shell 的進程。 這裡先運行幾個命令: 列印登陸進程(一直存在的,直到登陸退出)ID george.guo@ls:~$ echo $PPID3411ge ...
  • 這篇主要講一下Linux(CentOS)上性能性能監控的操作。 1.監控cpu使用情況--uptime 該命令將會列印出當前時間 系統運行了多久 當前登陸用戶數 系統平均負載 這裡的負載是單位時間內,cpu等待隊列中,評價有多少個進程在等待,等待的進程越多,cpu越忙。 2.監控記憶體及交換分區的使用 ...
  • 轉載(遇到問題,找到一篇比較全面優秀的文章,解決了剛剛我遇到的問題。原文本人已經推薦。也希望自己留一份,方便以後查閱)!!!!! 原文連接:https://www.cnblogs.com/jianqiang2010/archive/2011/09/01/2162574.html ORA-28000: ...
  • 完整報錯是這樣的: 小編的情況: 使用mysql的jar包版本: 使用的jdcp的相關jar包版本: 報錯的原因: mysql的jar包版本過低。 更新到最新版mysql的jar包即可。 小編更新後的版本: 參考博客: http://blog.csdn.net/ouyida3/article/det ...
  • 轉載自: http://blog.csdn.net/u011001084/article/details/51318434 一、關係型資料庫和SQL 實際上準確的講,SQL是一門語言,而不是一個資料庫。 什麼是SQL呢?簡而言之,SQL就是維護和使用關係型資料庫中的的數據的一種標準的電腦語言。 1 ...
  • MySQL的備份主要分為邏輯備份和物理備份 邏輯備份 在MySQL中邏輯備份的最大優點是對各種存儲引擎都可以用同樣的方法來備份。而物理備份則不同,不同的存儲引擎有著不同的備份方法。Mysql中的邏輯備份是將資料庫中的數據備份為一個文本文件,備份的文件可以被查看和編輯,在mysql中常用mysqldu ...
  • sql 某一欄位 數量大於1 SELECT * FROM ecm_goods_spec AWHERE ( SELECT count( * ) FROM ecm_goods_spec BWHERE A.`goods_id` = B.`goods_id` ) >1 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...