4.5.MySQL常用命令簡介
在MySQL數據庫服務器的軟件包中除了數據庫服務器核心之外還有許多應用程序,這些應用程序負責管理、維護MySQL的方方面面。這些應用程序包括SQL語法分析器,數據庫管理程序,數據備份程序等等。
MySQL的每一個應用程序都帶上很多的參數,因為篇幅的問題我們這里也只能做一些簡單的介紹。詳細的內容您可以使用相應的程序帶上 --help 參數查看。
MySQL的啟動
在很多情況下我們需要手工的啟動和關閉MySQL服務器(如初始化、測試、數據恢復等等)。這時就需要用到以下的命令來控制MySQL服務器的運行狀態。
啟動MySQL:
/usr/local/servers/mysql/bin/safe_mysqld&
關閉MySQL:
/usr/local/servers/mysql/bin/mysqladmin -u root -pyoupassword shutdown
注意,在缺省的情況下只有root才有權限啟動和關閉MySQL服務器。同時,關閉MySQL時如果root有口令的話還需要通過提供-p參數告訴mysqladmin需要提供密碼。
MySQL語法分析器mysql的使用簡介
mysql是MySQL自帶的一個數據庫客戶端語法分析器。這個分析器可以直接的與MySQL邊接,執行用戶輸入的SQL指令,對數據庫進行相關的操作。
下面介紹一下mysql常的參數,并對其使用進行一些簡單的介紹:
-h 指定要連接的主機名或IP地址
-u 指定連接時使用的用戶名
-p 指定連接時使用的口令
使用mysql連接MySQL的例子:
# /usr/local/servers/mysql/bin/mysql -h localhost -u root -p
Enter password:********
其中,星口所包括的內容是我們root所對應的密碼,如果root的密碼為空,您可以直接使用:
# /usr/local/servers/mysql/bin/mysql -h localhost -u root
登錄,成功登錄后,mysql命令會提示與下面的信息相類似的提示:
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 43 to server version:3.22.23
Type @#help@# for help.
mysql>
同時命令行出現"mysql>"提示符,您現在就可以開始輸入SQL語句了,常用的語句如下:
SHOW DATABASES 顯示系統中所有數據庫名
SHOW TABLES 顯示當然數據庫中所有的表名
USE DATABASE_NAME 使用指定數據庫做為當然數據庫
QUIT 退出mysql解釋器
其中,DATABASE_NAME為數據庫,使用SHOW TABLES前必須先使用USE命令指定數據庫。
MySQL管理工具mysqladmin的使用簡介
mysqladmin是MySQL數據庫軟件包中的一個數據庫管理工具。缺省的情況下,只有MySQL的數據庫管理員(缺省為:root)才可以使用。
mysqladmin 是一個功能強大的命令行工具,它的功能都可以通過一系列的命令行參數進行控制,下面列出一些常用的參數:
--f 在執行操作時不做任何的確認提示
-h 指定要連接的主機名或IP地址
-p 指定連接用戶的密碼
-P 指定主機中MySQL監聽的端口號(缺省為:3306)
-u 指定連接時使用的用戶名
除了這些參數之外,mysqladmin還有很多命令,同樣我們將一些常用的命令列出來供您參考:
create database dbname #創建新的數據庫,其中dbname為數據庫名
drop database dbname #刪新數據庫,其中dbname為數據庫名
extended-status #顯示服務器的當前狀態,如同時連接的客戶端數量
flush-privileges #刷新權限表,當我們修改用戶信息,如口令時就需要
#使用到此命令刷新MySQL的權限表
password #修改指定用戶的密碼,前面已經用到了
shutdown #關閉服務器
接下來我們列一些簡單而常用的例子:
這里例子在使用前,都必須先將當前路徑設置為/usr/local/servers/mysql/bin,下面是設置路徑的命令:
# cd /usr/local/servers/mysql/bin
(1)創建新的數據庫
# ./mysqladmin -u root -p create database mytestdb #以root的身份創建數據庫
(2)刪除數據庫
# ./mysqladmin -u root -p drop database mytestdb #以root的身份刪除數據庫
(3)修改用戶密碼
# ./mysqladmin -u root -p password @#password@# #將root的密碼改為password
(4)刷新權限表
# ./mysqladmin -u root -p flush-privileges #刷新權限表
(5)關閉數據庫服務器
# ./mysqladmin -u root -p shutdown #關閉數據庫
MySQL數據導出工具mysqldump的使用簡介
很多情況下我們都需要將數據庫的數據導出到一個文件內進行備份或者到另外一個數據庫進行導入操作。這時就需要使用到MySQL提供的數據導出工具mysqldump。
其基本的語法為:
# mysqldump [OPTIONS] database [tables]
如果沒有指定任何的選項和表名(tables),mysqldump會 將整個數據庫的內容都導出來。下面是mysqldump一些常用的參數:
--add-drop-table 在每個表格前加上DROP TABLE語句,用于在導入時刪除原有的表格
-h 指定要連接的主機名或IP地址
-t 只備份數據,而不備份表結構
-d 只備份表結構,而不備份數據
--opt 允許同時多個附加的參數
-p 指定連接時的口令
-q 不使用緩沖區直接備份至硬盤,這對于要備份的數據庫比較大時非常有用
-u 指定連接時使用的用戶名
接下來我們以一個簡單的例子來說明mysqldump的使用方法:
(1)將test數據庫中所有表格全部導出至/tmp/test.bak中,因為mysqldump導出數據時是接輸出至控制臺的,我們要將它所輸出的數據轉存至文件就需要使用重定向命令">"。注意,如果root用戶已經設置了口令,則需要輸入口令才可以導出。
# /usr/local/servers/mysql/bin/mysqldump -u root -p test > /tmp/test.bak
數據導出之后使用vi /tmp/test.bak或者less /tmp/test.bak就可以查看到導出的數據。
(2)將mysql數據庫中的db表的結構導出至/tmp/mysql.db.str中
# /usr/local/servers/mysql/bin/mysqldump -d -u root -p mysql db > /tmp/mysql.db.str
(3)將mysql數據庫中所有表格的數據(不包括結構)都導出至/tmp/mysql.data中
# /usr/local/servers/mysql/bin/mysqldump -t -u root -p mysql > /tmp/mysql.data
注意,mysql數據庫中存放在關于MySQL數據庫服務器的權限信息,在做完試驗之后應該立即將/tmp/test.bak、/tmp/mysql.db.str、/tmp/mysql.data刪除,以免造成安全隱患
4.6.MySQL的權限控制及用戶管理
MySQL使用了一個獨立的數據庫用于存儲用戶的權限信息,可以提供細至每個操作的權限控制。這為精確的控制用戶的權限提供了便利,同時也給用戶的管理增加了復繁性。由篇幅有限,這里我們只能簡單的講一些權限控制的技巧。
MySQL的權限主要由兩部分構成,這兩部分分別存放于兩個表user和db里面。
user表主要用來存放用戶名、密碼、用戶可以從那些主機上登錄、權限是否有創建數據庫的權限等
db 表主要用來存放用戶對具體的某個數據庫是否有讀取、刪除、添加、更新的權限等。
了解了這兩個表對權限控制的作用之后要控制具體用戶的權限就容易多了。下面我們以一些簡單的例子來說明權限控制的方法:
說明:因為這些例子都涉及到權限的更改,所以在做完修改之后都必須使用 flush privileges 命令更新MySQL的權限表。所做的更改才會有以后,同樣以后如果自行修改了MySQL的權限表也必須使用flush privileges命令進行更新。同時所有的命令都是以root的身份在mysql命令行工具中執行,啟動mysql命令行工具的方法是進入mysql的安裝路徑/bin內運行./mysql,對于本書來說是 /usr/local/servers/mysql/bin/mysql
1.添加新用戶,只允許在本地登錄,沒有任何權限
INSERT INTO user (Host,User,Password) VALUES
(@#localhost@#,@#mydbuser@#,PASSWORD(@#password@#));
運行此命令之后,將會產品一個名為mydbuser的新用戶,其口令為password,只允許在本地計算機中登錄,沒有任何的權限。
2.添加新用戶,允許在任何地方登錄,對數據庫 test 擁有讀取、添加的權限
INSERT INTO user (Host,User,Password) VALUES
(@#%@#,@#mydbuser1@#,PASSWORD(@#password@#));
INSERT INTO db (Host,Db,User,Select_priv,Insert_priv)
VALUES (@#%@#,@#test@#,@#mydbuser1@#,@#Y@#,@#Y@#);
運行這兩條命令之后,將會產品一個名為mydbuser1的用戶,擁有對數據庫test內所有表格讀取與添加的權限。
5.Web服務器的安裝與Web編程環境的建立
經過4部分的操作,我們的Web站點已經擁有了一個穩定的數據庫。接下來就要安裝Aache開始提供HTTP服務,同時還需要建議Web編程環境,提供JSP/PHP的支持,以進行動態網站的開發。
1、下載軟件包
從 下載Apache 1.3.12
從 下載 resin 1.1.4
從 下載 jdk1.2.2
從 下載mm.mysql-2.0.2-bin.jar
下載的軟件包放置于 /usr/local/src。
2、將下載的軟件包解壓縮
# cd /usr/local/src
# tar zxvf apache_1.3.12.tar.gz
# tar zxvf resin-1.1.3.tar.gz --directory=/usr/local/servers/
5.1.安裝Web服務器
以模塊化方式編譯并安裝apache
# cd /usr/local/src/apache_1.3.12
# ./configure --prefix=/usr/local/servers/apache --enable-shared=max
# make
# make install
生成 Apache 啟動文件
# cd /etc/rc.d/init.d
# sed @#s/sbin/atd/local/servers/apache/bin/httpd/g@# atd > httpd
# sed @#s/atd/httpd/g@# httpd > /tmp/txt
# sed @#s/at daemon/httpd daemon/g@# /tmp/txt > httpd
# rm /tmp/txt
# chmod 755 httpd
# chkconfig --level 345 httpd on
# chkconfig --level 0126 httpd off
修改Apache配置文件
在缺省的情況下Apache不會設置ServerName這個參數,而需要我們手工設置,方法如下:
# cd /usr/local/servers/apache/conf
使用vi打開httpd.conf,搜索ServerName變量,將其修改為 ServerName 。其中是我們的WEB服務器的域名。
啟動并測試Apache服務器
# /etc/rc.d/init.d/httpd start
如果出現:
Starting httpd daemon: [ OK ]
則證明 httpd 已經正確的安裝并已經在后臺運行,如果出現其它的提示,請檢查您的安裝步驟是否正確。
使用 lynx localhost 查看Apache的缺省頁面,正常情況下是可以查看到的。如果沒有出現頁面或者提示錯誤信息,請您檢查Apache是否已經在運行,同時httpd.conf中的DocumentRoot參數指向的路徑是否允許任何人讀取與運行(權限為rx)。
到了這一步,我們已經成功的以DSO方式安裝了Apache ,我們的Web服務器可以開始提供靜態的頁面了,下一步我們就要開始加入JSP、PHP的支持。以使我們的Web服務器可以提供動態頁面的服務。
使Apache支持基于域名的
Apache的支持有兩種方式,一是基于用戶訪問Apache主機時所使用的域名,另一種是通過指定IP地址來提供。這里我們只講解如何通過不同的域名來實現的支持。
要實現基于域名的的前提條件是必須有兩個域名同時指向Apache主機的IP地址,這里我們假設這兩個域名分別是和這兩個域名的文檔都分別放置于 /home/linuxaid.com.cn 和 /home/linuxaid.net.cn這兩個目錄內,同時這兩個目錄已經設置好權限,對于目錄讓所有的人都可以讀取、運行,對于文件,讓所有的人都可以讀取。
以下是具體的配置:
NameVirtualHost 202.99.11.120 #告訴Apache,在202.99.11.120這個IP上處理
#基于域名的
<VirtualHost 202.99.11.120>
ServerAdmin #指定WEB管理員的郵箱
DocumentRoot /home/linxuaid.com.cn #指定本的文檔目錄
ServerName #指定本的域名
ErrorLog logs/linxuaid.com.cn.error.log #指定錯誤記錄應該存放于那里
CustomLog logs/linxuaid.com.cn.log #指定常規記錄應該存放于那里
</VirtualHost>
<VirtualHost 202.99.11.120>
ServerAdmin #指定WEB管理員的郵箱
DocumentRoot /home/linuxaid.net.cn #指定本的文檔目錄
ServerName #指定本的域名
ErrorLog logs/linuxaid.net.cn.error.log #指定錯誤記錄應該存放于那里
CustomLog logs/linuxaid.net.cn.log #指定常規記錄應該存放于那里
</VirtualHost>
將以上的指令輸入至httpd.conf之后,重新啟動apache,使用訪問時將可以得到 /home/linuxaid.com.cn中的內容,而使用訪問時則可以得到/home/linuxaid.net.cn中的內容。如果的內容與的內容相同,只要將DocumentRoot后目錄改為相當就可以了。如果也希望linuxaid.com.cn能訪問,還需要再定義一次,這樣寫ServerName linuxaid.net.cn就可以了。