源碼構建mysql服務器,MySQL源代碼

本文目錄一覽:

如何源碼安裝mysql數據庫

這個可以這樣

比如解開源碼包, 得到一個文件夾ABC

cd ABC

mkdir build-mysql

cd build-mysql

cmake ..

make

make install

就是這個思路

ubuntu 怎麼源碼安裝mysql

1.下載源碼包

2.解壓包

tar -zxvf mysql-5.6.33.tar.gz

3.安裝必要依賴

sudo apt-get install make bison g++ build-essential libncurses5-dev cmake

4.進入安裝包目錄,配置MySQL安裝參數 //源碼安裝最大的好處就是可以自定義參數,制定安裝目錄,方便管理

cmake -DCMAKE_INSTALL_PREFIX=[指定MySQL安裝的目錄]/usr/local/mysql -DSYSCONFDIR=/etc -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DMYSQL_DATADIR=[指定MySQL的數據存放目錄如:]/usr/local/mysql/data -DMYSQL_USER=mysql -DWITH_DEBUG=0

make -j4 #-j數字 表示以多核心運行編譯

make install #安裝

5. 常用命令軟連接,設置環境變量

sudo ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib/libmysqlclient.so.18

sudo ln -s /usr/local/mysql/bin/mysql /usr/bin

sudo ln -s /usr/local/mysql/bin/mysqladmin /usr/bin

6.初始化數據庫

sudo /usr/local/mysql/scripts/mysql_install_db –basedir=/usr/local/mysql –datadir=/usr/local/mysql/data –user=mysql

7.啟動MySQL服務器

sudo /usr/local/mysql/bin/mysqld start

#如果啟動不了,考慮編譯安裝時自定義數據存放目錄,所以導致mysqld找不到對應的目錄

解決: vi /usr/local/mysql/bin/mysqld

修改datadir = [指定MySQL的數據存放目錄如:] /usr/local/mysql/data

保存退出,再次啟動 sudo /usr/local/mysql/bin/mysqld start #OK 搞定

8. 啟動成功後創建root用戶的密碼

/usr/local/mysql/bin/mysqladmin -u root password ‘新密碼’

9.啟動MySQL端

/usr/local/mysql/bin/mysql -u root -p

輸入密碼

10.設置環境變量

vi /home/個人目錄/.bashrc 或者 vi /root/.bashrc

#在後面添加這段代碼

export PATH=”$PATH:/home/sy/lnmp/mysql/bin”

#重啟電腦ok

#若不想重啟電腦,僅限當次有效(重啟失效)

#執行命令

export PATH=$PATH:/usr/local/mysql/bin

mysql –version //測試

如何源碼安裝mysql

為了避免端口衝突、程序衝突等現象,建議先將使用rpm方式安裝的mysql、mysql-server軟件包卸載

2

MySQL5.5版本以後需要使用cmake工具編譯安裝,所以在安裝MySQL之前要先安裝cmake工具(安裝方法如下)

3

掛載軟件光盤(掛載前先查詢下是否已經有其他光盤掛載了,如果有就用umount命令卸載後重新掛載帶有MySQL軟件包的光盤)

END

編譯安裝:解包、配置、編譯和安裝

解包(解包就是將光盤裡面的安裝包解壓到本地,一般解壓到/usr/src目錄下)

配置(配置是根據服務器的實際應用需要來制定不同的選項,如指定安裝路徑、啟用字符集等等,類似於windows軟件的自定義安裝,只不過linux中更加靈活)

編譯(編譯就是完成配置後使用”make”命令將源代碼文件進行編譯而生成二進制的程序模塊、動態鏈接庫、可執行文件等,輸入make回車即可)

安裝(編譯完成後,執行”make install”安裝命令,將軟件的執行程序、配置文件、幫助文檔等相關文件複製到linux系統中,進行安裝,輸入make install回車即可)

如何配置全世界最小的 MySQL 服務器

