LAMP之Mysql源碼配置安裝

来源:https://www.cnblogs.com/caicairui/archive/2018/03/01/8485908.html
-Advertisement-
Play Games

MySQL是一個關係型資料庫管理系統,由瑞典MySQL AB 公司開發,目前屬於 Oracle 旗下產品。MySQL 是最流行的關係型資料庫管理系統之一,在 WEB 應用方面,MySQL是最好的 RDBMS (Relational Database Management System,關係資料庫管理 ...


MySQL是一個關係型資料庫管理系統,由瑞典MySQL AB 公司開發,目前屬於 Oracle 旗下產品。MySQL 是最流行的關係型資料庫管理系統之一,在 WEB 應用方面,MySQL是最好的 RDBMS (Relational Database Management System,關係資料庫管理系統) 應用軟體。 MySQL是一種關係資料庫管理系統,關係資料庫將數據保存在不同的表中,而不是將所有數據放在一個大倉庫內,這樣就增加了速度並提高了靈活性。 MySQL所使用的 SQL 語言是用於訪問資料庫的最常用標準化語言。MySQL 軟體採用了雙授權政策,分為社區版和商業版,由於其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,一般中小型網站的開發都選擇 MySQL 作為網站資料庫。 由於其社區版的性能卓越,搭配 PHP 和 Apache 可組成良好的開發環境
https://dev.mysql.com/doc/refman/5.7/en/source-installation.html  #mysql官網,源碼安裝Mysql,依靠Cmake

 下載安裝Cmake

[root@localhost1 cmake-3.9.6]# wget https://cmake.org/files/v3.9/cmake-3.9.6.tar.gz
[root@localhost1 cmake-3.9.6]# tar zxf cmake-3.9.6.tar.gz 
[root@localhost1 cmake-3.9.6]# cd cmake-3.9.6
[root@localhost1 cmake-3.9.6]# ./configure 
[root@localhost1 cmake-3.9.6]# gmake
[root@localhost1 cmake-3.9.6]# gmake install

[root@localhost1 cmake-3.9.6]# which gmake
/usr/bin/gmake

安裝Mysql之前必須要安裝的組件

yum -y install gcc* libaio* ncurses-devel
groupadd mysql
useradd mysql -s /sbin/nologin -M -g mysql
mkdir /opt/mysql-5.7.21/data -p
mkdir /opt/mysql-5.7.21/tmp -p
chown -R mysql.mysql /opt/mysql-5.7.21
chmod 750 -R /opt/mysql-5.7.21
https://dev.mysql.com/doc/refman/5.7/en/source-configuration-options.html  Mysql官網編譯參數詳解
-DCMAKE_INSTALL_PREFIX=dir_name
安裝基礎目錄。
該值可以在伺服器啟動時使用該--basedir選項進行設置 。

-DMYSQL_DATADIR=dir_name
MySQL數據目錄的位置。
該值可以在伺服器啟動時使用該--datadir選項進行設置 。

-DMYSQL_UNIX_ADDR=file_name
伺服器偵聽套接字連接的Unix套接字文件路徑。這必須是絕對路徑名稱。預設是/tmp/mysql.sock。
該值可以在伺服器啟動時使用該--socket選項進行設置 。

-DDEFAULT_CHARSET=charset_name
伺服器字元集。預設情況下,MySQL使用 latin1(cp1252西歐)字元集。
charset_name可以是一種 binary,armscii8, ascii,big5, cp1250,cp1251, cp1256,cp1257, cp850,cp852, cp866,cp932, dec8,eucjpms, euckr,gb2312, gbk,geostd8, greek,hebrew, hp8,keybcs2, koi8r,koi8u, latin1,latin2, latin5,latin7, macce,macroman, sjis,swe7, tis620,ucs2, ujis,utf8, utf8mb4,utf16, utf16le,utf32。允許的字元集在cmake/character_sets.cmake文件中被列為 值CHARSETS_AVAILABLE。
該值可以在伺服器啟動時使用該--character_set_server選項進行設置 。

-DDEFAULT_COLLATION=collation_name
伺服器整理。預設情況下,MySQL使用 latin1_swedish_ci。使用該 SHOW COLLATION語句來確定每個字元集可用的排序規則。
該值可以在伺服器啟動時使用該--collation_server選項進行設置 。

cmake -DCMAKE_INSTALL_PREFIX=/opt/mysql-5.7.21 -DMYSQL_DATADIR=/opt/mysql-5.7.21/data -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DMYSQL_UNIX_ADDR=/opt/mysql-5.7.21/tmp/mysql.sock -DWITH_BOOST=/opt/boost這個參數是必須的 -DWITH_DEBUG=1#上面沒寫

/etc/my.cnf配置:

[root@localhost init.d]# cat /etc/my.cnf
# Example MySQL config file for small systems.
#
# This is for a system with little memory (<= 64M) where MySQL is only used
# from time to time and it's important that the mysqld daemon
# doesn't use much resources.
#
# MySQL programs look for option files in a set of
# locations which depend on the deployment platform.
# You can copy this option file to one of those
# locations. For information about these locations, see
# http://dev.mysql.com/doc/mysql/en/option-files.html
#
# In this file, you can use all long options that a program supports.
# If you want to know which options a program supports, run the program
# with the "--help" option.
# The following options will be passed to all MySQL clients
#配置指令傳遞給與 MYSQL 伺服器相關的客戶端
[client]#客戶端
#password = your_password #密碼
port = 3306 #服務的埠,如果需要修改,在確保所有配置文件中都修改
socket = /application/mysql-5.1.72/tmp/mysql.sock #套接字文件的路徑
# Here follows entries for some specific programs
# The MySQL server #MYSQL 伺服器
[mysqld] #啟動命令腳本文件
port = 3306 #埠
socket = /application/mysql-5.1.72/tmp/mysql.sock #套接字文件的路徑
skip-locking
key_buffer_size = 16K #索引塊的緩衝區大小
max_allowed_packet = 1M #服務能請求包的最大大小為 1M
table_open_cache = 4 #所有線程所打開表的數量
sort_buffer_size = 64K #排序使用的緩衝區大小
read_buffer_size = 256K #讀查詢操作使用的緩衝區大小
read_rnd_buffer_size = 256K #隨機讀取緩衝區的大小
net_buffer_length = 2K #
thread_stack = 128K
# Don't listen on a TCP/IP port at all. This can be a security enhancement,
# if all processes that need to connect to mysqld run on the same host.
# All interaction with mysqld must be made via Unix sockets or named pipes.
# Note that using this option without enabling named pipes on Windows
# (using the "enable-named-pipe" option) will render mysqld useless!
#
#skip-networking
server-id = 1 #本機的序號, master 進程
# Uncomment the following if you want to log updates
#log-bin=mysql-bin
# binary logging format - mixed recommended
#binlog_format=mixed
# Uncomment the following if you are using InnoDB tables
#innodb_data_home_dir = /application/mysql-5.1.72/data
#innodb_data_file_path = ibdata1:10M:autoextend
#innodb_log_group_home_dir = /application/mysql-5.1.72/data
# You can set .._buffer_pool_size up to 50 - 80 %
# of RAM but beware of setting memory usage too high
#innodb_buffer_pool_size = 16M #INnodb 緩衝池的大小
#innodb_additional_mem_pool_size = 2M
# Set .._log_file_size to 25 % of buffer pool size
#innodb_log_file_size = 5M #INnodb 日誌文件大小
#innodb_log_buffer_size = 8M #INnodb 日誌緩衝區大小
#innodb_flush_log_at_trx_commit = 1
#innodb_lock_wait_timeout = 50 #INnodb 事務鎖定前的超時時間
[mysqldump]
quick
max_allowed_packet = 16M #伺服器發送與接收的包的最大大小
[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates
[myisamchk]
key_buffer_size = 8M
sort_buffer_size = 8M
[mysqlhotcopy]
interactive-timeout #伺服器關閉連接前等待活動的時間

錯誤總結:

MySQL5.7.17在cmake的時候報錯如下:

點擊(此處)摺疊或打開

CMake Error at cmake/boost.cmake:81 (MESSAGE):
You can download it with -DDOWNLOAD_BOOST=1 -DWITH_BOOST=
This CMake script will look for boost in . If it is not there,
it will download and unpack it (in that directory) for you.
If you are inside a firewall, you may need to use an http proxy:
export http_proxy=http://example.com:80
Call Stack (most recent call first):
cmake/boost.cmake:238 (COULD_NOT_FIND_BOOST)
CMakeLists.txt:455 (INCLUDE)
-- Configuring incomplete, errors occurred!
See also "/root/mysqlsoftware/mysql-5.7.17/CMakeFiles/CMakeOutput.log".
See also "/root/mysqlsoftware/mysql-5.7.17/CMakeFiles/CMakeError.log".
解決辦法是:
1.在/usr/local下創建一個名為boost的文件夾
    mkdir -p /usr/local/boost
2.進入這個新創建的文件夾然後下載boost
    wget http://www.sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz
3.解壓
    tar -xvzf boost_1_59_0.tar.gz
4.繼續cmake,添加上紅色部分

cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DENABLED_LOCAL_INFILE=ON \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DCOMPILATION_COMMENT='Mysqlma' \
-DWITH_READLINE=ON \
-DWITH_BOOST=/usr/local/boost \
-DSYSCONFDIR=/data/mysqldata/3306 \
-DMYSQL_UNIX_ADDR=/data/mysqldata/3306/mysql.sock
-DWITH_BOOST=path_name

Boost庫是構建MySQL所必需的。這些 CMake選項可以控制庫源位置,以及是否自動下載它:

-DWITH_BOOST=path_name 指定Boost庫目錄位置。也可以通過設置BOOST_ROOT或 WITH_BOOST環境變數來指定Boost位置 。

從MySQL 5.7.11開始,它 -DWITH_BOOST=system是允許的,並且表示在標準位置的編譯主機上安裝了正確版本的Boost。在這種情況下,使用的是Boost的安裝版本,而不是MySQL源代碼發行版中包含的任何版本。

-DDOWNLOAD_BOOST=bool 指定是否在指定位置不存在的情況下下載Boost源。預設是 OFF。

-DDOWNLOAD_BOOST_TIMEOUT=seconds 下載Boost庫的超時時間(秒)。預設值是600秒。

例如,如果您通常構建MySQL,將對象輸出放置在bldMySQL源代碼樹的子目錄中,則可以使用Boost構建,如下所示:

mkdir bld
cd bld
cmake .. -DDOWNLOAD_BOOST=ON -DWITH_BOOST=$HOME/my_boost
這會導致Boost被下載到 my_boost您的主目錄下的目錄中。如果所需的Boost版本已經存在,則不進行下載。如果所需的Boost版本更改,則會下載較新的版本。

如果Boost已經在本地安裝,並且編譯器自己找到Boost頭文件,則可能不需要指定前面的CMake選項。但是,如果MySQL所需的Boost版本發生更改並且本地安裝的版本尚未升級,則可能會出現構建問題。使用CMake 選項應該給你一個成功的構建。

通過上述允許將Boost下載到指定位置的設置,當所需的Boost版本發生更改時,您需要刪除該bld文件夾並重新創建該文件夾,然後再次執行cmake步驟。否則,新的Boost版本可能無法下載,編譯可能會失敗。
http://blog.csdn.net/cryhelyxx/article/details/47610247    問題的解決
bin/mysqld --initialize --user=mysql  初始化mysql。指定用戶   --initialize會自動生成密碼    
cp /opt/mysql-5.7.21/support-files/mysql.server /etc/init.d/mysqld
/etc/init.d/mysqld start
echo 'export PATH=/application/mysql/bin:$PATH'>>/etc/profile
在不知道mysql root密碼的情況下修改密碼
[root@cairui mysql]# bin/mysqld_safe --skip-grant-tables & 
在mysql中輸入一下命令
update mysql.user set authentication_string=password('root') where user='root' ;
加入開機啟動
[root@cairui ~]# chkconfig mysqld on    
http://www.bubuko.com/infodetail-2167283.html  不需要/etc/my.cnf的解釋

You must SET PASSWORD before executing this statement的解決方法

http://www.jb51.net/article/39187.htm


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

-Advertisement-
Play Games
更多相關文章
  • 我現在有一個 100M 的代碼,需要快速去編譯他,我尋找了很多方法,本文記錄我找到的 IncrediBuild 用於提交編譯速度 ...
  • 環境:Asp.Net Core 2 1、問題 最近項目在調用遠程UI時遇到點麻,在調用遠程CSS文件時無法載入其中的字體文件。遠程CSS文件對字體的定義: 瀏覽器沒有按照預想的那樣訪問到遠程字體資源並拋出了異常: 大意是CORS策略阻止了從http://localhost:2093訪問http:// ...
  • 當你在頁面上用 form post 內容時,可能會遇到以下異常: The required antiforgery cookie "????????" is not present. 咱們來重現一下錯誤。新建一個 ASP.NET Core 項目,模板選【空】就行了,這是老周最喜歡的項目模板,空 == ...
  • 使用反射改進後的策略模式 public abstract class CashSpuer { public abstract double acceptCash(double money); } public class CashNormal : CashSpuer { public overrid ...
  • Digital Control of High-Frequency Switched-Mode Power Converters ...
  • tar 命令可以為linux的文件和目錄創建檔案。利用 tar,可以為某一特定文件創建檔案(備份文件),也可以在檔案中改變文件,或者向檔案中加入新的文件。tar 最初被用來在磁帶上創建檔案,現在,用戶可以在任何設備上創建檔案。利用 tar 命令,可以把一大堆的文件和目錄全部打包成一個文件,這對於備份 ...
  • 原因: ubuntu存在一個bug:在/var/run/目錄下缺少一個文件夾sshd 解決方法: 在命令行輸入: sudo mkdir /var/run/sshd sudo /usr/sbin/sshd netstat -nlt 出現以下日誌問題就解決了: Active Internet conne ...
  • 實例1:直接遠程連接某台主機: 命令:sshpass -p xxx ssh [email protected] 實例2:遠程連接指定ssh的埠: 命令:sshpass -p 123456 ssh -p 1000 [email protected] (當遠程主機不是預設的22埠時候) 實例3: ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...