2008年9月3日 星期三

MySQL 基本保安設定

MySQL 基本保安設定

1-剛安裝時,root帳戶的預設密碼為空,必須即時更改。

 a.更改時,由於 root 有兩賬戶,一個帳戶主機名應指定為localhost。

  另一個帳戶為實際的主機名或IP號,故必須兩個都改。
  在Unix中使用PASSWORD的方法:

    shell> mysql -u root
    mysql> SET PASSWORD FOR ''@'localhost' = PASSWORD('newpwd');
    mysql> SET PASSWORD FOR ''@'host_name' = PASSWORD('newpwd');

 b.要想使用mysqladmin為root帳戶指定密碼,執行下麵的命令:

    shell> mysqladmin -u root password "newpwd"
    shell> mysqladmin -u root -h host_name password "newpwd"

 c.嫌下兩條指令麻煩,可以使用 UPDATE

    shell> mysql -u root
    mysql> UPDATE user SET Password = PASSWORD('新密碼 ') WHERE User = 'root';

 d.要留意的是: mysql 內置了很多的表 (grant table),採兩層權限管理

    第一層權限管理:
      uer 記錄可連入 MySQL 的使用者及其權限

    第二層權限管理:
      db 記錄使用者可使用的資料庫
      host 記錄准許連線的主機名稱( localhost , host_name , IP )
      tables_priv 記錄使用者可使用的資料表
      columns_priv 記錄使用者可使用資料表的那些欄位
      procs_priv 記錄使用者可使用那些預存程序

2- 將 ROOT 改名。好處是增加壞人猜測的困難,亦可與 Linux 的 root 有所區別。

    mysql> UPDATE user SET user = ‘SQladmin’ WHERE user = 'root';

3-刪除匿名帳戶,操作方法是:

  shell> mysql -u root
  mysql> DELETE FROM user WHERE User = '';
  mysql> FLUSH PRIVILEGES;

 在user表中直接使用UPDATE更新密碼後,必須讓伺服器用FLUSH PRIVILEGES重新讀授權表,否則不會有任何更改。

沒有留言: