mysql自行編譯
php 是一種易於學習和使用的伺服器端腳本語言。只需要很少的編程知識你就能使用PHP 建立一個真正交互的WEB 站點。本教程並不想讓你完全了解這種語言,只是能使你盡快加入開發動態web站點的行列。我假定你有一些HTML(或者HTML編輯器)的基本知識和一些編程思想。
簡介
PHP 是能讓你生成動態網頁的工具之一。PHP 代表:超文本預處理器(PHP:Hypertext Preprocessor)。PHP 是完全免費的,不用花錢,你可以從PHP 官方站點(http://www.php.net)自由下載。PHP 遵守GNU 公共許可(GPL),在這一許可下誕生了許多流行的軟體諸如linux和Emacs。你可以不受限制的獲得源碼,甚至可以從中加進你自己需要的特色。PHP 在大多數Unix 平台,GUN/Linux和微軟Windows平台上均可以運行。怎樣在Windows環境的PC 機器或Unix機器上安裝PHP 的資料可以在PHP 官方站點上找到,也可以查閱網頁陶吧的「PHP 安裝全攻備」專題文章。安裝過程很簡單。
如果你的機器解決了2000問題,那麼PHP 也一樣沒有千年蟲問題!
歷史
三年前,Rasmus Lerdorf為了創建他的在線簡歷而創造了"個人主頁工具"(Personal Home Page Tools)。這是一種非常簡單的語言。其後越來越多的人們注意到了這種語言並對其擴展提出了各種建議。在許多人的無私奉獻下以及這種語言本身的源代碼自由性質,它演變成為一種特點豐富的語言,而且現在還在成長中。
PHP 雖然很容易學習,但是速度上比mod_perl(植入web伺服器的perl模塊)慢。現在有了可以與mod_perl 速度想媲美的被稱作Zend 的新引擎,而PHP4 就可以充分利用這個引擎。現在,PHP4 正式版已經發布,大家可以到php 的官方站點上去下載。Andy Gutmans 和Zeev Suraki 是Zend 的主要作者。可以去Zend 站點(http://www.zend.com)了解更多。
PHP 的應用在個人性質的web工程中增長顯著。根據Netcraft在1999 年10月的報告,有931122個域和321128 個IP 地址利用PHP 技術。
PHP 的先進之處
應用PHP 有許多好處。當然已知的不利之處在於PHP 由於是開放源碼項目,沒有什麼商業支持,並且由此而帶來的執行速度緩慢(直到PHP4 之前)。但是PHP 的郵件列表很是有用而且除非你正在運行像Yahoo!或者Amazon.com 這樣的極受歡迎的站點,你不會感覺出PHP 的速度與其他的有什麼不同。最起碼我就沒有感覺出來!好了,讓我們來看看PHP 有那些優點:
學習過程
我個人更喜歡PHP 的非常簡單的學習過程。與Java和Perl 不同,你不必把頭埋進100 多頁的文檔中努力學習才可以寫出一個象樣的程序。只要了解一些基本的語法和語言特色,你就可以開始你的PHP 編碼之旅了。之後你在編碼過程中如果遇到了什麼麻煩,還可以再去翻閱相關文檔。
PHP 的語法類似於C,Perl,ASP 或者JSP。對於那些對上述之一的語言較熟悉的人來說,PHP 太簡單了。相反的,如果你對PHP 了解較多,那麼你對於其他幾種語言的學習都很簡單了。
你只需要30分鍾就可以將PHP 的核心語言特點全部掌握,你可能已經非常了解HTML,甚至你已經知道怎樣用編輯設計軟體或者手工來製作好看的WEB 站點。由於PHP 代碼能夠無障礙的添加進你的站點,在你設計和維護站點的同時,你可以很輕松的加入PHP 使得你的站點更加具有動態特性。
資料庫連接
PHP 可以編譯成具有與許多資料庫相連接的函數。PHP 與MySQL是現在絕佳的組合。你還可以自己編寫外圍的函數取間接存取資料庫。通過這樣的途徑當你更換使用的資料庫時,可以輕松的更改編碼以適應這樣的變化。PHPLIB就是最常用的可以提供一般事務需要的一系列基庫。
可擴展性
就像前面說的那樣,PHP 已經進入了一個高速發展的時期。對於一個非程序員來說為PHP 擴展附加功能可能會比較難,但是對於一個PHP 程序員來說並不困難。
面向對象編程
PHP 提供了類和對象。基於web的編程工作非常需要面向對象編程能力。PHP支持構造器、提取類等。
可伸縮性
傳統上網頁的交互作用是通過CGI來實現的。CGI程序的伸縮性不很理想,因為它為每一個正在運行的CGI程序開一個獨立進程。解決方法就是將經常用來編寫CGI程序的語言的解釋器編譯進你的web伺服器(比如mod_perl,JSP)。PHP 就可以以這種方式安裝,雖然很少有人願意這樣以CGI方式安裝它。內嵌的PHP 可以具有更高的可伸縮性。
更多特點
PHP 的開發者們為了更適合web編程,開發了許多外圍的流行基庫,這些庫包含了更易用的層。你可以利用PHP 連接包括Oracle,MS-Access,Mysql在內的大部分資料庫。你可以在蒼蠅上畫圖,編寫程序下載或者顯示e-mail。你甚至可以完成網路相關的功能。最好的是,你可以選擇你的PHP 安裝版本需要哪些功能。引用Nissan 的Xterra 的話來說就是PHP 可以做到你想讓它做到的一切而且無所不能!
MySQL簡介
MySQL是一個廣受Linux社區人們喜愛的半商業的資料庫。 MySQL是可運行在大多數的Linux平台(i386,Sparc,etc),以及少許非Linux甚至非Unix平台。
許可費用
MySQL的普及很大程度上源於它的寬松,除了略顯不尋常的許可費用。MySQL的價格隨平台和安裝方式變化。MySQL的Windows版本(NT和9X)在任何情況下都不免費,而任何Unix變種(包括Linux)的MySQL如果由用戶自己或系統管理員而不是第三方安裝則是免費的,第三方案庄則必須付許可費。
價格
平台安裝方式價格
Windows NT,9X 任何200美元
Unix或Linux 自行安裝免費
Unix或Linux 第三方安裝200美元
需要一個應用組件200美元
可以得到多種支持合同,內容太多不再羅列,最新報價可咨詢MySQL站點。
3、安裝
可以在MySQL站點上獲得大多數主要的軟體包格式(RPM、DBE、TGZ),客戶端庫和各種語言「包裝」(Wrapper)可以分開的RPM格式獲得。RPM格式的安裝沒有多大麻煩,並且無需初始配置。在rc3.d(以RedHat RPM為例)生成一個初始腳本,故MySQL守護進程在多用戶模式下重啟時被啟動運行。MySQL的守護進程(mysqld)消耗很少的內存(在運行RedHat 5.1的奔騰133上,每個守護進程使用500K內存和另外4M共享內存的開銷)並在只有在執行真正的查詢時才裝載到處理器上,這意味著對小型資料庫來說,MySQL可以相當輕松地使用而不會對其他系統功能有太大的影響。
數據類型
欄位支持大量數據類型是件好事。通常的整數、浮點數、字元串和數字均以多種長度表示,並支持變長的BLOB(Binary Large OBject)類型。對整數欄位由自動增量選項,日期時間欄位也能很好的表示。
MySQL與大多數其他資料庫系統不同的是提供兩個相對不常用的欄位類型:ENUM和SET。ENUM是一個枚舉類型,非常類適於Pascal語言的枚舉類型,它允許程序員看到類似於'red、'green'、'blue'的欄位值,而MySQL只將這些值存儲為一個位元組。SET也是從Pascal借用的,它也是一個枚舉類型,但一個單獨欄位一次可存儲多個值,這種存儲多個枚舉值的能力也許不會給你一些印象(並可能威脅第三範式定義),但正確使用SET和CONTAINS關鍵字可以省去很多表連接,能獲得很好的性能提高。
5、SQL兼容性
MySQL包含一些與SQL標准不同的轉變,他們的大多數被設計成是對SQL語言腳本語言的不足的一種補償。然而,另一些擴展確實使 MySQL與眾不同,例如,LINK子句搜索是自動地忽略大小寫的。MySQL 也允許用戶自定義的SQL函數,換句話說,一個程序員可以編寫一個函數然後集成到MySQL中,並且其表現的與任何基本函數如SUM()或AVG ()沒有什麼不同。函數必須被編譯道一個共享庫文件中(.so文件),然後用一個LOAD FUNCTION命令裝載。
它也缺乏一些常用的SQL功能,沒有子選擇(在查詢中的查詢)。視圖(View)也沒了。當然大多數子查詢可以用簡單的連接(join)子句重寫,但有時用兩個嵌套的查詢思考問題比一個大連接容易。同樣,視圖僅僅為程序員隱蔽where子句,但這正是程序員們期望的另一種便利。
存儲過程和觸發器
MySQL沒有一種存儲過程(Stored Procere)語言,這是對習慣於企業級資料庫的程序員的最大限制。多語句SQL命令必須通過客戶方代碼來協調,這種情形是藉助於相當健全的查詢語言和賦予客戶端鎖定和解鎖表的能力,這樣才允許的多語句運行。
7、參考完整性(Referential Integrity-RI)
MySQL的主要的缺陷之一是缺乏標準的RI機制;然而,MySQL的創造者也不是對其用戶的願望置若罔聞,並且提供了一些解決辦法。其中之一是支持唯一索引。Rule限制的缺乏(在給釘欄位域上的一種固定的范圍限制)通過大量的數據類型來補償。不簡單地提供檢查約束(一個欄位相對於同一行的另一個欄位的之值的限制)、外部關鍵字和經常與RI相關的「級聯刪除」功能。有趣的是,當不支持這些功能時,SQL分析器容忍這些語句的句法。這樣做目的是易於移植資料庫到MySQL中。這是一個很好的嘗試,並且它確實未來支持該功能留下方便之門;然而,那些沒有仔細閱讀文檔的的人可能誤以為這些功能實際上是存在的。
7、安全性
自始至終我對MySQL最大的抱怨是其安全系統,它唯一的缺點是復雜而非標准,另外只有到調用mysqladmin來重讀用戶許可權時才發生改變。通常的SQL GRANT/REVOKE 語句到最近的版本才被支持,但是至少他們現在有了。 MySQL的編寫者廣泛地記載了其特定的安全性系統,但是它確實需要一條可能是別無它法的學習過程。
apache+php+mysql是最好的搭配,也是搭配企業網路的最好的搭配、
如果學php,那麼你可以在網路中找尋到很多的教程的,其實學任何的程序最好的就是寫,不停的寫不停的看。
作網站當然最好的是dreamweaver,它可以寫很多的代碼的,也可以設計!
❷ 如何編譯 mysql的存儲過程
簡單的說,就是一組SQL語句集,功能強大,可以實現一些比較復雜的邏輯功能,類似於JAVA語言中的方法;
ps:存儲過程跟觸發器有點類似,都是一組SQL集,但是存儲過程是主動調用的,且功能比觸發器更加強大,觸發器是某件事觸發後自動調用;
❸ mysql在xml文件中的編譯
1,輸出資料庫版本變數為xml格式
Shell> mysql -X -uroot -proot -e "use test; show variables like '%version%';"
參數X表示生成xml格式的輸出 , 參數e表示執行後面的命令
<?xml version="1.0"?>
<resultset statement="show variables like '%version%'">
<row>
<field name="Variable_name">protocol_version</field>
<field name="Value">10</field>
</row>
<row>
<field name="Variable_name">version</field>
<field name="Value">5.0.22-community-nt-log</field>
</row>
<row>
<field name="Variable_name">version_comment</field>
<field name="Value">MySQL Community Edition (GPL)</field>
</row>
<row>
<field name="Variable_name">version_compile_machine</field>
<field name="Value">ia32</field>
</row>
<row>
<field name="Variable_name">version_compile_os</field>
<field name="Value">Win32</field>
</row>
</resultset>
my test:
mysql -u ccc bank -e "select * from person;"
mysql -X -u ccc bank -e "select * from person;"
*********************************************************************
2,導出表數據到xml文件
Shell> mysql -X -uroot -proot -e "use test; select * from test;" > ./a.xml
Shell> more a.xml
<?xml version="1.0"?>
<resultset statement="select * from test">
<row>
<field name="id">111</field>
</row>
<row>
<field name="id">10</field>
</row>
<row>
<field name="id">1</field>
</row>
<row>
<field name="id">110</field>
</row>
</resultset>
my test:
mysql -u ccc bank -e "select * from person;" > ./mysql_noxml.txt
mysql -X -u ccc bank -e "select * from person;" > ./mysql_xml.xml
*********************************************************************
3,換一種方式導出表結構和內容,其中第一個db_name是資料庫名,第二個test是表名
Shell> mysqlmp --xml -uroot -proot db_name test
<?xml version="1.0"?>
<mysqlmp xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<database name="db_name">
<table_structure name="test">
<field Field="id" Type="int(11)" Null="YES" Key="" Extra="" />
<options Name="test" Engine="InnoDB" Version="10" Row_format="Compact" Rows="4" Avg_row_length="4096" Data_length="16384" Max_data_length="0" Index_length="0" Data_free="0" Create_time
="2008-09-04 02:45:12" Collation="utf8_general_ci" Create_options="" Comment="InnoDB free: 11264 kB" />
</table_structure>
<table_data name="test">
<row>
<field name="id">111</field>
</row>
<row>
<field name="id">10</field>
</row>
<row>
<field name="id">1</field>
</row>
<row>
<field name="id">110</field>
</row>
</table_data>
</database>
</mysqlmp>
my tests:
Shell> mysqlmp --xml -u ccc bank person
*********************************************************************
4,導入xml文件的內容到資料庫表,這里主要用到了load_file()函數
mysql> create table xmlt(
-> id int ,
-> doc blob
-> );
mysql> insert into xmlt values(1,load_file('/home/a.xml') );
mysql> select * from xmlt;
+------+--------------------------------------
----------------------------------------------
| id | doc
+------+--------------------------------------
----------------------------------------------
| 1 | <?xml version="1.0"?>
<resultset statement="select * from test">
<row>
<field name="id">111</field>
</row>
<row>
<field name="id">10</field>
</row>
<row>
<field name="id">1</field>
</row>
<row>
<field name="id">110</field>
</row>
</resultset>
後記:由此類推還可以使用存儲過程的方式將xml數據導入和導出
❹ mysql怎麼編譯
這問題提的
❺ 如何在Windows下編譯或調試MySQL
用vs code 就可以了。
Visual Studio Code
Visual Studio Code(簡稱VS Code)是由微軟開發的,同時支持Windows、Linux和macOS操作系統的開源文本編輯器。它支持調試,內置了Git 版本控制功能,同時也具有開發環境功能,例如代碼補全(類似於IntelliSense)、代碼片段、代碼重構等。該編輯器支持用戶自定義配置,例如改變主題顏色、鍵盤快捷方式、編輯器屬性和其他參數,還支持擴展程序並在編輯器中內置了擴展程序管理的功能。
安裝LLDB
LLDB是LLVM編譯器的一部分,推薦使用Homebrew安裝LLVM工具集,不建議使用系統自帶的LLDB,安裝前必須先創建證書否則無法安裝,步驟如下:
創建完成後,開始安裝LLVM
brew install llvm --with-python@2--with-lldb
安裝插件
VS Code自帶有debug功能,這里我推薦使用LLDB Debugger插件。
接下來,為項目配置調試參數。
配置調試參數
使用VS Code打開MySQL源碼目錄,在側邊欄選擇debug欄目,添加配置,program輸入需要調試的程序路徑,這里選擇你編譯好的mysqld路徑,args輸入程序啟動所需的參數,通常會指定mysqld的配置文件。這樣就配置好了,是不是很簡單。
啟動調試
點擊啟動按鈕,啟動後如果沒有設置斷點會mysqld會正常啟動,如果觸發了斷點會如下圖顯示。
整個調試窗口基本分為六部分,所有的調試操作都在這里完成:
1:顯示變數信息
2:設置重點關注的變數
3:顯示調用棧信息
4:設置斷點信息,在代碼行號前也可以設置斷點
5:代碼顯示區域,上方是調試按鈕,包括 continue/stepover/step in/step out/restart/stop
6:調試終端輸入輸出區
斷點設置
在代碼行號前點擊即可在該行為設置斷點,也可以根據條件設置斷點。以設置ConditionalBreakpoint為例,當程序啟動後會按照你設置的條件表達式判斷是否觸發斷點。
Conditional Breakpoint這種方式用在目標變數達到某條件時觸發斷點,其餘則跳過繼續執行。比如:設置變數等於目標表名時觸發斷點,其餘表則跳過,相對函數名斷點省去很多手工跳過操作。
遠程調試
假如你想調試遠程Linux伺服器上的MySQL上面的方法就不合適了,這時需要遠程調試。lldb和gdb都支持遠程調試,這里以lldb為例。
需要先在遠程主機上安裝lldb,使用yum安裝,源地址在這里http://mirror.centos.org/centos/7/sclo/x86_64/rh
remote$ yum install -y llvm-toolset-7
安裝完成後,啟動lldb-server
remote$ /opt/rh/llvm-toolset-7/root/usr/bin/lldb-serverplatform --listen"*:9191"--server
接下來,在VS Code調試界面中新增配置項。
{
"type":"lldb",
"request":"attach",
"name":"Remote attach",
"program":"~/mysql5626/usr/local/mysql/bin/mysqld",
"pid":"<target_pid>",
"initCommands": [
"platform select remote-linux",
"platform connect connect://<remote_host>:9191"
],
"sourceMap": {
"/export/home/pb2/build/sb_0-15908961-1436910670.17/mysql-5.6.26":"/Users/hongbin/workbench/mysql-server"
}
},
program:本機也要拷貝一份目標程序,載入
pid:填寫遠程主機的mysqld進程id
sourceMap:填寫mysqld編譯的代碼路徑與本機代碼庫路徑的映射,這樣調試時代碼才可以和程序關聯在一起看
注意:記得調試前將代碼切換到與目標程序版本一致的branch
❻ linux 如何編譯mysql
你是希望源代碼安裝mysql,用於apache php環境的。見下面一定好用,安裝目錄可以定製,下面/export/mysql是舉例,自己可以改。
1解壓安裝包 tar –zxvf mysql-5.0.32.tar.gz
2創建安裝目錄
mkdir –p /export/mysql/var
3編輯安裝包
在mysql-5.0.32目錄下,執行
./configure --prefix=/export/mysql \
--with-charset=gbk \
--localstatedir=/export/mysql/var
4編譯安裝
就在當前目錄下命令 :
make
make install
❼ cmake怎樣編譯安裝mysql
用cmake的應該是mysql5.5的版本,之前都是用make的。我安裝的使用應該沒有使用過.(點)。linux下作為參數傳遞給命令的.(點)一般代表當前目錄
❽ linux怎麼編譯安裝mysql
不同linux版本,安裝不同版本的mysql方法各不相同,下面以CentOS 6.5編譯安裝MySQL 5.6.16介紹:
一.准備工作
1.yum安裝各個依賴包
[root@WebServer ~]# yum -y install gcc gcc-devel gcc-c++ gcc-c++-devel autoconf* automake* zlib* libxml* ncurses-devel ncurses libgcrypt* libtool* cmake openssl openssl-devel bison bison-devel unzip
2.新建mysql組和用戶
[root@WebServer ~]# groupadd mysql
[root@WebServer ~]# useradd -g mysql -s /sbin/nologin mysql
3.目錄准備
[root@WebServer ~]# mkdir -p /webserver/mysql/etc
[root@WebServer ~]# mkdir -p /webserver/mysql/data
[root@WebServer ~]# mkdir -p /webserver/mysql/tmp
[root@WebServer ~]# chown -R mysql.mysql /webserver/mysql
4.解壓MySQL並進入安裝目錄
[root@WebServer ~]# tar zxvf mysql-5.6.16.tar.gz
[root@WebServer ~]# cd mysql-5.6.16
二.編譯並安裝
1.編譯MySQL
[root@WebServer mysql-5.6.16]# cmake -DCMAKE_INSTALL_PREFIX=/webserver/mysql \
> -DSYSCONFDIR=/webserver/mysql/etc \
> -DMYSQL_DATADIR=/webserver/mysql/data \
> -DMYSQL_TCP_PORT=3306 \
> -DMYSQL_UNIX_ADDR=/webserver/mysql/tmp/mysqld.sock \
> -DMYSQL_USER=mysql \
> -DEXTRA_CHARSETS=all \
> -DWITH_READLINE=1 \
> -DWITH_SSL=system \
> -DWITH_EMBEDDED_SERVER=1 \
> -DENABLED_LOCAL_INFILE=1 \
> -DWITH_INNOBASE_STORAGE_ENGINE=1 \
> -DENABLE_DOWNLOADS=1
2.如果出現以下錯誤
則需要
[root@WebServer mysql-5.6.16]# cd source_downloads/
[root@WebServer source_downloads]# unzip gmock-1.6.0.zip
[root@WebServer source_downloads]# ./configure
[root@WebServer source_downloads]# make
[root@WebServer source_downloads]# cd ..
然後刪除mysql-5.6.16目錄下的CMakeCache.txt重新使用cmake進行編譯安裝
2.安裝
[root@WebServer mysql-5.6.16]# make && make install
編譯過程會比較漫長,編譯時間取決於機器的性能
三.MySQL配置
1.客戶端庫文件的鏈接(未執行此步驟的話,在PHP編譯時會提示找不到MySQL文件)
[root@WebServer mysql-5.6.16]# ln -s /webserver/mysql/lib/libmysqlclient.so.18 /usr/lib64/libmysqlclient.so.18
ps:我使用的是64位CentOS,如果使用的是32位請使用ln -s /webserver/mysql/lib/libmysqlclient.so.18 /usr/lib/libmysqlclient.so.18
2.MySQL啟動文件的配置
[root@WebServer mysql-5.6.16]# cp support-files/mysql.server /etc/init.d/mysqld
[root@WebServer mysql-5.6.16]# chmod +x /etc/init.d/mysqld
[root@WebServer mysql-5.6.16]# vim /etc/init.d/mysqld
basedir=/webserver/mysql
datadir=/webserver/mysql/data
//修改以上這2行的路徑即可
3.設置MySQL配置文件
[root@WebServer mysql-5.6.16]# cp support-files/my-default.cnf /webserver/mysql/etc/my.cnf
[root@WebServer mysql-5.6.16]# rm -rf /etc/my.cnf
[root@WebServer mysql-5.6.16]# ln -s /webserver/mysql/etc/my.cnf /etc/my.cnf
4.初始化資料庫
[root@WebServer mysql-5.6.16]# cd /webserver/mysql
[root@WebServer mysql]# ./scripts/mysql_install_db --user=mysql --basedir=/webserver/mysql --datadir=/webserver/mysql/data
5.鏈接MySQL命令(這一步可以讓我們方便很多,可以不用寫出命令的路徑,也可以寫入/etc/profile的PATH中)
[root@WebServer ~]# cd /usr/sbin
[root@WebServer sbin]# ln -s /webserver/mysql/bin/* .
6.啟動MySQL並設置為開機啟動
[root@WebServer sbin]# service mysqld start ;chkconfig mysqld on
Starting MySQL.. SUCCESS!
7.設置MySQL root用戶的密碼
[root@WebServer ~]# mysqladmin -u root password 123456
這里將MySQL的root密碼設置為123456,強烈不建議將資料庫的密碼設的簡單
8.刪除用戶密碼為空的用戶
[root@WebServer ~]# mysql -u root -p
Enter password:
mysql> use mysql;
mysql> select Host,User,Password from user;
+-----------+------+-------------------------------------------+
| Host | User | Password |
+-----------+------+-------------------------------------------+
| localhost | root | * |
| webserver | root | |
| 127.0.0.1 | root | |
| ::1 | root | |
| localhost | | |
| webserver | | |
+-----------+------+-------------------------------------------+
6 rows in set (0.00 sec)
mysql> delete from user where password="";
Query OK, 5 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> select Host,User,Password from user;
+-----------+------+-------------------------------------------+
| Host | User | Password |
+-----------+------+-------------------------------------------+
| localhost | root | * |
+-----------+------+-------------------------------------------+
1 row in set (0.00 sec)
mysql> exit;
完畢。
❾ linux 如何編譯安裝mysql
使用binary進行安裝,文件名mysql-standard-5.0.18-linux-i686-glibc23.tar.gz
[1]將上述文件解壓到某處,並將MySQL所以目錄名改為mysql,結果應如/home/xxx/mysql
[2]根據mysql目錄下的INSTALL-BINARY文件來進行安裝
// 加用戶組mysql,以及用戶mysql;該命令無需修改
shell> groupadd mysql
shell> useradd -g mysql mysql
// 以下三步的主要目的是為MySQL解壓目錄做一個鏈接,放到usr/local目錄中
// 首先是進入/usr/local目錄;該命令無需修改
shell> cd /usr/local
// 這一步可以不需要,因為已經解壓了
shell> gunzip < /PATH/TO/MYSQL-VERSION-OS.tar.gz | tar xvf -
// 做一個到/home/xxx/mysql的鏈接,放在/usr/local中,該鏈接的名字是mysql。
// 該命令修改為ln -s /home/xxx/mysql mysql
shell>
ln -s FULL-PATH-TO-MYSQL-VERSION-OS mysql
// 進入/home/xxx/mysql目錄,/usr/local/mysql是到/home/xxx/mysql的鏈接
shell>
cd mysql
// 對MySQL進行初始化(如果以前已經安裝過MySQL,這一步可以簡略);該命令無需修改
shell> scripts/mysql_install_db --user=mysql
// 變更所有權;該命令無需修改
shell> chown -R root .
shell> chown -R mysql data
shell> chgrp -R mysql .
// 啟動MySQL伺服器;該命令無需要修改
shell> bin/mysqld_safe --user=mysql &
[3]進入MySQL應用環境
進入mysql目錄下的bin目錄,運行命令./mysql -u root
-p,此時將出現password:(要求輸入密碼),但默認情況下root用戶沒有密碼,所以回車即可。此時將進入MySQL界面,當然仍然只是個命令行窗口而以。
[4]簡單使用MySQL
在MySQL環境中運行命令show databases;,將會顯示已經有的資料庫(如test);運行命令use test,將進入test資料庫...
注意:如果在運行./mysql -u root -p之後,報
Can't connect to local MySQL server through socket '/tem/mysql.sock'
的錯誤,那麼可能有以下幾種情況:
[1]mysql.sock並不在/tmp目錄下,而是在其它某個目錄下(如,/var/lib/mysql目錄)。這時只需要將這個mysql.sock做鏈接到/tmp目錄下,運行命令:
ln -s MYSQL.SOCK_PATH /tmp/mysql.sock
[2]在同學的筆記本的Linux中,會在/tmp下生成mysql.sock,但重新啟動Linux後,該文件被刪除。這時也可以用情況2中的解決方法,或者每次都運行命令:./mysqld_safe --user=mysql &
❿ 怎麼在linux上安裝mysql
1. 運行平台:CentOS 6.3 x86_64,基本等同於RHEL 6.3
2. 安裝方法:
安裝MySQL主要有兩種方法:一種是通過源碼自行編譯安裝,這種適合高級用戶定製MySQL的特性,這里不做說明;另一種是通過編譯過的二進制文件進行安裝。二進制文件安裝的方法又分為兩種:一種是不針對特定平台的通用安裝方法,使用的二進制文件是後綴為.tar.gz的壓縮文件;第二種是使用RPM或其他包進行安裝,這種安裝進程會自動完成系統的相關配置,所以比較方便。
3. 下載安裝包:
a. 官方下載地址:
http://dev.mysql.com/downloads/mysql/#downloads
或鏡像文件下載:
http://dev.mysql.com/downloads/mirrors.html
2. 下載文件(根據操作系統選擇相應的發布版本):
a. 通用安裝方法
mysql-5.5.29-linux2.6-x86_64.tar.gz
b. RPM安裝方法:
MySQL-server-5.5.29-2.el6.x86_64.rpm
MySQL-client-5.5.29-2.el6.x86_64.rpm
4. 通用安裝步驟
a. 檢查是否已安裝,grep的-i選項表示匹配時忽略大小寫
[root@localhost JavaEE]#rpm -qa|grep -i mysql
mysql-libs-5.1.61-4.el6.x86_64
*可見已經安裝了庫文件,應該先卸載,不然會出現覆蓋錯誤。注意卸:載時使用了--nodeps選項,忽略了依賴關系:
[root@localhost JavaEE]#rpm -e mysql-libs-5.1.61-4.el6.x86_64 --nodeps
b. 添加mysql組和mysql用戶,用於設置mysql安裝目錄文件所有者和所屬組。
[root@localhost JavaEE]#groupadd mysql
[root@localhost JavaEE]#useradd -r -g mysql mysql
*useradd -r參數表示mysql用戶是系統用戶,不可用於登錄系統。
c. 將二進制文件解壓到指定的安裝目錄,我們這里指定為/usr/local
[root@localhost ~]# cd/usr/local/
[root@localhost local]#tar zxvf /path/to/mysql-5.5.29-linux2.6-x86_64.tar.gz
*加壓後在/usr/local/生成了解壓後的文件夾mysql-5.5.29-linux2.6-x86_64,這名字太長,我們為它建立一個符號鏈接mysql,方便輸入。
[root@localhost local]#ln -s mysql-5.5.29-linux2.6-x86_64 mysql
d. /usr/local/mysql/下的目錄結構
Directory
Contents of Directory
bin
Client programs and the mysqld server
data
Log files, databases
docs
Manual in Info format
man
Unix manual pages
include
Include (header) files
lib
Libraries
scripts
mysql_install_db
share
Miscellaneous support files, including error messages, sample configuration files, SQL for database installation
sql-bench
Benchmarks
e. 進入mysql文件夾,也就是mysql所在的目錄,並更改所屬的組和用戶。
[root@localhost local]#cd mysql
[root@localhost mysql]#chown -R mysql .
[root@localhost mysql]#chgrp -R mysql .
f. 執行mysql_install_db腳本,對mysql中的data目錄進行初始化並創建一些系統表格。注意mysql服務進程mysqld運行時會訪問data目錄,所以必須由啟動mysqld進程的用戶(就是我們之前設置的mysql用戶)執行這個腳本,或者用root執行,但是加上參數--user=mysql。
[root@localhost mysql]scripts/mysql_install_db --user=mysql
*如果mysql的安裝目錄(解壓目錄)不是/usr/local/mysql,那麼還必須指定目錄參數,如
[root@localhost mysql]scripts/mysql_install_db --user=mysql \
--basedir=/opt/mysql/mysql \
--datadir=/opt/mysql/mysql/data
*將mysql/目錄下除了data/目錄的所有文件,改回root用戶所有,mysql用戶只需作為mysql/data/目錄下所有文件的所有者。
[root@localhost mysql]chown -R root .
[root@localhost mysql]chown -R mysql data
g. 復制配置文件
[root@localhost mysql] cp support-files/my-medium.cnf /etc/my.cnf
h. 將mysqld服務加入開機自啟動項。
*首先需要將scripts/mysql.server服務腳本復制到/etc/init.d/,並重命名為mysqld。
[root@localhostmysql] cp support-files/mysql.server /etc/init.d/mysqld
*通過chkconfig命令將mysqld服務加入到自啟動服務項中。
[root@localhost mysql]#chkconfig --add mysqld
*注意服務名稱mysqld就是我們將mysql.server復制到/etc/init.d/時重命名的名稱。
*查看是否添加成功
[root@localhost mysql]#chkconfig --list mysqld
mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off
i. 重啟系統,mysqld就會自動啟動了。
*檢查是否啟動
[root@localhost mysql]#netstat -anp|grep mysqld
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 2365/mysqld
unix 2 [ ACC ] STREAM LISTENING 14396 2365/mysqld /tmp/mysql.sock
*如果不想重新啟動,那可以直接手動啟動。
[root@localhost mysql]#service mysqld start
Starting MySQL.. SUCCESS!
j. 運行客戶端程序mysql,在mysql/bin目錄中,測試能否連接到mysqld。
[root@localhost mysql]#/usr/local/mysql/bin/mysql
Welcome to the MySQLmonitor. Commands end with ; or \g.
Your MySQL connection idis 2
Server version:5.5.29-log MySQL Community Server (GPL)
Copyright (c) 2000, 2012,Oracle and/or its affiliates. All rights reserved.
Oracle is a registeredtrademark of Oracle Corporation and/or its affiliates. Other names may betrademarks of their respective owners.
Type 'help;' or '\h' forhelp. Type '\c' to clear the current input statement.
mysql> quit
Bye
*此時會出現mysql>命令提示符,可以輸入sql語句,輸入quit或exit退出。為了避免每次都輸入mysql的全路徑/usr/local/mysql/bin/mysql,可將其加入環境變數中,在/etc/profile最後加入兩行命令:
MYSQL_HOME=/usr/local/mysql
export PATH=$PATH:$MYSQL_HOME/bin
這樣就可以在shell中直接輸入mysql命令來啟動客戶端程序了
[root@localhost mysql]#mysql
Welcome to the MySQLmonitor. Commands end with ; or \g.
Your MySQL connection idis 3
Server version:5.5.29-log MySQL Community Server (GPL)
Copyright (c) 2000, 2012,Oracle and/or its affiliates. All rights reserved.
Oracle is a registeredtrademark of Oracle Corporation and/or its
affiliates. Other namesmay be trademarks of their respective
owners.
Type 'help;' or '\h' forhelp. Type '\c' to clear the current input statement.
mysql>
5. RPM安裝步驟
a. 檢查是否已安裝,grep的-i選項表示匹配時忽略大小寫
[root@localhost JavaEE]#rpm -qa|grep -i mysql
mysql-libs-5.1.61-4.el6.x86_64
可見已經安裝了庫文件,應該先卸載,不然會出現覆蓋錯誤。注意卸載時使用了--nodeps選項,忽略了依賴關系:
[root@localhost JavaEE]#rpm -e mysql-libs-5.1.61-4.el6.x86_64 --nodeps
2. 安裝MySQL的伺服器端軟體,注意切換到root用戶:
[root@localhost JavaEE]#rpm -ivh MySQL-server-5.5.29-2.el6.x86_64.rpm
安裝完成後,安裝進程會在Linux中添加一個mysql組,以及屬於mysql組的用戶mysql。可通過id命令查看:
[root@localhost JavaEE]#id mysql
uid=496(mysql)gid=493(mysql) groups=493(mysql)
MySQL伺服器安裝之後雖然配置了相關文件,但並沒有自動啟動mysqld服務,需自行啟動:
[root@localhost JavaEE]#service mysql start
Starting MySQL.. SUCCESS!
可通過檢查埠是否開啟來查看MySQL是否正常啟動:
[root@localhost JavaEE]#netstat -anp|grep 3306
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 34693/mysqld
c. 安裝MySQL的客戶端軟體:
[root@localhost JavaEE]#rpm -ivh MySQL-client-5.5.29-2.el6.x86_64.rpm
如果安裝成功應該可以運行mysql命令,注意必須是mysqld服務以及開啟:
[root@localhost JavaEE]#mysql
Welcome to the MySQLmonitor. Commands end with ; or \g.
Your MySQL connection idis 1
Server version: 5.5.29MySQL Community Server (GPL)
Copyright (c) 2000, 2012,Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademarkof Oracle Corporation and/or its affiliates. Other names may be trademarks oftheir respective owners.
Type 'help;' or '\h' forhelp. Type '\c' to clear the current input statement.
mysql>
d. RPM安裝方式文件分布
Directory
Contents of Directory
/usr/bin
Client programs and scripts
/usr/sbin
The mysqld server
/var/lib/mysql
Log files, databases
/usr/share/info
Manual in Info format
/usr/share/man
Unix manual pages
/usr/include/mysql
Include (header) files
/usr/lib/mysql
Libraries
/usr/share/mysql
Miscellaneous support files, including error messages, character set files, sample configuration files, SQL for database installation
/usr/share/sql-bench
Benchmarks