首先我們先解壓Mysql的安裝包,建議解壓到 /usr/local/src 目錄中方便管理

# tar xf mysql-5.6.16.tar.gz

# cd mysql-5.6.16

然後我們執行以下指令對源碼包進行預處理:

cmake \

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \

-DMYSQL_DATADIR=/usr/local/mysql/data \

-DSYSCONFDIR=/etc \

-DWITH_MYISAM_STORAGE_ENGINE=1 \

-DWITH_INNOBASE_STORAGE_ENGINE=1 \

-DWITH_MEMORY_STORAGE_ENGINE=1 \

-DWITH_READLINE=1 \

-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \

-DMYSQL_TCP_PORT=3306 \

-DENABLED_LOCAL_INFILE=1 \

-DWITH_PARTITION_STORAGE_ENGINE=1 \

-DEXTRA_CHARSETS=all \

-DDEFAULT_CHARSET=utf8 \

-DDEFAULT_COLLATION=utf8_general_ci

配置中指定了安裝路徑、數據庫路徑、配置文件路徑等參數。等配置結束後可以使用 echo $? 查看返回值確定是否配置成功。我在編譯時便遇到了一個名為 ncurses-devel 的依賴包沒有安裝,具體信息請閱讀錯誤提示。等我用yum源安裝好後發現無法繼續cmake了,只好刪除後重新解壓源碼包才配置成功的。好了 一切沒問題了就開始 make make install 吧!

# make make install

由於源碼包比較大,解壓後我統計了下,竟然291M,天啊這可得慢慢等待了。我花費了一個多小時才編譯完成的,也是夠慢了。

編譯安裝完成後會生成 /usr/local/mysql 這樣一個文件夾,如果選用了直接解壓二進制包,就把它解壓到 /usr/local 中。我們進入這個文件夾中看看

bin 這個目錄存放着mysql的服務器和客戶機程序,我們應該添加到環境變量

data 這個文件夾就是數據庫目錄

include 這裡存放着mysql開發用的函數頭文件,可以被其他源碼包編譯時依賴

lib Mysql運行需要的運行庫

scripts Mysql初始化數據庫的腳本,更改數據庫目錄後也需要進行初始化

man Mysql是使用手冊,需要讓man命令識別這個路徑才能使用

support-files 其中存放着Mysql的配置文件模板和服務控制腳本等文件

Mysql的配置文件為 /etc/my.cnf ,數據庫目錄為 /usr/local/mysql/data

接下來就開始部署這些文件,然後讓Mysql啟動起來吧!首先建立mysql用戶和組,並不創建家目錄,不允許登陸系統

# groupadd mysql

# useradd -M -s /sbin/nologin -g mysql mysql

設置mysql安裝目錄的屬主和屬組

# chown -R mysql:mysql /usr/local/mysql/

給數據庫目錄可讀可寫的權限

# chmod 777 -R /usr/local/mysql/data/

複製配置文件和服務控制腳本到相應位置

# cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf

# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

編輯配置文件 /etc/mysql.cnf,添加:

basedir = /usr/local/mysql

datadir = /usr/local/mysql/data

指定安裝目錄和數據庫目錄就可以了,其他參數先不用管。如圖一所示

接下來就可以初始化數據庫了

# cd /usr/local/mysql

# scripts/mysql_install_db –user=mysql

結果如圖二所示就代表成功了,可以用 echo $? 查看返回值

現在就可以啟動Mysql數據庫服務了 它的啟動命令是 mysqld

# service mysqld start

然後出現大寫的 ” SUCCESS “就代表啟動成功了,然後用netstat看看它監聽的端口吧!

# netstat -anpt | grep mysqld

我們發現它默認監聽在 TCP 的” 3306 “端口

我們可以用它自帶的 mysql 命令連接進去看看

用 -u 指定用戶名 -h 指定主機 -p 來輸入密碼

# /usr/local/mysql/bin/mysql -u root -h localhost -p

