MySql資料庫是中小型網站後台資料庫的首選,因為它對非商業應用是免費的.網站開發者可以搭建一個"Linux+Apache+PHP+MySql" 平台,這是一個最省錢的高效平台.在使用MySql進行開發時,MySql自備的文檔對於新手來說是份很好的參考資料.本文是我在使用MySql中的小小心得。 MySql資料庫是中小型網站後台資料庫的首選,因為它對非商業應用是免費的.網站開發者可以搭建一個"Linux+Apache+PHP+MySql" 平台,這是一個最省錢的高效平台.在使用MySql進行開發時,MySql自備的文檔對於新手來說是份很好的參考資料.本文是我在使用MySql中的小小心得。
目前一般使用者的開發環境多是Windows或Linux,在windows中MySql以服務形式存在,在使用前應確保此服務已啟動,未啟動可用net start mysql指令啟動。而Linux中啟動時可用「/etc/rc.d/init.d/mysqld start"指令,注意啟動者應具有管理者權限。
剛安裝好的MySql包含一個含空密碼的root帳戶和一個匿名帳戶,這是很大的安全隱患,對於一些重要的應用我們應將安全性盡可能提高,在這裡應刪除匿名帳戶、 root帳戶設定密碼,可用以下指令進行:
use mysql;
delete from User where User="";
update User set Password=PASSWORD('newpassword') where User='root';
如果要對使用者所使用的登入終端進行限制,可以更新User表中對應使用者的Host字段,在進行了以上更改後應重新啟動資料庫服務,此時登入時可用如下類似命令:
mysql -uroot -p;
mysql -uroot -pnewpassword;
mysql mydb -uroot -p;
mysql mydb -uroot -pnewpassword;
上面命令參數是常用參數的一部分,詳細情況可參考文件。此處的mydb是要登入的資料庫的名稱。
在進行開發和實際應用中,使用者不應該只用root使用者進行連接資料庫,雖然使用root使用者進行測試時很方便,但會為系統帶來重大安全隱患,也不利於管理技術的提升。我們給予一個應用程式中使用的使用者最恰當的資料庫權限。如一個只進行資料插入的使用者不應賦予其刪除資料的權限。 MySql的使用者管理是透過User表來實現的,新增使用者常用的方法有兩個,一是在User表插入對應的資料行,同時設定對應的權限;二是透過GRANT指令建立具有某種權限的用戶。其中GRANT的常用用法如下:
grant all on mydb.* to NewUserName@HostName identified by "password" ;
grant usage on *.* to NewUserName@HostName identified by "password";
grant select,insert,update on mydb.* to NewUserName@HostName identified by "password";
grant update,delete on mydb.TestTable to NewUserName@HostName identified by "password";
若要給此使用者賦予他在對應物件上的權限的管理能力,可在GRANT後面新增WITH GRANT OPTION選項。而對於用插入User表新增的用戶,Password欄位應用PASSWORD 函數進行更新加密,以防不軌之人竊看密碼。對於那些已經不用的用戶應給予清除,權限過界的用戶應及時回收權限,回收權限可以透過更新User表相應字段,也可以使用REVOKE操作。
全域管理權限:
FILE: 在MySQL伺服器上讀寫檔案。
PROCESS: 顯示或殺死屬於其它使用者的服務執行緒。
RELOAD: 重載存取控製表,刷新日誌等。
SHUTDOWN: 關閉MySQL服務。
資料庫/資料表/資料列權限:
ALTER: 修改已存在的資料表(例如增加/刪除列)和索引。
CREATE: 建立新的資料庫或資料表。
DELETE: 刪除表格的記錄。
DROP: 刪除資料表或資料庫。
INDEX: 建立或刪除索引。
INSERT: 增加表的記錄。
SELECT: 顯示/搜尋表的記錄。
UPDATE: 修改表格中已存在的記錄。
特別的權限:
ALL: 允許做任何事(和root一樣)。
USAGE: 只允許登入--其它什麼也不允許做。
最後給出本人在RedHat9.0下的MySql操作演示:
選用資料庫的root使用者登入
[weiwen@weiwenlinux]$mysql -uroot -p
Enter password:MyPassword
mysql>create database mydb;
Query OK, 1 row affected (0.02 sec)
mysql>use mydb;
Database changed
mysql>create table TestTable(Id int aut_increment primary key,
UserName varchar(16) not null,
Address varchar(255));
Query OK, 0 rows affected (0.02 sec)
mysql>grant all on mydb.* to test@localhost identified by "test";
Query OK, 0 rows affected (0.01 sec)
mysql>quit
Bye
[weiwen@weiwenlinux]$mysql mydb -utest -ptest
其中test.sql是用vi編輯好的SQL腳本,內容為:
Insert into TestTable(UserName,Address)values('Tom','shanghai');
Insert into TestTable(UserName,Address)values('John','beijing');
select * from TestTable;
執行已經編輯好的SQL腳本可以用source filename 或. filename。
以上只是對新手的簡單練習,要成為一個資料庫好手,當以孜孜不倦地追求知識,不斷地思考、嘗試、再思考。