mysql編譯安裝

編譯安裝MySQL-5.5


cmake的重要特性之一是其獨立於源碼(out-of-source)的編譯功能,即編譯工作可以在另一個指定的目錄中而非源碼目錄中進行,這可以保證源碼目錄不受任何一次編譯的影響,因此在同一個源碼樹上可以進行多次不同的編譯,如針對於不同平臺編譯。


編譯安裝MySQL-5.5



一、安裝cmake    (也可以yum安裝cmake,不過在此之前要yum list all | grep cmake安裝最新的)也可以使用編譯安裝

一般情況下,cmake無需自己編譯的,因爲epel各源中都是有的,是不許要在安裝的,直接yum即可


跨平臺編譯器


# tar xf cmake-2.8.8.tar.gz

# cd cmake-2.8.8

# ./bootstrap

# make 

# make install




二、編譯安裝mysql-5.5.33


1、使用cmake編譯mysql-5.5

cmake指定編譯選項的方式不同於make,其實現方式對比如下:

./configure           cmake .

./configure --help    cmake . -LH or ccmake .




指定安裝文件的安裝路徑時常用的選項:

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql    -D默認

-DMYSQL_DATADIR=/data/mysql   數據目錄

-DSYSCONFDIR=/etc   配置文件路徑,my.cnf位置



默認編譯的存儲引擎包括:csv、myisam、myisammrg和heap。若要安裝其它存儲引擎,可以使用類似如下編譯選項:

-DWITH_INNOBASE_STORAGE_ENGINE=1    使用innoDB

-DWITH_ARCHIVE_STORAGE_ENGINE=1

-DWITH_BLACKHOLE_STORAGE_ENGINE=1    黑洞引擎

-DWITH_FEDERATED_STORAGE_ENGINE=1


若要明確指定不編譯某存儲引擎,可以使用類似如下的選項:

-DWITHOUT_<ENGINE>_STORAGE_ENGINE=1    這一個是格式樣例

比如:

-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1

-DWITHOUT_FEDERATED_STORAGE_ENGINE=1

-DWITHOUT_PARTITION_STORAGE_ENGINE=1


如若要編譯進其它功能,如SSL等,則可使用類似如下選項來實現編譯時使用某庫或不使用某庫:

-DWITH_READLINE=1     客戶單交互工具,可以使用命令歷史等各級高級功能

-DWITH_SSL=system

-DWITH_ZLIB=system    壓縮,節約帶寬

-DWITH_LIBWRAP=0    


其它常用的選項:

-DMYSQL_TCP_PORT=3306     默認端口

-DMYSQL_UNIX_ADDR=/tmp/mysql.sock   sock位置

-DENABLED_LOCAL_INFILE=1

-DEXTRA_CHARSETS=all

-DDEFAULT_CHARSET=utf8

-DDEFAULT_COLLATION=utf8_general_ci   排序規則

-DWITH_DEBUG=0

-DENABLE_PROFILING=1      是否支持性能剖析




如果想清理此前的編譯所生成的文件,則需要使用如下命令:

make clean

rm CMakeCache.txt



2、編譯安裝


# groupadd -r mysql      創建用戶,mysql作爲進程的主人

# useradd -g mysql -r -d /mydata/data mysql

# tar xf mysql-5.5.33.tar.gz   

# cd mysql-5.5.33

# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \

          -DMYSQL_DATADIR=/mydata/data \

          -DSYSCONFDIR=/etc \

 -DWITH_INNOBASE_STORAGE_ENGINE=1 \

          -DWITH_ARCHIVE_STORAGE_ENGINE=1 \

          -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \

 -DWITH_READLINE=1 \

 -DWITH_SSL=system \

 -DWITH_ZLIB=system \

 -DWITH_LIBWRAP=0 \

 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock \

 -DDEFAULT_CHARSET=utf8 \

          -DDEFAULT_COLLATION=utf8_general_ci

# make 

# make install


3.初始化mysql

mkdir -pv /mydata/data

chown -R mysql.mysql /mysdata/data  數據存放目錄都給mysql