這個root用戶可不是系統登陸的root用戶,而是mysql服務器中的一個默認用戶。由於我們還沒有給root用戶設置密碼,直接回車就可以進如了,如果出現一個” mysql “就代表成功了。輸入” exit “命令退出。

總使用絕對路徑來執行mysql命令也不是辦法,我們把它的環境變量配置下吧

# echo ‘export PATH=$PATH:/usr/local/mysql/bin’ /etc/profile.d/mysql.sh

# source /etc/profile.d/mysql.sh

好啦,看看是不是能直接執行mysql命令了呢

接下來就分析一下my.cnf這個配置文件的各參數意義

basedir mysql的安裝目錄

datadir 數據庫目錄

port 指定服務端口,默認3306 端口

server_id pid文件路徑

socket 套接字

skip-locking 可避免mysql的外部鎖定,降低系統出錯幾率

skip-name-resolve 禁止mysql對外部連接進行DNS解析,可節約時間

key_buffer_size 設置索引緩存區大小,合理調節這個數值可以獲得更好的索引處理性能,過度調大反而降低性能。參數沒有可以自己添加

sort_buffer_size 設置排序緩存區的大小 (每個連接獨佔)

read_buffer_size 設置查詢操作緩存區的大小 (每個連接獨佔)

join_buffer_size 設置聯合查詢操作緩存區的大小 (每個連接獨佔)

max_connections 設置服務器最大連接進程數

mysql的root用戶沒有密碼是非常不安全的,接下來我們為它配置一個密碼。注意 要給root用戶添加密碼是需要啟動服務的,請確保你的Mysqld服務處於運行狀態

# mysqladmin -u root password “himysql”

如果已經設置了密碼,想去修改 就要在命令上添加 -p 參數,-p 參數是用來提醒輸入密碼的,就和mysql命令一樣

# mysqladmin -u root password “himysql” -p

接下來輸入舊密碼就可以更改新密碼了,再試一試,登陸mysql服務器是不是需要使用密碼了呢?

如果是在本機登陸mysql服務器 -h 選項是可以省略的,如果使用root登陸,連-u 參數都可以省略,如果沒有密碼登錄,連 -p 都是可以省略的,比如你第一次啟動服務,直接mysql就可以連接上去了

這個mysqladmin是Mysql服務器的管理程序,可用於執行檢察配置文件、檢查服務狀態、關閉服務器、創建數據庫以及刪除數據庫等的系統管理操作。其格式如下:

mysqladmin 選項 參數 . . .

create db_name 創建一個名為db_name的新數據庫

debug 將debug信息寫入錯誤日誌

drop db_name 刪除一個名為db_name的數據庫

extended-status 顯示服務器狀態變量和他們的值

flush-hosts 刷新緩存中的所有信息

flush-logs 刷新所有日誌信息

flush-privileges 重新載入授權表

flush-status 清除狀態變量

flush-tables 刷新所有的表

flush-threads 刷新線程的緩存

ping 顯示服務器運行狀態

processlist 正在運行服務器線程的列表

password new_password 更改密碼

shutdown 關閉服務器

start-slave 在從服務器上啟動同步

stop-slave 在從服務器上關閉同步

-u root 指定用戶

-h localhost 指定連接的主機

-p 指定需要輸入密碼

其中一些概念不懂沒關係,先眼熟就行了,在後面的學習中將會慢慢了解

當我們用mysql命令登陸到服務器後,出現的” mysql “我們應該怎麼操作呢?

在 mysql 提示符下可以使用SQL語言或命令對數據庫進行管理,每條SQL語句都以 ” ; ” 結束,且不區分大小寫。用戶可以通過上下鍵調出曾經輸入過的命令。

對數據庫的操作不外乎增刪查改,下面就看看一些很簡單的命令吧!

show databases; 查看當前存在的數據庫

use 數據庫名稱; 使用指定的數據庫

show tables; 查看指定數據庫有哪些表

create database 數據庫名稱; 創建新數據庫

drop 數據庫名稱; 刪除數據庫

