MySql管理的一點心得
2024-07-24 12:58:43
供稿:網(wǎng)友
 
MySQL數(shù)據(jù)庫是中小型網(wǎng)站后臺數(shù)據(jù)庫的首選,因為它對非商業(yè)應用是免費的.網(wǎng)站開發(fā)者可以搭建一個"linux+Apache+php+MySql" 平臺,這是一個最省錢的高效平臺.在使用MySql進行開發(fā)時,MySql自帶的文檔對于新手來說是份很好的參考資料.本文是我在使用MySql中的小小心得。   MySql數(shù)據(jù)庫是中小型網(wǎng)站后臺數(shù)據(jù)庫的首選,因為它對非商業(yè)應用是免費的.網(wǎng)站開發(fā)者可以搭建一個"Linux+Apache+PHP+MySql" 平臺,這是一個最省錢的高效平臺.在使用MySql進行開發(fā)時,MySql自帶的文檔對于新手來說是份很好的參考資料.本文是我在使用MySql中的小小心得。
  當前一般用戶的開發(fā)環(huán)境多是Windows或Linux,在 windows中MySql以服務形式存在,在使用前應確保此服務已經(jīng)啟動,未啟動可用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字段,在進行了以上更改后應重新啟動數(shù)據(jù)庫服務,此時登錄時可用如下類似命令:
  mysql -uroot -p;
  mysql -uroot -pnewpassword;
  mysql mydb -uroot -p;
  mysql mydb -uroot -pnewpassword;
  上面命令參數(shù)是常用參數(shù)的一部分,詳細情況可參考文檔。此處的mydb是要登錄的數(shù)據(jù)庫的名稱。
  在進行開發(fā)和實際應用中,用戶不應該只用root用戶進行連接數(shù)據(jù)庫,雖然使用root用戶進行測試時很方便,但會給系統(tǒng)帶來重大安全隱患,也不利于管理技術的提高。我們給一個應用中使用的用戶賦予最恰當?shù)臄?shù)據(jù)庫權限。如一個只進行數(shù)據(jù)插入的用戶不應賦予其刪除數(shù)據(jù)的權限。MySql的用戶管理是通過 User表來實現(xiàn)的,添加新用戶常用的方法有兩個,一是在User表插入相應的數(shù)據(jù)行,同時設置相應的權限;二是通過GRANT命令創(chuàng)建具有某種權限的用戶。其中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 函數(shù)進行更新加密,以防不軌之人竊看密碼。對于那些已經(jīng)不用的用戶應給予清除,權限過界的用戶應及時回收權限,回收權限可以通過更新User表相應字段,也可以使用REVOKE操作。
全局管理權限:
  FILE: 在MySQL服務器上讀寫文件。
  PROCESS: 顯示或殺死屬于其它用戶的服務線程。
  RELOAD: 重載訪問控制表,刷新日志等。
  SHUTDOWN: 關閉MySQL服務。
  數(shù)據(jù)庫/數(shù)據(jù)表/數(shù)據(jù)列權限:
  ALTER: 修改已存在的數(shù)據(jù)表(例如增加/刪除列)和索引。
  CREATE: 建立新的數(shù)據(jù)庫或數(shù)據(jù)表。
  DELETE: 刪除表的記錄。
  DROP: 刪除數(shù)據(jù)表或數(shù)據(jù)庫。
  INDEX: 建立或刪除索引。
  INSERT: 增加表的記錄。
  SELECT: 顯示/搜索表的記錄。
  UPDATE: 修改表中已存在的記錄。
  特別的權限:
  ALL: 允許做任何事(和root一樣)。
  USAGE: 只允許登錄--其它什么也不允許做。
  最后給出本人在RedHat9.0下的MySql操作演示:
  選用數(shù)據(jù)庫的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;
  運行已經(jīng)編輯好的SQL腳本可以用source filename 或 . filename。
  以上只是對新手的簡單練習,要成為一個數(shù)據(jù)庫好手,當以孜孜不倦地追求知識,不斷地思考、嘗試、再思考。