安裝目錄屬主不動,數組爲mysql:  chown :mysql /usr/local/mysql/* -R


執行初始化:/usr/local/mysql/scripts/mysql_install_db --user=mysql --datadir=/mydata/data/    之後就會在數據目錄下/mydata/data下就會生成實例了,這樣數據初始化結束


複製服務腳本:cp support-files/mysql.server /etc/rc.d/init.d/mysqld    用戶使用mysql就可以進入數據庫


chmod +x /etc/rc.d/init.d/mysqld

chkconfig --add mysqld

複製配置文件  cp /usr/local/mysql/support-files/my-large.cnf /etc/my.cnf    

vim /etc/my.cnf

  datadir = /mydata/data


service mysqld start  可以啓動測試了  

ss -tnl  有3306即可


如果想要mysql客戶端正常啓動

vim /etc/profile.d/mysql.sh

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

mysql 就能夠登錄客戶端了





/usr/local/mysql/bin目錄下的

mysqld

mysqld_safe 線程進程服務,平時默認啓動這個

mysqld_multi 一個主機上啓動多個進程,多實例進程

mysql 客戶端工具

mysqladmin   

mysqldump   邏輯備份工具




my.cnf配置文件的訪問順序:/etc/my.cnf 

/etc/mysql/my.cnf  

$MYSQL_HOME/my.cnf  mysql的運行目錄

如果定義了--default-extra-file=/path/to/file那還是會找這個路徑下的文件的

~/.my.cnf   當前用戶下的家目錄下隱藏的配置文件

從上到下一次尋找,所有配置集合有效,所有文件都定義的值,以最後匹配的爲準

################################################################################################


使用配置文件的方式

1.它依次查找多個需要查找的文件,結果是所有文件交集

2.如果某參數在多個文件中宏出現多次,後配置的最終生效


./mysqld --help --verbose  查看可以修改的文件,顯示當前服務上mysql所支持的所有變量和配置

1.顯示mysql的程序啓動時可用的選項,通常都是長選項

2.顯示mysqld配置文件中可用的服務變量

    mysql > show global variables

    mysql > show session variables



初始化:第二個操作

1、刪除所有匿名用戶

    mysql > drop user''@'localhost'

    mysql > drop user''@'www.zou.com'


     用戶名賬號由兩部分組成:username@host

       host還可以使用通配符

         %:任意長度的任意字符

         _:匹配任意單個字符


 2.給所有的root用戶設定密碼

  第一種方式

     mysql > set password for username@host = password( 'your_password')


  第二種方法   (比較妥當,安全)

     mysql > update user set password = password('your_password') where user = 'root';

     mysql > flush peivileges


  第三種方式

     # mysqladmin -uUserName -hHost password 'new_password' -p

     mysqladmin -uUserName -h Host -p flush-privileges


接入MySQL服務器

  mysql <-mysql protocol-> mysqld    使用mysql客戶端基於某種協議連接mysqld

  

   mysql接受鏈接請求(有兩種)

      本地通信:客戶端與服務器端位於同一主機,而且還要基於127.0.0.1(localhost)地址或lo接口進行通信

        Linux OR Unix:Unix Sock,編譯安裝在/tmp/mysql.scok,如果是OS win ,位置在 /var/lib/mysql/mysql.sock

        Widows:memory pipe  共享內存,或者管道

      遠程通信:客戶端與服務器位於不同的主機,或在同一主機使用非迴環地址通信

        TCP Socket


    客戶端工具:mysql,mysqladmin,mysqldump,mysqlcheck

       [client]  對以上工具生效

       

       通信的選項:

         -u,--user=

         -h, --host=

         -p, --password=

         --protocol={tcp|socket|memory|pipe}

         --port=

         --socket=/tmp/mysql.sock

         

    mysql監聽的端口:3306/tcp


    非客戶端類的管理工具:myisamchk,myisampack


mysql:

    交互式模式

       mysql>

    腳本模式

       mysql < /path/to/mysql_scripy.sql


mysql交互式模式:

    客戶端命令

        mysql> help

        mysql>\?

        \c:取消命令的執行

        \g

        \G

        \q

        \!

        \s

        \. /path/to/mysql_script.mysql 批處理zhixingmysql命令

        \# 命令補全

   

   服務器端命令:需要命令結束符,默認爲分號(;)

    mysql> help 關鍵字

help create table 獲取如何創建表

    help contents 獲取整體列表

    mysql> help keyword 獲取命令


mysql命令行選項

   --compress 壓縮傳輸

   --default-character-set=字符集   mysql啓動時(客戶端)向服務器發送的字符集

   -V: 顯示版本號   --version

   -v: 顯示詳細信息 --verbose

   --ssl-ca=ca證書文件  (絕對路徑)

   --ssl-capath =ca證書的文件夾

   --ssl-cert =客戶端證書

   --ssl-cipher =加密機制,方式

   --ssl-key =使用的私鑰

   --ssl-verify-server-cert =驗證服務器端證書


   --database= -D:指定要使用的數據庫


   -H --html:輸出結果爲html格式的文檔

   -X --xml:輸出結果爲xml格式的文檔


   --safe-updates:發送命令時拒絕使用無where字句的update或delete命令

  

   mysql命令提示符

   mysql> 等待輸入命令

   '> 前面提供的‘未提供結束’

   ”>  引用字符串

   `> 引用字符串

   -> 續航符

   /*> 註釋信息   結束以*/


   mysql的命令行編輯快捷鍵

    ctrl+w:刪除光標所在處之前的一個單詞

    ctrl+u:刪除光標之前至行首的所有內容

    ctrl+y:粘貼之前ctrl+w或ctrl+u刪除的內容

    ctrl+a:移動光標至行首

    ctrl+e:移動光標至行尾