編譯安裝Mysql服務器到此也已經差不多了,除了編譯時間長了些,按照步驟一步一步下來還是蠻簡單的。如果想知道Mysql數據庫的更多操作請看下一章:Mysql數據庫的管理與備份恢復。一定要動手做一做哦!Enjoy Your Time !o(^▽^)o

Linux 下二進制源碼包安裝mysql 詳細過程

安裝之前先把二進制源碼準備好,可以從搜狐鏡像下載:我準備的是mysql-5.5.15-linux2.6-i686.tar.gz

,linux

version

2.6.18-164.el5

實際工作中和虛擬機的配置有些地方可能會不相同

====================================================================

注意:mysql

安裝的時候必須指定到

/usr/local

必須命名為mysql

二進制源碼安裝需要在安裝目錄/usr/local下運行

複製代碼代碼如下:

//創建用戶mysql

*

groupadd

-g

3306

mysql

*

useradd

-g

mysql

-u

3306

-M

mysql

*

id

mysql

*

chown

-R

mysql:mysql

/mydata/

//

mysql對目錄要有寫權限

*

ll

-d

/mydata/

*

cp

/mysql-5.5.15-linux2.6-i686

/usr/local

*

cd

/usr/local/mysql

//

開始初始化

mysql

*

chown

-R

mysql:mysql

.

*

ln

-sv

/mysql-5.5.15-linux2.6-i686

mysql

*

scripts/mysql_install_db

–user=mysql

–datadir=/mydata/data

//

span

style=”color:#993300;”scripts腳本初始化/span

初始化

用來生成mysql數據庫

數據庫用來存放表等源數據信息

複製代碼代碼如下:

//安裝完成

下面配置啟動

*

ls

support-files/

//

準備服務啟動腳本

*

cp

support-files/mysql.server

/etc/init.d/mysqld

//

放入init.d

*

chkconfig

–add

mysqld

//

加入服務列表

*

chkconfig

–list

mysqld

//

–list

顯示出來

複製代碼代碼如下:

//此時可以啟動mysql了

但還需要配置mysql

*

ls

/etc/my.cnf

*

ls

support-files/

*

cp

support-files/my-large.cnf

/etc/my.cnf

*

vim

/etc/my.cnf

[mysqld]

//

找到該段

並添加datadir

=

/mydata/data

datadir

=

/mydata/data

*

service

mysqld

start

//

開啟服務

*

netstat

-tnl

//

3306

端口打開

*

echo

$PATH

*

/usr/local/mysql/bin/mysql

*

export

PATH=$PATH:/usr/local/mysql/bin

//

span

style=”color:#cc6600;”注意/span:不加$

就僅僅剩下你添加的路徑

*

vim

/etc/profile

//

在export

之前添加下面的路徑

PATH=$PATH:/usr/local/mysql/bin

//

永久生效的路徑配置方法

*

mysql

//

此時mysql已經可啟動了

複製代碼代碼如下:

//mysql庫文件的路徑配置

*

ls

*

vim

/etc/ld.so.conf

//

修改庫文件位置

*

vim

/etc/ld.so.conf.d/mysql.conf

//

規範的配置

當前目錄下以.CONF結尾都可以配置

*

ldconfig

-v

|

grep

mysql

//

重新加載所有庫文件的路徑

沒有mysql的庫文件

vim

/etc/ld.so.conf.d/mysql.conf

/usr/local/mysql/lib

//

新建mysql.conf

文件

在文件中添加這些內容

*

ldconfig

-v

|

grep

mysql

//

修改之後在重新加載一次

否則服務器不知道

//mysql庫文件的路徑配置

*

ls

*

vim

/etc/ld.so.conf

//

修改庫文件位置

*

vim

/etc/ld.so.conf.d/mysql.conf

//

規範的配置

當前目錄下以.CONF結尾都可以配置

*

ldconfig

-v

|

grep

mysql

//

重新加載所有庫文件的路徑

沒有mysql的庫文件

