centos 安裝mysql

下載頁面:http://dev.mysql.com/downloads/mysql/5.0.html#downloads
到頁面底部,找到Source downloads,這個是源碼版本,下載第1個Tarball
groupadd mysql
新建一個名爲mysql的用戶組
useradd -g mysql mysql
在mysql用戶組下新建一個名爲mysql的用戶
gunzip < mysql-VERSION.tar.gz | tar -xvf -
解壓下載到的.gz文件
cd mysql-VERSION
進入解壓後的目錄
 CFLAGS="-O3 -mcpu=pentium4" CXX=gcc CXXFLAGS="-O3 -march=pentium4 -felide-constructors -fno-exceptions -fno-rtti" ./configure --
prefix=/home/mysql/ --without-debug  --with-unix-socket-path=/home/mysql/tmp/mysql.sock --with-client-ldflags=-all-static --with-
mysqld-ldflags=-all-static --enable-assembler --with-extra-charsets=gbk,gb2312,utf8 --without-innodb --without-isam --with-pthread
--enable-thread-safe-client
配置mysql
gcc的相關參數:
-O3 /
-O
-O1
    優化.對於大函數,優化編譯佔用稍微多的時間和相當大的內存.
    不使用`-O'選項時,編譯器的目標是減少編譯的開銷,使編譯結果能夠調試.語句是獨立的:如果在 兩條語句之間用斷點中止程序,你可以對任何變
量重新賦值,或者在函數體內把程序計數器指到其他語句,以及從源程序中 精確地獲取你期待的結果.
    不使用`-O'選項時,只有聲明瞭register的變量才分配使用寄存器.編譯結果比不用 `-O'選項的PCC要略遜一籌.
    使用了`-O'選項,編譯器會試圖減少目標碼的大小和執行時間.
    如果指定了`-O'選項, `-fthread-jumps'和`-fdefer-pop'選項將被 打開.在有delay slot的機器上, `-fdelayed-branch'選項將被打開.在即使