一旦使用家mysql,就會在當前用戶家目錄下生成一個.mysql_history 的文件



mysql的輸出格式:

--html 或者 -H  就是輸出時顯示的是http格式的文檔

eg: mysql -uroot -H -p   之後select * mysql.user;複製粘貼這些輸出內容,到一個網頁中,打開時就會發現,一個正常的輸出格式的數據表格


-X   --xml 的選項輸出格式爲xml,就是表格模式



mysqladmin工具     不用進入mysql就可以執行相關操作

   mysqladmin [options] command [arg] [command[arg]] .....


  command

     create DB_Name 創建空數據庫   mysqladmin -uroot -p create mydb

     -e:直接返回         mysqladmin -uroot -p -e 'show databases;'

     drop DB_Name 刪除數據庫

     debug 打開調試日誌並記錄到mysql中的error_log中   偶爾判斷mysql錯誤時有用

     status:輸出簡要狀態信息

        -sleep # 指定顯示延遲     mysqladmin -uroot -p --sleep 1  每一秒鐘顯示一次狀態信息

        -count # 指定批次,顯示幾次轉態結果

     extended-status:輸出mysq的各狀態變量及數值,相當於執行“mysql> show global status”

     flush-hosts:清空主機相關的緩存:DNS解析緩存,此前因爲連接錯誤次數過多而被拒絕訪問mysqld的主機列表

     flush-logs:日誌滾動,只能是二進制日誌和中繼日誌

     refresh:相當於同時使用flush-logs和flush-hosts 


     flush-privileges:通知服務器重讀授權表

     reload:重載授權表  相當於flush-privileges

     flush-status:重置狀態變量的值

     flush-tables:關閉當前打開的表文件句柄

     flush-threads:清空線程緩存

     kill:殺死指定的線程,後面跟線程id ,可以一次殺死多個線程,以逗號分隔,但不能有多餘空格

     password:修改指定用戶的密碼

     processlist: 顯示mysql線程列表

     shutdown:關閉mysqld進程


     start-slave 啓動從服務器進程 

     stop-slave 關閉從服務器進程

     variables:顯示mysql的各服務器進程


GUI客戶端工具

   Navicat for mysql

   Toad for mysql

   SQLyog

   MySQL Front

   phpMyAdmin


創建遠程連接的用戶:進入mysql

mysql> Create user 'root'@172.16.%.%; 

     GRANT all ON *.* TO 'root'@172.16.%.% IDENTIFIED BY '123.comer';  授權並給密碼


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章