vim

/etc/ld.so.conf.d/mysql.conf

/usr/local/mysql/lib

//

新建mysql.conf

文件

在文件中添加這些內容

*

ldconfig

-v

|

grep

mysql

//

修改之後在重新加載一次

否則服務器不知道

複製代碼代碼如下:

//頭文件的配置

庫文件有哪些函數以及函數在別人編寫程序的時候怎麼調用

怎麼傳遞參數

參數類型是什麼

返回值類型是是什麼

必須找到庫文件所對應的頭文件

庫文件對應的頭文件在/

usr/include

*

ls

/usr/include/

*

ln

-sv

/usr/local/mysql/include

/usr/include/mysql

//

頭文件的輸出

*

vim

/etc/man

*

vim

/etc/man.config

//

添加Man

MANPATH

/usr/local/mysql/man

OK!

mysql

配置成功—

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/248764.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 13:29
下一篇 2024-12-12 13:29

相關推薦

  • 如何修改mysql的端口號

    本文將介紹如何修改mysql的端口號,方便開發者根據實際需求配置對應端口號。 一、為什麼需要修改mysql端口號 默認情況下,mysql使用的端口號是3306。在某些情況下,我們需…

    編程 2025-04-29
  • g3log源代碼學習

    g3log是一個高性能C++日誌庫,其代碼十分精簡和可讀性強,本文將從3個方面詳細介紹g3log源代碼學習。 一、g3log源代碼整體架構 g3log的整體架構十分清晰,其中有3個…

    編程 2025-04-29
  • 雲智直聘 源碼分析

    本文將會對雲智直聘的源碼進行分析,包括前端頁面和後端代碼,幫助讀者了解其架構、技術實現以及對一些常見的問題進行解決。通過本文的閱讀,讀者將會了解到雲智直聘的特點、優勢以及不足之處,…

    編程 2025-04-29
  • 服務器安裝Python的完整指南

    本文將為您提供服務器安裝Python的完整指南。無論您是一位新手還是經驗豐富的開發者,您都可以通過本文輕鬆地完成Python的安裝過程。以下是本文的具體內容: 一、下載Python…

    編程 2025-04-29
  • STUN 服務器

    STUN 服務器是一個網絡服務器,可以協助網絡設備(例如 VoIP 設備)解決 NAT 穿透、防火牆等問題,使得設備可以正常地進行數據傳輸。本文將從多個方面對 STUN 服務器做詳…

    編程 2025-04-29
  • Python操作MySQL

    本文將從以下幾個方面對Python操作MySQL進行詳細闡述: 一、連接MySQL數據庫 在使用Python操作MySQL之前,我們需要先連接MySQL數據庫。在Python中,我…

    編程 2025-04-29
  • 解決docker-compose 容器時間和服務器時間不同步問題

    docker-compose是一種工具,能夠讓您使用YAML文件來定義和運行多個容器。然而,有時候容器的時間與服務器時間不同步,導致一些不必要的錯誤和麻煩。以下是解決方法的詳細介紹…

    編程 2025-04-29
  • MySQL遞歸函數的用法

    本文將從多個方面對MySQL遞歸函數的用法做詳細的闡述,包括函數的定義、使用方法、示例及注意事項。 一、遞歸函數的定義 遞歸函數是指在函數內部調用自身的函數。MySQL提供了CRE…

    編程 2025-04-29
  • MySQL bigint與long的區別

    本文將從數據類型定義、存儲空間、數據範圍、計算效率、應用場景五個方面詳細闡述MySQL bigint與long的區別。 一、數據類型定義 bigint在MySQL中是一種有符號的整…

    編程 2025-04-28
  • Python網站源碼解析

    本文將從多個方面對Python網站源碼進行詳細解析,包括搭建網站、數據處理、安全性等內容。 一、搭建網站 Python是一種高級編程語言,適用於多種領域。它也可以用於搭建網站。最常…

    編程 2025-04-28

發表回復

登錄後才能評論