沒有幀指針 (frame pointer)也支持調試的機器上, `-fomit-frame-pointer'選項將被打開.某些機器上 還可能會打開其他選項.
-O2
    多優化一些.除了涉及空間和速度交換的優化選項,執行幾乎所有的優化工作.例如不進行循環展開(loop unrolling)和函數內嵌(inlining).和-O
選項比較,這個選項既增加了編譯時間,也提高了生成代碼的 運行效果.
-O3
    優化的更多.除了打開-O2所做的一切,它還打開了-finline-functions選項.
-O0
    不優化.
如果指定了多個-O選項,不管帶不帶數字,最後一個選項纔是生效的選項。
-mcpu=pentium4 /根據CPU類型優化編譯,可以讓你的mysq表現更好!可選項目很多:i386, i486, i586, i686, pentium, pentium-mmx,
pentiumpro, pentium2, pentium3, pentium4, k6, k6-2, k6-3, athlon, athlon-tbird, athlon-4, athlon-xp,athlon-mp,winchip-c6, winchip2
, c3.
-fomit-frame-pointer /對於不需要棧指針的函數就不在寄存器中保存指針,因此可以忽略存儲和檢索地址的代碼,並將寄存器用於普通用途。所
有"-O"級別都打開着一選項,但僅在調試器可以不依靠棧指針運行時纔有效。建議不需要調試的情況下顯式的設置它。
configure的相關參數:
--prefix=/home/mysql/  /指定安裝目錄
--without-debug /去除debug模式
--with-extra-charsets=gbk,gb2312,utf8  /添加gbk,gb2312,utf8中文字符支持
--with-pthread /強制使用pthread庫(posix線程庫)
--enable-assembler /使用一些字符函數的彙編版本
--enable-thread-safe-client /以線程方式編譯客戶端
--with-client-ldflags=-all-static /以純靜態方式編譯客戶端
--with-mysqld-ldflags=-all-static /以純靜態方式編譯服務端
--without-isam /去掉isam表類型支持,現在很少用了,isam表是一種依賴平臺的表
--without-innodb /去掉innodb表支持,innodb是一種支持事務處理的表,適合企業級應用
make
編譯
make install
安裝
cp support-files/my-medium.cnf /etc/my.cnf
將mysql的配置文件copy到/etc目錄下,並更名爲my.cnf
 /home/mysql下面有5個my-xxxx.cnf文件
my-small.cnf               最小配置安裝,內存<=64M,數據數量最少
my-large.cnf               內存=512M
my-medium.cnf             32M<內存<64M,或者內存有128M,但是數據庫與web服務器公用內存
my-huge.cnf               1G<內存<2G,服務器主要運行mysql
my-innodb-heavy-4G.cnf   最大配置安裝,內存至少4G
cd /home/mysql
進入安裝目錄
bin/mysql_install_db --user=mysql
以mysql用戶的身份建立數據表
chown -R root  .
將mysql的主目錄(即/home/mysql)的屬主設爲root用戶。這是官方文檔上的命令,但奇怪的是,如果將mysql的主目錄屬主設成root用戶,在運行了
下面的bin/mysqld_safe --user=mysql &後則不能啓動mysql。問題出在“權限”上,運行chown -R mysql .則可以用下面的命令正常啓動mysql。難
道官方文檔有錯?希望大家一起來探討一下。
chown -R mysql var
將var目錄的屬主設爲mysql用戶
chgrp -R mysql .
將mysql的主目錄的屬主設爲mysql用戶組(注意:和前面的命令不一樣,這個命令是對用戶組進行賦權)
bin/mysqld_safe --user=mysql &
啓動mysql,如果一切正常的話,運行此命令後,不會有任何提示。
bin/mysqladmin -u root password password
修改root用戶的密碼,這裏的root用戶指的是mysql的root用戶,與Linux的root用戶無關。綠色的password就是你需要設置的新密碼,牢記!
bin/mysql -u root -p
如果正常的話,用這個名字可以登錄,在輸入密碼後,出現mysql > 的提示符表明登錄成功。用quit命令可退出
以下命令用於設置mysql開機自動運行
cd mysql-VERSION
再次進入解壓後的目錄,即源碼目錄。
cp support-files/mysql.server /etc/init.d/mysql
將mysql.server這個文件copy到/etc/init.d/目錄下,並更名爲mysql
chmod 755 /etc/init.d/mysql
給/etc/init.d/mysql這個文件賦予“執行”權限
chkconfig --level 345 mysql on
加入到開機自動運行,運行級別爲3 4 5
service mysql restart
重啓mysql服務
Q:爲什麼我用PHP連接Mysql時提示“connect fail:Can't connect to local MySQL server through socket '/home/mysql/tmp/mysql.sock' (13)

A:這是因爲PHP沒能正常的連接到Mysql套接字,即mysql.sock文件。首先,檢查/home/mysql/tmp/目錄下是否有mysql.sock這個文件。如果沒有,可
能是mysql沒有正常啓動;如果有,可能是/home/mysql/tmp/這個目錄的權限不夠,用chmod 755 /home/mysql/tmp可解決此問題。
-----------------------------------------------------------------------------------------------
Mysql的優化設置
打開/etc/my.cnf文件,修改以下設置,如果沒有,可手動添加。調整設置時,請量力而行,這與你的服務器的配置有關,特別是內存大小。以下設置
比較適合於1G內存的服務器,但並不絕對。
#指定索引緩衝區的大小,它決定索引處理的速度,尤其是索引讀的速度。通過檢查狀態值Key_read_requests和Key_reads,可以知道
key_buffer_size設置是否合理。比例key_reads / key_read_requests應該儘可能的低,至少是1:100,1:1000更好(上述狀態值可以使用show
status like 'key_reads'獲得)。key_buffer_size只對MyISAM表起作用。即使你不使用MyISAM表,但是內部的臨時磁盤表是MyISAM表,也要使用該
值。可以使用檢查狀態值created_tmp_disk_tables得知詳情。
key_buffer = 384M
#要求MySQL能有的連接數量。當主要MySQL線程在一個很短時間內得到非常多的連接請求,這就起作用,然後主線程花些時間(儘管很短)檢查連接並且
啓動一個新線程。back_log值指出在MySQL暫時停止回答新請求之前的短時間內多少個請求可以被存在堆棧中。只有如果期望在一個短時間內有很多連
接,你需要增加它,換句話說,這值對到來的TCP/IP連接的偵聽隊列的大小。你的操作系統在這個隊列大小上有它自己的限制。試圖設定back_log高
於你的操作系統的限制將是無效的。默認數值是50
back_log = 200
#一個包的最大尺寸。消息緩衝區被初始化爲net_buffer_length字節,但是可在需要時增加到max_allowed_packet個字節。缺省地,該值太小必能捕
捉大的(可能錯誤)包。如果你正在使用大的BLOB列,你必須增加該值。它應該象你想要使用的最大BLOB的那麼大。
max_allowed_packet = 4M
#允許的同時客戶的數量。增加該值增加 mysqld要求的文件描述符的數量。這個數字應該增加,否則,你將經常看到 Too many connections 錯誤。
默認數值是100
max_connections = 1024
#指定表高速緩存的大小。每當MySQL訪問一個表時,如果在表緩衝區中還有空間,該表就被打開並放入其中,這樣可以更快地訪問表內容。通過檢查
峯值時間的狀態值Open_tables和Opened_tables,可以決定是否需要增加table_cache的值。如果你發現open_tables等於table_cache,並且
opened_tables在不斷增長,那麼你就需要增加table_cache的值了(上述狀態值可以使用show status like 'Open_tables'獲得)。注意,不能盲目
地把table_cache設置成很大的值。如果設置得太高,可能會造成文件描述符不足,從而造成性能不穩定或者連接失敗。
table_cache = 512
#每個線程排序所需的緩衝
sort_buffer_size = 4M
#當一個查詢不斷地掃描某一個表,MySQL會爲它分配一段內存緩衝區。read_buffer_size變量控制這一緩衝區的大小。如果你認爲連續掃描進行得太
慢,可以通過增加該變量值以及內存緩衝區大小提高其性能。
read_buffer_size = 4M
#加速排序操作後的讀數據,提高讀分類行的速度。如果正對遠遠大於可用內存的表執行GROUP BY或ORDER BY操作,應增加read_rnd_buffer_size的值
以加速排序操作後面的行讀取。仍然不明白這個選項的用處……
read_rnd_buffer_size = 8M
#用於REPAIR TABLE。不明白這個選項的用處,百度上找到的設置方向也是五花八門,有128M、64M、32M等,折中選一個。
myisam_sort_buffer_size = 64M
#可以複用的保存在中的線程的數量。如果有,新的線程從緩存中取得,當斷開連接的時候如果有空間,客戶的線置在緩存中。如果有很多新的線程,
爲了提高性能可以這個變量值。通過比較 Connections 和 Threads_created 狀態的變量,可以看到這個變量的作用。
thread_cache_size = 128
#查詢結果緩存。第一次執行某條SELECT語句的時候,服務器記住該查詢的文本內容和它返回的結果。服務器下一次碰到這個語句的時候,它不會再次
執行該語句。作爲代替,它直接從查詢緩存中的得到結果並把結果返回給客戶端。
query_cache_size = 32M
#最大併發線程數,cpu數量*2
thread_concurrency = 2
#設置超時時間,能避免長連接
wait_timeout = 120
#關閉不需要的表類型,如果你需要,就不要加上這個
skip-innodb
skip-bdb
關於mysql的優化設置及檢查,這篇文章很值得一看  http://tech.itdb.cn/n/200607/27/n20060727_30398.shtml
-----------------------------------------------------------------------------------------------
Mysql的安全設置
打開/etc/my.cnf文件,修改以下設置,如果沒有,可手動添加。
#取消文件系統的外部鎖
skip-locking
#不進行域名反解析,注意由此帶來的權限/授權問題
skip-name-resolve
#禁止MySQL中用“LOAD DATA LOCAL INFILE”命令。這個命令會利用MySQL把本地文件讀到數據庫中,然後用戶就可以非法獲取敏感信息了。網絡上流
傳的一些攻擊方法中就有用它的,它也是很多新發現的SQL Injection攻擊利用的手段!
local-infile = 0
#關閉遠程連接,即3306端口。這是MySQL的默認監聽端口。由於此處MySQL只服務於本地腳本,所以不需要遠程連接。儘管MySQL內建的安全機制很嚴
格,但監聽一個TCP端口仍然是危險的行爲,因爲如果MySQL程序本身有問題,那麼未授權的訪問完全可以繞過MySQL的內建安全機制。(你必須確定,
你是否真的不需要遠程連接mysql)
skip-networking
 
修改完my.cnf後,還需要對mysql的用戶名、帳號、及默認數據庫進行調整
首先先登錄mysql,在終端窗口輸入  /home/mysql/bin/mysql -u root -p
然後會提示輸入密碼,輸入正確密碼後,會出現mysql>提示符。
輸入以下命令:
mysql>use mysql;
mysql>update user set user="centos" where user="root";       (將mysql的root用戶名修改成centos,防止root的密碼被暴力破解)
mysql>select Host,User,Password,Select_priv,Grant_priv from user;
mysql>delete from user where user='';                  (刪除user用戶)
mysql>delete from user where password='';               (刪除user用戶)
mysql>delete from user where host='';                     (刪除user用戶)
mysql>drop database test;             (刪除默認的test數據庫)
mysql>flush privileges;                (刷新mysql的緩存,讓以上設置立即生效)
mysql>quit;
爲了使以上優化和安全設置生效,請重啓Mysql服務或Linux。
關於Mysql的安全設置,這篇文章很值得一看
http://www.unixren.com/linux/bencandy.php?fid=21&id=459
-----------------------------------------------------------------------------------------------
phpMyAdmin 2.9.x的安裝與配置
phpMyAdmin是一個用PHP編寫的,可以通過互聯網控制和操作MySQL數據庫的軟件。通過phpMyAdmin可以完全對數據庫進行操作,例如建立、複製/刪除
數據等等。
下載地址: http://www.phpmyadmin.net
目前的最新版本是 2.9.1.1
使用phpMyAdmin的先決條件:Apache(或者是Zeus、IIS)、PHP、MySql必須已經安裝好,並且能夠正常運行。因爲phpMyAdmin是用PHP程序編寫的,所
以,你必須確定你的PHP可以正常連接到MySql。
下面開始安裝:
1、解壓下載到的文件,會得到一個目錄,如 phpMyAdmin-2.9.1.1-all-languages-utf-8-only
2、將這個目錄移動到你的網站根目錄下
mv ./phpMyAdmin-2.9.1.1-all-languages-utf-8-only /var/www/
3、爲了安全起見,建議修改目錄名,這樣只有你自己知道phpMyAdmin的所在位置
mv /var/www/phpMyAdmin-2.9.1.1-all-languages-utf-8-only /var/www/MyphpAdmin
4、修改phpMyAdmin的配置文件
cd /var/www/MyphpAdmin
mv config.sample.inc.php config.inc.php
config.inc.php就是配置文件,需要將config.sample.inc.php更名過來,才能生效。
kate config.inc.php
以$cfg開頭的選項都是可以修改的,根據你的實際情況,參與下面的文檔來修改
$cfg['blowfish_secret'] = 'http'; /* cookie認證的加密算法,隨便填一串字符即可 */
$cfg['Servers'][$i]['auth_type'] = 'cookie'; /* 登錄時的認證方式。本機登錄的設置成config,網絡遠程登錄的需要設置成cookie */
$cfg['Servers'][$i]['host'] = 'localhost'; /* 主機名,可在終端下輸入uname -n查看 */
$cfg['Servers'][$i]['connect_type'] = 'socket'; /* 使用tcp(Mysql在遠程服務器上)或socket(Mysql在本機)方式來連接 */
$cfg['Servers'][$i]['compress'] = true; /* 啓用壓縮以提高速度,如果訪問不正常請改回false(php的版本必須高於4.3.0) */
$cfg['Servers'][$i]['extension'] = 'mysql'; /* 設定phpMyAdmin所支持的數據庫類型 */
$cfg['Servers'][$i]['controluser'] = ''; /* Mysql的root用戶名,不要填寫 */
$cfg['Servers'][$i]['controlpass'] = ''; /* Mysql的root用戶密碼,不要填寫 */
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin'; /* 包含連接表結構的數據庫名稱。不用修改 */
$cfg['Servers'][$i]['bookmarktable'] = 'pma_bookmark'; /* 從 2.2.0 版本開始,phpMyAdmin 允許將經常使用的查詢存儲在書籤中。不用修改
*/
$cfg['Servers'][$i]['relation'] = 'pma_relation'; /* 從 2.2.4 版本開始,您可以定義一個關聯表,它的字段是另一個表(外部表)的主鍵。
不用修改 */
$cfg['Servers'][$i]['table_info'] = 'pma_table_info'; /* 不用修改 */
$cfg['Servers'][$i]['table_coords'] = 'pma_table_coords'; /* 不用修改 */
$cfg['Servers'][$i]['pdf_pages'] = 'pma_pdf_pages'; /* 不用修改 */
$cfg['Servers'][$i]['column_info'] = 'pma_column_info'; /* 不用修改 */
$cfg['Servers'][$i]['history'] = 'pma_history'; /* 不用修改 */
$cfg['UploadDir'] = ''; /* 不用修改 */
$cfg['SaveDir'] = ''; /* 不用修改 */
5、配置完畢後,就可以在瀏覽器裏使用了。
http://192.168.0.1/MyphpAdmin/   (注意大小寫要輸入正確,否則會提示找不到頁面)
如果安裝沒有問題的話,就會出現登錄對話框,輸入MySql的帳號和密碼就可以登陸了。
如果在登陸時出現session_start(): Failed to initialize storage module.
請將php.ini文件中如下兩句進行修改
session.save_handler = files
session.save_path = "/tmp"      (請確認/tmp目錄的讀寫權限)
改成這樣就行了,然後重啓apache。
如果遇到 #2002 - 服務器沒有響應 (or the local MySQL server's socket is not correctly configured) 這類問題
我 google 了一下,發現很多人被這個問題困擾,大家解決方法的思路都是圍繞 mysql.sock。實際上,通過修改 mysql.sock 路徑解決問題的可能性
很小。大部分這類問題是由於 mysql 做了 ip 綁定(bind-address = 127.0.0.1)造成的。這裏只需要將 $cfg['Servers'][$i]['host'] =
'localhost' 改爲 '127.0.0.1' 就可以了。或者改成localhost.localdomain,這樣改的依據是more /etc/hosts
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章