• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • MySQL數據庫服務器的配置

    發表于:2007-07-02來源:作者:點擊數: 標簽:
    隨著互聯網的發展和自由軟件軟件的日益活躍,越來越多的人開始將各種數據庫應用于自己的 網絡 應用中。于是,各種各樣的數據庫系統出現在互聯網的舞臺上,最常見的數據庫有O@#Reilly Network的MySQL 和PostgreSQL Inc的 PostgreSQL,在互聯網有著不同的應用

        隨著互聯網的發展和自由軟件軟件的日益活躍,越來越多的人開始將各種數據庫應用于自己的網絡應用中。于是,各種各樣的數據庫系統出現在互聯網的舞臺上,最常見的數據庫有O@#Reilly Network的MySQL 和PostgreSQL Inc的 PostgreSQL,在互聯網有著不同的應用和用戶群。此外象oracle、sybase、infomix等大型數據庫也開始漸漸向Linux平臺移植,使得Linux下的數據庫日益呈現多樣化和專業化的趨勢。

     

    1.為什么要使用數據庫

    為了建立交互站點,你需要使用數據庫來存儲來自訪問者的信息。例如,你要建立一個 職業介紹服務的站點,你就需要存儲諸如個人簡歷,所感興趣的工作等等這樣的信息。 創建動態網頁也需要使用數據庫,如果你想顯示符合來訪者要求的最好的工作,你就需要從數據庫中取出這份工作的信息。你將會發現,在許多情況下需要使用數據庫。


    2.如何取得數據庫軟件


    現下流行的Linux數據庫基本都可以通過INTERNET下載的到,你可以從以下幾個地方下載MySql數據庫:
    Mysql:到本書出版為止,mysql的最新版本號是3.23.22

    3. mysql的安裝和使用:

    3.1.安裝前的準備工作:

    MySQL需要至少Linux 2.0。
    MySQL的Perl支持要求Perl 5.004_03或更新。
    Mysql在Linux下的安裝有兩種:1) 源碼方式的安裝,取得mysql的安裝tar包后自行編譯安裝;2〕二進制方式的安裝,用MYSQL編譯好的二進制文件安裝,主要是以RPM的形式進行安裝。
    二進制分發通過在你選擇的安裝地點(典型的"/usr/local/mysql")解壓縮來安裝,并且在該處創建下列目錄(表.1):


    表.1


    目錄 目錄的內容
    "bin" 客戶程序和mysqld服務器
    "data" 日志文件, 數據庫
    "include" 包含(頭)文件
    "lib" 庫文件
    "scripts" mysql_install_db
    "share/mysql " 錯誤消息文件
    "sql-bench" 基準程序

    源代碼分發在你配置并編譯后進行安裝。缺省地,安裝步驟將文件安裝在"/usr/local"下的下<SPAN onmouseup="DFWYExplainerObj.Window = self; DFWYExplainerObj.ShowExplainer(@#normal@#);return false;" title="常規詞語,單擊這里可以查看解釋" style="BACKGROUND-IMAGE: url(C:PROGRA~1!SUNVDFKC3000
    ormmark.gif); BACKGROUND-POSITION: left bottom; BACKGROUND-REPEAT: repeat-x; CURSOR: hand" )>列子</SPAN>目錄(表.2):


    表.2


    目錄 目錄的內容
    "bin" 客戶程序和腳本
    "include/mysql" 包含(頭)文件
    "info" Info格式的文檔
    "lib/mysql" 庫文件
    "libexec" mysqld服務器
    "share/mysql" 錯誤消息文件
    "sql-bench" 基準程序和crash-me測試
    "var" 數據庫和日志文件。

    在一個安裝目錄內,源代碼安裝的布局在下列方面不同于二進制安裝:

    * mysqld服務器被安裝在"libexec"目錄而不是"bin"目錄內。
    * 數據目錄是"var"而非"data"。
    * mysql_install_db被安裝在"/usr/local/bin"目錄而非"/usr/local/mysql/scripts"內。
    * 頭文件和庫目錄是"include/mysql"和"lib/mysql"而非"include"和"lib"。

    3.2.用mysql的源碼包進行安裝

    你需要下列工具構造并安裝MySQL源代碼:

    * GNU gunzip解壓縮該分發。
    * 一個合適的tar解包分發。GNU tar已知可以工作。
    * 一個能運行的ANSI C++編譯器。gcc> = 2.8.1 、egcs> = 1.0.2 、SGI C++和SunPro C++是一些已知能工作編譯器。 當使gcc用時,不需要libg++。gcc2.7.x 有一個bug,使得它可能不能編譯一些完全合法的C++文件,例如"sql/sql_base.cc"。如果你僅有gcc2.7.x,你必須升級gcc才能編譯MySQL。
    * 一個優秀的make程序。GNU make總是被推薦且有時必須。如果你有問題,我們推薦試一試GNU make3.75或更新。
    * 你要擁有系統的root權限。

    3.2.1.快速安裝:

    其實mysql源碼是個非常適合linux初學者安裝的數據庫,他的快速安裝極為簡便,在默認情況下mysql是安裝在/usr/local/下的,包括他的BIN文件以及數據結構等。

    # tar zxvf tarfile.tar.gz
    # cd mysql_src_dir
    #./configure
    #make
    #make install
    #make clean

    這樣的快速安裝方法就把mysql安裝成系統的默認狀態

    3.2.2.配置安裝:

    用上述的方法對源碼解包后,就可以根據自己的需要利用configure對Mysql進行安裝配置了

    1.Configure選項:

    configure腳本給你一個很大的控制權來如何配置你的MySQL。你使用configure命令行的選項進行。你也可以用正確的環境變量作用于configure。對于一個由configure支持的選擇列表,運行這個命令:
    #./configure -- help

    一些更常用的configure選項見下面的描述:

    * 只編譯MySQL客戶庫和客戶程序而不是服務器,使用--without-server選項:

    # ./configure --without-server

    如果你沒有一個 C++ 編譯器,mysql將不編譯(有一個客戶程序需要C++)。在這種情況下,你可以去掉configure里面測試C++編譯器的代碼,然后運行帶有 --without-server選項的./configure。編譯步驟步將仍然嘗試構造mysql,但是你可以忽略任何關于" mysql.cc "的警告。(如果make停止,試試make -k告訴它即使出錯繼續剩下的構造步驟)。

    * 如果你不想要位于"/usr/local/var"目錄下面的日志(log)文件和數據庫,使用類似于下列configure命令的一個:

    * #./configure --prefix=/usr/local/mysql
    * #./configure --prefix=/usr/local --localstatedir=/usr/local/mysql/data

    第一個命令改變安裝前綴以便任何東西被安裝在"/usr/local/mysql"下面而非缺省的“/usr/local”。第二個命令保留缺省安裝前綴,但是覆蓋了數據庫目錄缺省目錄(通常是"/usr/local/var")并且把它改/usr/local/mysql/data.

    * 如果你正在使用Linux并且你想要MySQL的套接字位于缺省地點以外的某個地方(通常在目錄"/tmp"或"/var/run",使用象這樣的configure的命令:

    #./configure --with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock

    注意給出的文件必須是一個絕對路徑!

    * 如果你想編譯靜態鏈接程序運行configure:

    * #./configure --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static

    * 如果你正在使用gcc并且沒有安裝libg++或libstdc++,你可以告訴configure使用gcc作為C++編譯器:

    #CC=gcc CXX=gcc ./configure
    當你使用時gcc作為C++編譯器是,它將不試圖鏈接libg++或libstdc++。如果構造失敗并且產生有關編譯器或鏈接器的錯誤,不能創建共享庫"libmysqlclient.so.#"("#"是一個版本號), 你可以通過為configure指定--disable-shared選項來解決此問題。在這種情況下,configure將不構造一個共享libmysqlclient.so.#庫。

    * 你可以設置MySQL對于非NULL的列不使用DEFAULT列值(即,不允許列是NULL)。這導致INSERT語句產生一個錯誤,除非你明確地為所有要求非NULL值的列指定值。為了禁止使用缺省值,這樣運行configure:
    # CXXFLAGS=-DDONT_USE_DEFAULT_FIELDS ./configure

    * 缺省地,MySQL使用ISO-8859-1(Latin1)字符集。為了改變缺省設置,使用--with-charset選項目:

    #./configure -- with-charset= gb2312
    CHARSET可以是big5、cp1251、cp1257、czech、danish、dec8、dos、euc_kr、gb2312 gbk、german1、hebrew、 hp8、hungarian、koi8_ru、koi8_ukr、latin1、latin2、sjis、swe7、tis620、ujis、usa7、win1251或win1251ukr之一。注意:如果你想要改變字符集,你必須在配置期間做make distclean!如果你想在服務器和客戶之間變換字符,你應該看一下SET OPTION CHARACTER SET命令。如果你在創建了任何數據庫表之后改變字符集,你將必須對每個表運行myisamchk -r -q,否則你的索引可能不正確地排序。(如果你安裝了MySQL,創建一些表,然后重新配置MySQL使用一個不同的字符集并且重新安裝它,這時就可能發生這種情況。)

    * 為了配置MySQL帶有調試代碼,使用--with-debug選項:

    #./configure --with-debug
    這導致包含一個安全的內存分配器,能發現一些錯誤和并提供關于正在發生的事情的輸出。

    2.編譯Mysql:

    配置完Mysql就可以進行編譯了

    #make

    3.安裝Mysql:

    #make install

    這步系統會把mysql安裝到指定的位置,我們假設系統把mysql安裝到了/usr/local/下,到這就完成了Mysql系統的源碼方式配置、編譯和安裝了。

    3.3.用RPM包進行安裝

    除了使用mysql的源碼安裝外,Mysql還提供了RPM方式的二進制安裝法:

    你可能要使用的RPM文件有:

    * MySQL-VERSION.i386.rpm MySQL服務器。除非你只是想要與運行在其他機器上MySQL服務器連接,否則你將需要它。

    * MySQL-client-VERSION.i386.rpm 標準MySQL客戶程序。你可能總是需要安裝這個包。

    * MySQL-bench-VERSION.i386.rpm 測試和基準程序。需要Perl和msql-mysql-modules RPM。

    * MySQL-devel-VERSION.i386.rpm 所需的庫和包含文件。如果你想要編譯其他MySQL客戶程序, 例如Perl模塊。

    * MySQL-VERSION.src.rpm 包含上述所有包的源代碼。它也能被用來嘗試為其他硬件平臺構造RPM。
    查看一個RPM包中的所有文件:

    # rpm -qipl MySQL-VERSION.i386.rpm
    實施一個標準的最小安裝,運行這個命令:

    # rpm -i MySQL-VERSION.i386.rpm MySQL-client-VERSION.i386.rpm

    只安裝客戶包:

    # rpm -i MySQL-client-VERSION.i386.rpm

    RPM將數據放在"/var/lib/mysql"里,RPM也在"/etc/rc.d/"里創建適當的入口以便在引導時自動啟動服務器。(這意味著如果你以前已經安裝過,在對它改變之前,你可以把你以前安裝的MySQL啟動文件做個拷貝,因此你不會丟失改動的配置)。

    在安裝了RPM文件后,"mysqld"守護程序應該正在運行,并且現在你應該可以開始使用MySQL。

    3.4.調試Mysql

    安裝Mysql授權表:

    如果你是第一次安裝Mysql,你需要先創造MySQL授權表

    #/usr/local/bin/mysql_install_db

    啟動Mysql進程:

    #/usr/local/bin/safe_mysqld &

    調試你的Mysql服務器:

    使用mysqladmin查看服務器是否正在運行。下列命令提供簡單的測試來檢查服務器啟動和連接的應答:

    #/usr/local/bin/mysqladmin version
    #/usr/local/bin/mysqladmin variables

    從mysqladmin version的輸出根據你的平臺和MySQL版本略有不同,但是應該類似如下顯示:

    #/usr/local/bin/mysqladmin version
    mysqladmin Ver 8.0 Distrib 3.22.32, for pc-linux-gnu on i686
    TCX Datakonsult AB, by Monty
    Server version 3.22.32
    Protocol version 10
    Connection Localhost via UNIX socket
    UNIX socket /tmp/mysql.sock
    Uptime: 5 days 17 hours 38 min 37 sec
    Threads: 2 Questions: 3276 Slow queries: 0 Opens: 19 Flush tables: 1 Open tables: 15

    Mysqladmin的其它使用方法,可以用--help選項來看他的幫助。

    使用mysql客戶端程序:

    #/usr/local/bin/mysql -u[user]-p[password]

    -u的參數指定mysql的數據庫用戶,-p用于指定密碼,例如用戶名是wing,密碼是12345:

    #/usr/local/bin/mysql -uwing-p12345

    注意u和wing之間以及p和12345之間都沒有任何的空格,如果用戶名和密碼均正確系統者會顯示一下信息:
    Welcome to the MySQL monitor. Commands end with ; or g.
    Your MySQL connection id is 826 to server version: 3.22.32

    Type @#help@# for help.

    mysql>


    說明你以及進入mysql的客戶端,你可以使用基本的SQL語句對mysql數據庫進行操作和管理。(SQL語言的使用請詳見本章的附錄)

    3.5.Mysql數據庫的用戶管理和存取權限

    MySQL有一個先進但非標準的安全/權限系統。它使用一個獨立的數據庫對存取權限進行嚴格的設置和管理,這也可以說是mysql數據庫的一大特性;

    MySQL權限系統的主要功能是證實連接到一臺給定主機的一個用戶,并且賦予該用戶在一個數據庫上select、 insert、update和delete的權限。附加的功能包括有一個匿名的用戶和對于MySQL特定的功能例如LOAD DATA INFILE進行授權及管理操作的能力。

    權限信息用user、db、host、tables_priv和columns_priv表被存儲在mysql數據庫中(即在名為mysql的數據庫中)。

    本書所用的涉及由MySQL提供的權限名稱顯示在下表,還有在授權表中每個權限的表列名稱和每個權限有關的上下文(表3):
    表3
    權限 列 功能
    select Select_priv 表
    insert Insert_priv 表
    update Update_priv 表
    delete Delete_priv 表
    index Index_priv 表
    alter Alter_priv 表
    create Create_priv 數據庫、表或索引
    drop Drop_priv 數據庫或表
    grant Grant_priv 數據庫或表
    References References_priv 數據庫或表
    reload Reload_priv 服務器管理
    Shutdown Shutdown_priv 服務器管理
    process Process_priv 服務器管理
    file File_priv 在服務器上的文件存取

    select、insert、update和delete權限允許你在一個數據庫現有的表上實施操作。

    SELECT語句只有在他們真正從一個表中檢索行是才需要select權限,你可以執行某個SELECT語句,甚至沒有任何到服務器上的數據庫里的存取任何東西的許可。例如,你可使用mysql客戶作為一個簡單的計算器:

    mysql> SELECT 1+1;
    mysql> SELECT PI()*2;

    index權限允許你創建或拋棄(刪除)索引。

    alter權限允許你使用ALTER TABLE。

    create和drop權限允許你創建新的數據庫和表,或拋棄(刪除)現存的數據庫和表。
    注意:如果你將mysql數據庫的drop權限授予一個用戶,該用戶能拋棄存儲了MySQL存取權限的數據庫!
    grant權限允許你把你自己擁有的那些權限授給其他的用戶。

    file權限給予你用LOAD DATA INFILE和SELECT ... INTO OUTFILE語句讀和寫服務器上的文件,任何被授予這個權限的用戶都能讀或寫MySQL服務器能讀或寫的任何文件。

    其余的權限用于管理性操作,它使用mysqladmin程序實施。

    reload命令告訴服務器再讀入授權表,refresh命令清洗所有表并打開和關閉記錄文件,flush-privileges是reload的一個同義詞,其它flush-*命令執行類似refresh的功能,但是范圍更有限,并且在某些情況下可能更好用。例如,如果你只是想清洗記錄文件,flush-logs比refresh是更好的選擇。

    shutdown命令關掉服務器。

    processlist命令顯示在服務器內執行的線程的信息。kill命令殺死服務器線程。你總是能顯示或殺死你自己的線程,但是你需要process權限來顯示或殺死其他用戶啟動的線程。

    總的說來,只授予權限給需要他們的那些用戶是一個好主意,但是你應該在授予某個權限時試驗特定的警告:

    * grant權限允許用戶放棄他們的權限給其他用戶。2個有不同的權限并有grant權限的用戶可以合并權限。

    * alter權限可以用于通過重新命名表來推翻權限系統。

    * file權限可以被濫用在服務器上讀取任何世界可讀(world-readable,即任何人可讀)的文件到一張數據庫表,然后其內容能用SELECT被存取。

    * shutdown權限通過終止服務器可以被濫用完全拒絕為其他用戶服務, 。

    * precess權限能被用來察看當前執行的查詢的普通文本,包括設定或改變口令查詢。

    * 在mysql數據庫上的權限能被用來改變口令和其他存取權限信息。(口令被加密存儲,所以一個惡意的用戶不能簡單地讀取他們。然而,有足夠的權限,同一個用戶能用不同的一個代替一個口令。)

    有一些事情你不能用MySQL權限系統做到:

    * 你不能明顯地指定一個給定用戶應該被拒絕存取。即,你不能明顯地匹配一個用戶并且然后拒絕連接。

    * 你不能指定一個用戶有權創建立或拋棄一個數據庫中的表,也不能創建或拋棄數據庫本身。

    3.6.Mysql數據庫的備份

    備份Mysql數據庫的方法是使用mysqldump程序:

    1. 為你的數據庫做一個完整的備份:

    2. shell> mysqldump --tab=/path/to/some/dir --opt --full
    你也可以簡單地拷貝所有的表文件(“*.frm”、“*.MYD”和"*.MYI"文件),只要服務器不在更新任何東西。

    3. 停止mysqld如果它正在運行,然后以--log-update選項啟動它。你將得到一個名為“hostname.n"形式的日志文件, 這里n是隨著你每次執行mysqladmin refresh或mysqladmin flush-logs、FLUSH LOGS語句、或重啟服務器而遞增的一個數字。這些日志文件向你提供了在你執行mysqldump處后面進行的復制數據庫改變的所需信息。

    如果你必須恢復一些東西,嘗試首先用myisamchk -r恢復你的表。這應該處理所有情況的99.9%。如果myisamchk失敗,嘗試下列過程:

    1. 恢復原來的mysqldump備份。

    2. 執行下列命令以再次運行更新日志中的更改:

    3. shell> ls -1 -t -r hostname.[0-9]* | xargs cat | mysql

    ls被用來以正確的順序得到所有的日志文件。

    你也可以與SELECT * INTO OUTFILE @#file_name@# FROM tbl_name做有選擇的備份并且用LOAD DATA INFILE @#file_name@# REPLACE ...恢復。為了避免重復記錄,在表中你需要一個PRIMARY KEY或UNIQUE鍵。當在唯一鍵值上一個新記錄與一個老記錄重復時,REPLACE關鍵詞使得老記錄用一個新記錄替代。

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>