引用
Blog天生就得到搜尋引擎的喜愛,以至於排名總是較前。
◎Blog增加連結機會導致排名較前
不知道您在使用搜尋引擎時是否注意到,許多Blog的某篇文章經常排在搜尋結果前幾筆。這是意外嗎?其實只要理解搜尋引擎運作原理,就很容易知道何以Blog文章這麼討搜尋引擎喜歡。
搜尋引擎運作原理,筆者曾寫過「第三代網路行銷:搜尋引擎行銷」三篇。總結就是:1)增加網站內部網頁彼此連結,有助提高搜尋引擎排名;2)讓別人網站連結到你網站來,有助提高搜尋引擎排名。
一個典型的Blog網站,長得像這個樣子:
http://worker.bluecircus.net/
可以看到很多Blog網站常見的構成元素:日曆,文章分類,文章依月份(或年份)歸檔。每篇文章底部有「上一篇,下一篇」的連結。就是這些,在網站上增加了每篇文章彼此相互連結的機會。
此外,一般Blog還有Trackback 機制。簡言之,當別人在自己寫的文章中提到你的網站上某文章時,他除了建立連結連到你之外,還可以發送一個通知給你的網站,讓你的網站自動建立連結連回到他的網站。
跟外部網站的連結建立是如此自動化。因此我們常看到那些在搜尋結果排名靠前的Blog文章,往往都是被討論被連結最多次的文章。我們終於明白,Blog系統的呈現與運作方式,天生就符合搜尋引擎胃口。
◎搜尋引擎嗜食文字
除上述運作邏輯外,筆者在此補充幾點之前沒提到的搜尋引擎特性:
- 搜尋引擎喜歡文字很多的網頁
如果某個網頁上都是圖形,或者都是大量的連結連往別的網頁,該網頁在搜尋引擎是拿不到高分的,排名也無法靠前;搜尋引擎自有辦法判斷網頁上的文字內容是有意義的文字還是垃圾。
請參考這兩種頁面:
http://www.digitalwall.com/all
http://www.digitalwall.com/scripts/year.asp?txtYear=2006
同樣是站內文章列表,前者網頁僅將標題列出並做連結,後者除此之外還將內文第一段呈現出來在網頁上,讓網頁上具有更多有意義的文字。結果是,後者在搜尋引擎的排名上大獲全勝。
您是否發現,幾乎所有的Blog網頁上都充滿著大量文字。即使是首頁上充斥著文章標題列表,在標題之外也會順帶把第一段呈現出來先讓你看一下。在此,我們又再度看見了Blog在搜尋引擎上的排名優勢。
◎搜尋引擎喜新厭舊
回到我們對企業網站的討論上。相信大家對於「企業網站」一定不陌生,你很容易可以猜到上面一定有「公司簡介」,「產品介紹」,「最新消息」,「聯絡我們」,「企業徵才」,以及此類內容的延伸。
很無趣嗎?是很無趣!也難怪當企業主面對能飛天遁地的 Web 2.0時,完全想不出來該拿自己公司的網站怎麼辦!其中,對於搜尋引擎排名最致命的一點,就是這些內容幾乎不會更新。
一個很久沒有更新的網頁,在搜尋引擎的排名會被新的相關網頁往下擠,因為搜尋引擎喜歡新鮮的內容。一個頁面常常有更動的部分,會被搜尋引擎認為還「活著」。
想來想去,好像只剩「最新消息」會是常更新的部份。一個竅門是,讓你的網站上每個網頁都出現「最新消息」內容。請看範例:
http://www.digitalwall.com/scripts/display.asp?UID=358
頁面上主要內容文章已經寫完,未來很少有機會更新。但網頁右側部分卻可看到有個「近日產業動態」,那些內容是每天甚至每小時都在變動。對搜尋引擎來講,這整個網頁就是新鮮的,因為有變動的部份。
你或許發現了。每一個Blog網站上的每一篇文章或每一個網頁上,幾乎都有最新文章或者最新消息的連結。是的,這是Blog為什麼老是能拿到搜尋引擎排名前幾名的一個原因:他的每個網頁都是最新鮮的。
◎效果才是王道啦!管他幾點零
前些時候筆者和 1.0時代搞網路革命的老戰友工頭堅在 MSN上閒聊,問說是否感覺筆者的網站數位之牆最近在改版。他的第一個反應是:「有,變得 Web 2.0化了」。
這實在是個誤解。筆者網站使用老舊的 ASP 3.0,先前在加入 RSS機制時就已經吃足苦頭。改版目的是改善網站在搜尋引擎的排名(即所謂「搜尋引擎優化」),沒想到越改和當下流行的Blog介面越來越像。
這件事告訴我們,如果 1.0企業網站決心拉高搜尋引擎排名,改到後來會跟Blog很像,而企業主可能從沒聽過 Web 2.0,還被以為是跟風流行。事實上企業主很現實,能帶來客戶的就是好技術,管他幾點零。
此外,如果你公司從來就沒有網站,或者你懶得理解筆者解釋的這麼多原理,建議直接用Blog系統去架設網站會省力得多,反正效果一樣,像筆者這樣搞改版很辛苦。企業網站的 2.0之路,走來並不容易。
資料來源
2013年10月30日 星期三
mysql 指令收集
平常只下SQL Command
但一些權限指令都快忘光了
這邊也有詳盡介紹:http://businesswing.net/webdesign/php-cmd_data_export_and_import/#more-1958
mysql 忘記密碼
安裝完成後在OS Command Line 更改Root Password
1.先停掉mysql
/etc/rc.d/init.d/mysql stop
2.以--skip-grant-table 的參數啟動mysql
safe_mysql --skip-grant-table&
3. 更改root 密碼
# mysql mysql
mysql> UPDATE user SET password=password('newpassword')
WHERE user='root';
mysql> exit
4.停掉mysql再重跑
# mysqladmin -uroot -p shutdown
Enter password: //輸入新設定的密碼
# /etc/rc.d/init.d/mysql start
// show 出資料庫
show databases;
//使用資料庫
use 資料庫名稱;
//檢查使用中的資料庫
select database();
//秀出資料庫
shell指令mysqlshow
mysql下 show databases;
//顥示連結的狀態
status
//秀出資料庫使用狀況
select database();
//秀出資料庫內的資料表名稱
show tables;
//秀出資料庫欄位名稱及內容
describe 資料表名稱;
//加入新的資料至欄位
INSERT INTO manber( 欄位, 欄位, )
VALUES ( '插入字串' , '插入字串' );
//加入欄位至資料庫尾端
ALTER TABLE `TABLE_NAME` ADD `新增欄位名稱` VARCHAR( 5 ) ;
//show 出 資料表內所有的內容
select * from 資料表名稱;
// show 出資料表後匯入一個新的文件
mysql -u root -hhostname -p -e "select * from cd limit 1" > 匯出的名稱
// 搜尋某筆的資料
select * from table名稱 where type_id='24';
//修改芋筆的資料
update table名稱 set 欄位1='5' where 欄位2='24' limit 5;
//記算資料庫筆數
select count(櫚位名) from table_name ;
或
select count(*) from table_name ;
timestamp下
select 櫚位名1,count(*) from table_name where Time < timename_timestamp('2003-5-8 12:0:0') group by 欄位名1 ; //亂數 select select * from twble_name order by rand() ; //新增資料 insert into 資料庫名稱(欄位1,欄位2) values(資料1,資料2); //刪除資料 delete from 資料庫名稱 ; //不用加星號 shell> mysqladmin -u root password "newpwd"
shell> mysqladmin -u root -h host_name password "newpwd"
shell> mysql -u root
mysql> SET PASSWORD FOR ''@'localhost' = PASSWORD('newpwd');
mysql> SET PASSWORD FOR ''@'%' = PASSWORD('newpwd');
shell> mysql -u root
mysql> SET PASSWORD FOR ''@'localhost' = PASSWORD('newpwd');
mysql> SET PASSWORD FOR ''@'host_name' = PASSWORD('newpwd');
查詢資料庫清單
shell> mysql -u root
mysql> SHOW DATABASES ;
建立資料庫
shell> mysql -u root
mysql> Create database DB_Name;
建立使用者及密碼,並賦予所需之權限
shell> mysql -u root
mysql>GRANT ALL PRIVILEGES ON DB_Name.*
TO User_Name@localhost IDENTIFIED BY 'newpwd'
更改使用者密碼
shell> mysql -u root
mysql> UPDATE mysql.user SET Password = PASSWORD('newpwd')
WHERE User = 'root';
mysql> FLUSH PRIVILEGES;
MySQL 常用的設定和指令記錄, 採 FAQ 方式記錄.
但一些權限指令都快忘光了
這邊也有詳盡介紹:http://businesswing.net/webdesign/php-cmd_data_export_and_import/#more-1958
mysql 忘記密碼
安裝完成後在OS Command Line 更改Root Password
1.先停掉mysql
/etc/rc.d/init.d/mysql stop
2.以--skip-grant-table 的參數啟動mysql
safe_mysql --skip-grant-table&
3. 更改root 密碼
# mysql mysql
mysql> UPDATE user SET password=password('newpassword')
WHERE user='root';
mysql> exit
4.停掉mysql再重跑
# mysqladmin -uroot -p shutdown
Enter password: //輸入新設定的密碼
# /etc/rc.d/init.d/mysql start
//登入
mysql -u root -h hostname -p// show 出資料庫
show databases;
//使用資料庫
use 資料庫名稱;
//檢查使用中的資料庫
select database();
//秀出資料庫
shell指令mysqlshow
mysql下 show databases;
//顥示連結的狀態
status
//秀出資料庫使用狀況
select database();
//秀出資料庫內的資料表名稱
show tables;
//秀出資料庫欄位名稱及內容
describe 資料表名稱;
//加入新的資料至欄位
INSERT INTO manber( 欄位, 欄位, )
VALUES ( '插入字串' , '插入字串' );
//加入欄位至資料庫尾端
ALTER TABLE `TABLE_NAME` ADD `新增欄位名稱` VARCHAR( 5 ) ;
//show 出 資料表內所有的內容
select * from 資料表名稱;
// show 出資料表後匯入一個新的文件
mysql -u root -hhostname -p -e "select * from cd limit 1" > 匯出的名稱
// 搜尋某筆的資料
select * from table名稱 where type_id='24';
//修改芋筆的資料
update table名稱 set 欄位1='5' where 欄位2='24' limit 5;
//記算資料庫筆數
select count(櫚位名) from table_name ;
或
select count(*) from table_name ;
timestamp下
select 櫚位名1,count(*) from table_name where Time < timename_timestamp('2003-5-8 12:0:0') group by 欄位名1 ; //亂數 select select * from twble_name order by rand() ; //新增資料 insert into 資料庫名稱(欄位1,欄位2) values(資料1,資料2); //刪除資料 delete from 資料庫名稱 ; //不用加星號 shell> mysqladmin -u root password "newpwd"
shell> mysqladmin -u root -h host_name password "newpwd"
在Windows環境中,Login Mysql後,更改Root Pasword
shell> mysql -u root
mysql> SET PASSWORD FOR ''@'localhost' = PASSWORD('newpwd');
mysql> SET PASSWORD FOR ''@'%' = PASSWORD('newpwd');
在Unix環境中,Login Mysql後,更改Root Pasword
shell> mysql -u root
mysql> SET PASSWORD FOR ''@'localhost' = PASSWORD('newpwd');
mysql> SET PASSWORD FOR ''@'host_name' = PASSWORD('newpwd');
查詢資料庫清單
shell> mysql -u root
mysql> SHOW DATABASES ;
建立資料庫
shell> mysql -u root
mysql> Create database DB_Name;
建立使用者及密碼,並賦予所需之權限
shell> mysql -u root
mysql>GRANT ALL PRIVILEGES ON DB_Name.*
TO User_Name@localhost IDENTIFIED BY 'newpwd'
更改使用者密碼
shell> mysql -u root
mysql> UPDATE mysql.user SET Password = PASSWORD('newpwd')
WHERE User = 'root';
mysql> FLUSH PRIVILEGES;
MySQL 常用的設定和指令記錄, 採 FAQ 方式記錄.
- MySQL 匯入 sql 指令
- mysql -u userid -p [-h localhost] db_Name < xxxxx.sql
- MySQL 於 mysql> 使用 less 看結果
- pager less -n -i -S
- 直式列出 query 結果
- SELECT * FROM TABLE_NAMEG
- 設定 mysql> 變成 (user@host) [(dbname)]>
- 於 .bashrc 加一行
export MYSQL_PS1="(u@h) [d]> "
- MySQL 看 status
- show status; 或 mysqladmin -u root -p status
- MySQL 要讓 localhost 以外的 Client 連進來
- /etc/mysql/my.cnf 拿掉 bind-address = 127.0.0.1 即可
- MySQL 秀錯誤編號, 該如何查此編號對應的原因?
- MySQL error 編號, 在 shell 下打 "perror 編號" 就可知道原因了, Example:
$ perror 134 MySQL error: 134 = Record was already deleted (or record file crashed) mysql error code shell> perror 12 System error: 12 = Cannot allocate memory
- Check Table 是否有錯誤
- CHECK TABLE tbl_name [fast] [quick], 詳可參見: 此連結
- 於系統運作下, 修復 TABLE
- repair table table_name, 詳可參見: 此連結
- MySQL 停止後, 於 shell 下修復 TABLE(MyISM)
- myismchk /mysql/data/TABLE_NAME.MYI
- MySQL 只 dump table 的 schema
使用此參數: --no-data, -d mysqldump -d -u root -p DB_NAME TABLE_NAME > TABLE_NAME.sql
- MySQL 只 dump db 的 schema
使用此參數: --no-data, -d mysqldump -d -u root -p DB_NAME > DB_NAME.sql
- MySQL 只 dump db 的 data
-c: SQL 語法前面會把欄位名稱也列出來 -t: Table mysqldump -u root -p -t -c DBNAME > DB_ALL_DATA.sql 或 mysqldump -u root -p -t DBNAME > DB_ALL_DATA.sql
- MySQL 只 dump table 的 data
-c: SQL 語法前面會把欄位名稱也列出來 -t: Table mysqldump -u root -p -t -c DBNAME TABLENAME > DB_TABLE_DATA.sql 或 mysqldump -u root -p -t DBNAME TABLENAME > DB_TABLE_DATA.sql
- Query 指定使用哪個 index 的語法
SELECT COUNT(*) FROM TABLE_NAME USE INDEX(XXX_idx)
- 看此 table_name 使用多少容量、空間
show table status like 'table_name';
- 看 table 如何 create 的
mysql> show create table table_name
- 如何看 mysql bin log
mysqlbinlog m10-relay-bin.001
- 如何看 SQL 語法使用到哪個 Index Key
mysql> EXPLAIN SELECT * FROM User
- 如何設定把 所有 對此 MySQL 所下的 SQL 語法都記錄下來
my.cnf [mysqld] log = /var/logs/mysql/mysql-query.log
- 如何找出 MySQL column欄位中的值不等於 0-9 的
SELECT * FROM TABLENAME WHERE column REGEXP '[^0-9]';
- 要將資料倒回 DB 的標準做法(若有設 Foreign Key 用此方法才能順利匯入)
- mysql> SET FOREIGN_KEY_CHECKS = 0;
- mysql> SOURCE dump_file_name;
- mysql> SET FOREIGN_KEY_CHECKS = 1;
設定 root 和其他 user 的密碼
- mysqladmin -u root password '新密碼'
- mysqladmin -u root -p
- Enter password: 此時再輸入密碼(建議採用)
- use mysql;
mysql> UPDATE user SET password=password('新密碼') where user='root';
只改 root 的密碼,如果沒有用 where ,則表示改全部 user 的密碼 - mysql> FLUSH PRIVILEGES; 在 mysql 資料庫內,一定要用 flush 更新記憶體上的資料
刪除空帳號
- mysql> DELETE FROM user WHERE User = '';
- mysql> FLUSH PRIVILEGES;
建立新帳號
- mysql> GRANT 權限 ON 資料庫或資料表 TO 使用者 IDENTIFIED BY '密碼';
權限
資料庫或資料表
*.* 所有資料庫裡的所有資料表
* 預設資料庫裡的所有資料表
資料庫.* 某一資料庫裡的所有資料表
資料庫.資料表 某一資料庫裡的特定資料表
資料表 預設資料庫裡的某一資料表
設定/修改權限
- 用 root 登入 MySQL
mysqladmin -u root -p
Enter password: - mysql> GRANT all ON db35.* TO s35@'localhost' IDENTIFIED BY 's35';
把 db35 這個資料庫(含其下的所有資料表),授權給 s35,從 localhost 上來,密碼為s35
- mysql> GRANT all ON *.* 把所有資料庫及資料表授權給別人,太危險了!
- mysql> GRANT all??? ON www.* TO '*'@'*' IDENTIFIED BY '';
把 www 這個資料庫(含其下的所有資料表),授權給 任何機器任何人,無密碼(通常給不特定人士使用)
- mysql> FLUSH PRIVILEGES; (最後一定要強迫更新權限)
MySQL指令大全
基本指令 :
資料定義語言 ( DDL ) :
建立資料庫或資料表 : create
更變資料庫或資料結構 : alter
刪除資料庫或資料表 : drop
資料操作語言 ( DML ) :
查詢資料 : select
插入資料 : insert
更新資料 : update
刪除資料 : delete
資料控制語言 ( DCL ) :
確定資料的更變 : commit
設定使用者對資料的操作權限 : grant
取消使用者操作資料的權限 : revoke
取消資料更變 : rollback
實用指令 :
顯示所有資料庫 : show databases;
選擇某一資料庫 : use 資料庫名稱;
列出資料庫底下的資料表 : show table from 資料庫名稱;
顯示目前正在使用的資料表 : show tables;
顯示資料表欄位設定 : describe 資料表名稱;
重新整理資料表 : optimize table 資料表名稱;
顯示某個資料表的欄位設定 : show columns from 資料表名稱;
顯示某個資料表的索引欄位設定 : show index from 資料表名稱;
顯示 :
1.顯示所有資料庫 : show databases;
2.顯示資料庫底下的資料表 : show table from 資料庫名稱;
3.顯示資料表的欄位 : show columns from 資料表名稱;
顯示目前正在使用的資料表 : show tables;
顯示資料表欄位設定 : describe 資料表名稱;
顯示某個資料表的索引欄位設定 : show index from 資料表名稱;
新增 :
1.新增資料庫 : create database 資料庫名稱;
2.新增資料表 : create table 資料表名稱 ( 欄位名稱1 資料型態,欄位名稱2 資料型態 );
3.新增欄位 : alter table 資料表名稱 add 欄位名稱 資料型態;
修改 :
3.修改資料表 : alter table 舊資料表名稱 rename 新資料表名稱;
修改欄位刪除 : alter table 資料表名稱 drop 欄位名稱
刪除 :
1.刪除資料庫 : drop database 資料庫名稱;
2.刪除資料表 : drop table 資料表名稱;
3.刪除欄位 : drop 欄位名稱;
欄位刪除 : alter table 資料表名稱 drop 欄位名稱
MySQL 指令、語法及管理
這是一份筆記,專門紀錄 towns 在操作時需要的語法、指令或操作方式,還有更多的資料分散在茫茫網海中等待大家的發覺,感謝每一位大大無私的奉獻
教學網站:http://www.hmes.kh.edu.tw/~jona/redhat/mysqlphp/mysqlsyntax.htm
官方語法說明:http://dev.mysql.com/doc/refman/5.1/zh/sql-syntax.html
教學網站:http://www.hmes.kh.edu.tw/~jona/redhat/mysqlphp/mysqlsyntax.htm
官方語法說明:http://dev.mysql.com/doc/refman/5.1/zh/sql-syntax.html
=================================================================
1、設定管理帳號:(mysql在安裝後,會建立一個root帳號,不過,沒有密碼)
mysqladmin -u root password abc123 <==設定root帳號,密碼為abc123
==================================================================
mysqladmin -u root password abc123 <==設定root帳號,密碼為abc123
==================================================================
2、列出mysql現行環境
mysqladmin variables -u root -p <==使用指令
mysql>show variables; <==使用mysql語法
==================================================================
mysqladmin variables -u root -p <==使用指令
mysql>show variables; <==使用mysql語法
==================================================================
3、登入資料庫
mysql -u root -p towns <==使用root帳號,登入towns資料庫
mysql -h localhost -u root -p towns <==使用root帳號登入本機端的towns資料庫, 做網路管理時,-h很重要
==================================================================
mysql -u root -p towns <==使用root帳號,登入towns資料庫
mysql -h localhost -u root -p towns <==使用root帳號登入本機端的towns資料庫, 做網路管理時,-h很重要
==================================================================
4、建立資料庫
4.1 mysql -u root -p <==使用root登入mysql
4.2 打入root密碼
4.3 create database towns; <==使用mysql語法,新增towns這個資料庫,“;”一定要加
4.4 mysqladmin -u root create cacti -p <==也可以用指令建立資料庫
===================================================================
4.1 mysql -u root -p <==使用root登入mysql
4.2 打入root密碼
4.3 create database towns; <==使用mysql語法,新增towns這個資料庫,“;”一定要加
4.4 mysqladmin -u root create cacti -p <==也可以用指令建立資料庫
===================================================================
5、刪除資料庫
5.1 mysql -u root -p <==使用root登入mysql
5.2 打入root密碼
5.3 drop database towns; <==使用mysql語法,刪除towns這個資料庫,“;”一定要加
===================================================================
5.1 mysql -u root -p <==使用root登入mysql
5.2 打入root密碼
5.3 drop database towns; <==使用mysql語法,刪除towns這個資料庫,“;”一定要加
===================================================================
6、列出現有資料庫
6.1 mysql -u root -p <==使用root登入mysql
6.2 打入root密碼
6.3 show databases;
6.4 mysql -e "show databases; " -p <==用指令顯示資料庫
6.5
6.1 mysqlshow -u root -p <==使用root登入mysql,並列出所有的資料庫
6.2 mysqlshow -u root -p towns <==使用root登入mysql,並列towns資料庫中的資料表
6.3 mysqlshow -u root -p towns towns <==使用root登入mysql,指定towns資料庫,並列出towns資料表
資料來源:http://tsuozoe.pixnet.net/blog/post/21283890
===================================================================
6.1 mysql -u root -p <==使用root登入mysql
6.2 打入root密碼
6.3 show databases;
6.4 mysql -e "show databases; " -p <==用指令顯示資料庫
6.5
6.1 mysqlshow -u root -p <==使用root登入mysql,並列出所有的資料庫
6.2 mysqlshow -u root -p towns <==使用root登入mysql,並列towns資料庫中的資料表
6.3 mysqlshow -u root -p towns towns <==使用root登入mysql,指定towns資料庫,並列出towns資料表
資料來源:http://tsuozoe.pixnet.net/blog/post/21283890
===================================================================
7、匯入資料庫
7.1 需先建立資料庫(如4),可以看一下,dump下來的語法中,是否有下CREATE DATABASE,有就不用建了
7.2 mysql -u root -p abc <'/home/towns/abc/abc.sql' <==將abc.sql匯入abc資料庫中
7.3 如語法中,有下CREATE DATABASE,有就不用建了
7.4. mysql -u root -p <'/home/towns/abc/abc.sql' <==將abc.sql匯入資料庫中(必需有CREATE DATABASE)
===================================================================
7.1 需先建立資料庫(如4),可以看一下,dump下來的語法中,是否有下CREATE DATABASE,有就不用建了
7.2 mysql -u root -p abc <'/home/towns/abc/abc.sql' <==將abc.sql匯入abc資料庫中
7.3 如語法中,有下CREATE DATABASE,有就不用建了
7.4. mysql -u root -p <'/home/towns/abc/abc.sql' <==將abc.sql匯入資料庫中(必需有CREATE DATABASE)
===================================================================
8、匯出資料庫
8.1 資料庫需存在
8.2 mysqldump -u root -p abc >'/home/towns/abc/abc.sql' <==將abc資料庫匯出到abc.sql檔案
8.3 mysqldump -u root -p -d abc > '/home/towns/abc/abc.sql' <==將abc資料庫的結構匯出到abc.sql檔案
===================================================================
8.1 資料庫需存在
8.2 mysqldump -u root -p abc >'/home/towns/abc/abc.sql' <==將abc資料庫匯出到abc.sql檔案
8.3 mysqldump -u root -p -d abc > '/home/towns/abc/abc.sql' <==將abc資料庫的結構匯出到abc.sql檔案
===================================================================
9、新增使用者(需先登入mysql server)
9.1 使用grant新增
9.1.1 grant all on abc.* to towns identified by 'abc123' with grant option;
建立towns使用者具有abc完整的管理權,密碼為abc123
9.1.2 grant all on abc.* to towns@localhost identified by 'abc123' with grant option;
建立本機端towns使用者具有abc完整的管理權,密碼為abc123
9.1.3 grant all on *.* to towns@localhost identified by 'abc123' with grant option;
建立本機端towns使用者具有所有資料庫完整的管理權,密碼為abc123
9.1.3.1 grant all on *.* to towns@localhost identified by 'abc123';
與上面的方法相同,獨缺“允許特權”
9.2 使用INSERT
9.3 CREATE USER
--------------------------------------------------------------------------------------------
9.4 變更密碼
9.4.1 grant all on *.* to towns@localhost identified by '123abc' with grant option;
將towns使用者的密碼,由abc123變成123abc
9.4.2 SET PASSWORD FOR 'root'@'localhost.localdomain' = PASSWORD( '*******' )
SET PASSWORD FOR 'root'@'localhost' = PASSWORD( '*******' )
===================================================================
9.1 使用grant新增
9.1.1 grant all on abc.* to towns identified by 'abc123' with grant option;
建立towns使用者具有abc完整的管理權,密碼為abc123
9.1.2 grant all on abc.* to towns@localhost identified by 'abc123' with grant option;
建立本機端towns使用者具有abc完整的管理權,密碼為abc123
9.1.3 grant all on *.* to towns@localhost identified by 'abc123' with grant option;
建立本機端towns使用者具有所有資料庫完整的管理權,密碼為abc123
9.1.3.1 grant all on *.* to towns@localhost identified by 'abc123';
與上面的方法相同,獨缺“允許特權”
9.2 使用INSERT
9.3 CREATE USER
--------------------------------------------------------------------------------------------
9.4 變更密碼
9.4.1 grant all on *.* to towns@localhost identified by '123abc' with grant option;
將towns使用者的密碼,由abc123變成123abc
9.4.2 SET PASSWORD FOR 'root'@'localhost.localdomain' = PASSWORD( '*******' )
SET PASSWORD FOR 'root'@'localhost' = PASSWORD( '*******' )
===================================================================
10、刪除使用者
10.1 DELETE FROM mysql.user WHERE User='towns' ;
刪除使用者towns
10.2 DROP USER test@localhost;
===================================================================
10.1 DELETE FROM mysql.user WHERE User='towns' ;
刪除使用者towns
10.2 DROP USER test@localhost;
===================================================================
11、登入資料庫帳號、密碼常見檔案位置
===================================================================
===================================================================
12、更新資料庫資料(在做任何更動後,建議要使用這指令)
12.1 flush privileges;
===================================================================
12.1 flush privileges;
===================================================================
13、在作業系統中,檢查權限之命令
13.1 mysqlaccess localhost user mysql -U root -P abc123 <==檢查user帳號的權限
13.2 mysqlaccess localhost towns abc123 -U root -P abc123 <==檢查towns帳號的權限
13.3 mysqlaccess localhost towns -U root -P <==檢查towns帳號的權限,會要求打入root 密碼
===================================================================
13.1 mysqlaccess localhost user mysql -U root -P abc123 <==檢查user帳號的權限
13.2 mysqlaccess localhost towns abc123 -U root -P abc123 <==檢查towns帳號的權限
13.3 mysqlaccess localhost towns -U root -P <==檢查towns帳號的權限,會要求打入root 密碼
===================================================================
14、權限管理
14.1 grant SELECT,INSERT,UPDATE on abc.* to towns@localhost identified by 'abc123';
開放三種權限(SELECT,INSERT,UPDAT)給towns(本機端)
14.2 開放多個資料庫(abc1、test、abc)給一個帳號(towns)管理,需一條一條加
grant all on abc1.* to towns@localhost identified by 'abc123';
grant all on test.* to towns@localhost identified by 'abc123';
grant all on abc.* to towns@localhost identified by 'abc123';
--------------------------------------------------------------------------------------------
14.3 權限
資料庫(DateBase),十五種權限:
ALL PRIVILEGES、ALTER、CREATE、DELETE、DROP、FILE、INDEX、INSERT、PROCESS、REFERENCES、RELOAD、SELECT、SHUTDOWN、UPDATE、USAGE
14.1 grant SELECT,INSERT,UPDATE on abc.* to towns@localhost identified by 'abc123';
開放三種權限(SELECT,INSERT,UPDAT)給towns(本機端)
14.2 開放多個資料庫(abc1、test、abc)給一個帳號(towns)管理,需一條一條加
grant all on abc1.* to towns@localhost identified by 'abc123';
grant all on test.* to towns@localhost identified by 'abc123';
grant all on abc.* to towns@localhost identified by 'abc123';
--------------------------------------------------------------------------------------------
14.3 權限
資料庫(DateBase),十五種權限:
ALL PRIVILEGES、ALTER、CREATE、DELETE、DROP、FILE、INDEX、INSERT、PROCESS、REFERENCES、RELOAD、SELECT、SHUTDOWN、UPDATE、USAGE
資料表(Table),八種權限:
SELECT、INSERT、UPDATE、DELETE、CREATE、DROP、INDEX、ALTER
SELECT、INSERT、UPDATE、DELETE、CREATE、DROP、INDEX、ALTER
資料欄(column),三種權限:
SELECT INSERT UPDATE
SELECT INSERT UPDATE
修改權限
14.4 REVOKE 權限 ON 資料庫(或資料表TABLE) TO user@host IDENTIFIED BY '密碼';
===================================================================
14.4 REVOKE 權限 ON 資料庫(或資料表TABLE) TO user@host IDENTIFIED BY '密碼';
===================================================================
GRANT ALL PRIVILEGES ON `abc` . * TO abc@% WITH GRANT OPTION ;
DROP USER towns@';
DROP USER test@localhost';
---------------------------------------------------------------------------------------------
CREATE USER test@localhost IDENTIFIED BY '********';
DROP USER towns@';
DROP USER test@localhost';
---------------------------------------------------------------------------------------------
CREATE USER test@localhost IDENTIFIED BY '********';
GRANT USAGE ON * . * TO test@localhost IDENTIFIED BY '********' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
SET PASSWORD FOR root@localhost = PASSWORD( '*********' ) <==在資料庫中修改密碼方式
===================================================================
16.忘記root密碼處理方式
Linux:
1.使用root登入
2.停止mysql服務(for redhad base)
service mysqld stop
3.使用mysqld_safe指令
mysqld_safe --skip-grant-tables &
此時,會開啟一個安全模式,並停住
16.忘記root密碼處理方式
Linux:
1.使用root登入
2.停止mysql服務(for redhad base)
service mysqld stop
3.使用mysqld_safe指令
mysqld_safe --skip-grant-tables &
此時,會開啟一個安全模式,並停住
4.開新的ssh,用root登入系統
5.使用mysql帳號登入mysql中
6.變更mysql中root密碼
update user set password = password('abc123') where user = 'root';
7.離開mysql
8.重新啟動mysql
9.使用root新密碼登入mysql
-----------------------------------------------------------------------------------------------
5.使用mysql帳號登入mysql中
6.變更mysql中root密碼
update user set password = password('abc123') where user = 'root';
7.離開mysql
8.重新啟動mysql
9.使用root新密碼登入mysql
-----------------------------------------------------------------------------------------------
Windows:
1.用系統管理員登陸系統。
2.停止MySQL的服務。
3.進入命令視窗,然後進入MySQL的安裝目錄,比如我的安裝目錄是c:\mysql,進入C:\mysql\bin
4.跳過許可權檢查啟動MySQL,
c:\mysql\bin>mysqld-nt --skip-grant-tables
5.重新打開一個視窗,進入c:\mysql\bin目錄,設置root的新密碼
c:\mysql\bin>mysqladmin -u root flush-privileges password "198651"
c:\mysql\bin>mysqladmin -u root -p shutdown
將newpassword替換為你要用的root的密碼,第二個命令會提示你輸入新密碼,重複第一個命令輸入的
密碼。
6.停止MySQL Server,用正常模式啟動Mysql
7.你可以用新的密碼連結到Mysql了。
命令:
net mysql start 啟動MYSQL
net stop mysql 停止MYSQL
下面以在Windows系統上為例,linux上將步驟 4 的mysqld-nt換為safe_mysqld即可
1 、停止mysql5服務:
net stop mysql5
2、開一個DOS視窗執行:
http://www.mscto.com
c:\mysql\bin>mysqld-nt --skip-grant-tables &
3、再開一個DOS視窗執行:
c:\mysql\bin>mysql mysql
> update user set password = password('123456') where user = 'root';
root密碼即為設置為123456!
4、啟動mysql5服務:
net start mysql5
1.用系統管理員登陸系統。
2.停止MySQL的服務。
3.進入命令視窗,然後進入MySQL的安裝目錄,比如我的安裝目錄是c:\mysql,進入C:\mysql\bin
4.跳過許可權檢查啟動MySQL,
c:\mysql\bin>mysqld-nt --skip-grant-tables
5.重新打開一個視窗,進入c:\mysql\bin目錄,設置root的新密碼
c:\mysql\bin>mysqladmin -u root flush-privileges password "198651"
c:\mysql\bin>mysqladmin -u root -p shutdown
將newpassword替換為你要用的root的密碼,第二個命令會提示你輸入新密碼,重複第一個命令輸入的
密碼。
6.停止MySQL Server,用正常模式啟動Mysql
7.你可以用新的密碼連結到Mysql了。
命令:
net mysql start 啟動MYSQL
net stop mysql 停止MYSQL
下面以在Windows系統上為例,linux上將步驟 4 的mysqld-nt換為safe_mysqld即可
1 、停止mysql5服務:
net stop mysql5
2、開一個DOS視窗執行:
http://www.mscto.com
c:\mysql\bin>mysqld-nt --skip-grant-tables &
3、再開一個DOS視窗執行:
c:\mysql\bin>mysql mysql
> update user set password = password('123456') where user = 'root';
root密碼即為設置為123456!
4、啟動mysql5服務:
net start mysql5
===================================================================
17.顯示目前mysql連線的threads狀態
mysql>show processlist; <==使用mysql語法
mysqladmin processlist -u root -p <==使用指令
17.顯示目前mysql連線的threads狀態
mysql>show processlist; <==使用mysql語法
mysqladmin processlist -u root -p <==使用指令
===================================================================
18.列出MySQL目前的狀態
mysql> show status; <==使用mysql語法
mysqladmin status -u root -p <==使用指令(結果不同)
===================================================================
19.列出mysql的使用者
SELECT User FROM mysql.user Order by User;
18.列出MySQL目前的狀態
mysql> show status; <==使用mysql語法
mysqladmin status -u root -p <==使用指令(結果不同)
===================================================================
19.列出mysql的使用者
SELECT User FROM mysql.user Order by User;
帳號管理
mysql中,帳號可設為僅本機使用、僅網路使用、兩者皆可,與mysql安全性有關
mysql>grant all on *.* to towns@localhost identified by 'abc123' with grant option;
利用語法建立towns可以管理所有資料庫、只能本機連線,擁有最大權限
mysql>grant all on *.* to towns@localhost identified by 'abc123';
利用語法建立towns可以管理所有資料庫、只能本機連線,少了grant權限,其他都有
mysql>grant all on *.* to towns@ identified by 'abc123' with grant option;
利用語法建立towns可以管理所有資料庫、能外部及本機連線,擁有最大權限
mysql>grant all on *.* to towns identified by 'abc123' with grant option;
利用語法建立towns可以管理所有資料庫、能外部及本機連線,擁有最大權限
mysql中,帳號可設為僅本機使用、僅網路使用、兩者皆可,與mysql安全性有關
mysql>grant all on *.* to towns@localhost identified by 'abc123' with grant option;
利用語法建立towns可以管理所有資料庫、只能本機連線,擁有最大權限
mysql>grant all on *.* to towns@localhost identified by 'abc123';
利用語法建立towns可以管理所有資料庫、只能本機連線,少了grant權限,其他都有
mysql>grant all on *.* to towns@ identified by 'abc123' with grant option;
利用語法建立towns可以管理所有資料庫、能外部及本機連線,擁有最大權限
mysql>grant all on *.* to towns identified by 'abc123' with grant option;
利用語法建立towns可以管理所有資料庫、能外部及本機連線,擁有最大權限
towns@locahost <==只能本機連線
towns@192.168.8.176 <==只能192.168.8.176連線,用於限制帳號連線IP
towns@127.0.0.1 <==只能本機連線
towns@locahost.localdomain <==只能本機連線
towns@ <==不限制連線來源,危險的設定,不過local不能連
towns <==不限制連線來源,危險的設定
towns@192.168.8.176 <==只能192.168.8.176連線,用於限制帳號連線IP
towns@127.0.0.1 <==只能本機連線
towns@locahost.localdomain <==只能本機連線
towns@ <==不限制連線來源,危險的設定,不過local不能連
towns <==不限制連線來源,危險的設定
註:使用 towns@ 及 towns 在 mysql5 以上的版本會發生仍無法遠端連線,因為 mysql5 以上的版本多加了兩個特別的帳號,@localhost 及 @[hostname],這兩組帳號在我們設定帳號時,如果沒有給尾巴,會自動加上去,造成帳號不論local 或 遠端都無法連入
19.1. mysql -e "GRANT ALL PRIVILEGES ON test.* TO test@localhost IDENTIFIED BY 'test' ; "
利用指令來新增帳號
利用指令來新增帳號
===================================================================
20.資料庫匯出管理
1. 更換資料庫
登入mysql後,選用某個資料庫
mysql> use test; <==連入test資料庫
20.資料庫匯出管理
1. 更換資料庫
登入mysql後,選用某個資料庫
mysql> use test; <==連入test資料庫
2 .顯示資料庫的資料表(需先選好資料庫,才能show tables)
mysql> show tables;
mysql -e "use test; show tables; " -p <==直接使用指令下SQL語法,並使用root登入(沒設user預設為root)
mysql> show tables;
mysql -e "use test; show tables; " -p <==直接使用指令下SQL語法,並使用root登入(沒設user預設為root)
3. 顯示特定資料表中的欄位
mysql> describe table_name;
mysql> describe table_name;
===================================================================
21.免密碼登入mysql資料庫(用於資料庫定期備份等……)
1.vim ~/.my.cnf
[client]
password=YOUR_MYSQL_PASSWORD
2.chmod 600 ~/.my.cnf
設定完成後,直接使用mysql -u [user],就可以登入了
資料來源:http://plog.longwin.com.tw/my_note-unix/2009/04/09/mysql-login-backup-script-no-password-2009
21.免密碼登入mysql資料庫(用於資料庫定期備份等……)
1.vim ~/.my.cnf
[client]
password=YOUR_MYSQL_PASSWORD
2.chmod 600 ~/.my.cnf
設定完成後,直接使用mysql -u [user],就可以登入了
資料來源:http://plog.longwin.com.tw/my_note-unix/2009/04/09/mysql-login-backup-script-no-password-2009
22. 關於帳號問題:當建立最大權限帳號後,該帳號無法本機登入
1. 安裝後系統自動產生的帳號,兩個空白(@localhost、@localhost.localdomain)及三個root (root@localhost、root@127.0.0.1、root@localhost.localdomain)帳號
2. 此時 root 帳號可以本機登入,不可遠端登入
3. 建立 towns 帳號後(建立最大權限帳號),towns 只能遠端登入,無法本機登入
4. 建立 towns@localhost 帳號,towns 可以本機登入
兩個空白帳號為安全性帳號,當我們使用towns登入時,沒寫完整帳號,會自動帶入@localhost,導致最大權限帳號無法本機登入,將兩個空白帳號刪除後,最大權限帳號(towns),就可以本機登入了。而這兩個空白帳號 towns 是透過第三方軟體,才刪除的
1. 安裝後系統自動產生的帳號,兩個空白(@localhost、@localhost.localdomain)及三個root (root@localhost、root@127.0.0.1、root@localhost.localdomain)帳號
2. 此時 root 帳號可以本機登入,不可遠端登入
3. 建立 towns 帳號後(建立最大權限帳號),towns 只能遠端登入,無法本機登入
4. 建立 towns@localhost 帳號,towns 可以本機登入
兩個空白帳號為安全性帳號,當我們使用towns登入時,沒寫完整帳號,會自動帶入@localhost,導致最大權限帳號無法本機登入,將兩個空白帳號刪除後,最大權限帳號(towns),就可以本機登入了。而這兩個空白帳號 towns 是透過第三方軟體,才刪除的
23. mysql 連線數設定
Linux 系統:my.cnf 檔中預設並無此參數,需手動加入
設定 /etc/my.cnf
max_connections=100 <==連線上限100
max_user_connections=15 <==使用者連線上限15
也可以設定單一帳號最大連線數,登入mysql後使用語法修改
grant all on *.* to towns with MAX_USER_CONNECTIONS 15 ; <== towns帳號最大連線數為15
Linux 系統:my.cnf 檔中預設並無此參數,需手動加入
設定 /etc/my.cnf
max_connections=100 <==連線上限100
max_user_connections=15 <==使用者連線上限15
也可以設定單一帳號最大連線數,登入mysql後使用語法修改
grant all on *.* to towns with MAX_USER_CONNECTIONS 15 ; <== towns帳號最大連線數為15
windows 系統:在安裝設定時configuration Wizard即有詢問Concurrent Conections,自定值可到1400
設定 C:\Program Files\MySQL\MySQL Server 5.1\my.ini
max_connections=2037 <==連線上限 2037
設定 C:\Program Files\MySQL\MySQL Server 5.1\my.ini
max_connections=2037 <==連線上限 2037
24. 使用phpmyadmin 設計資料庫
教學:http://sofree.cc/phpmyadmin-mysql/
教學:http://sofree.cc/phpmyadmin-mysql/
25. 改變mysql 預設參數
需修改 /etc/my.cnf檔
例1:變更預設封包大小(max_allowed_packet)
在[mysqld] 下面加入一行
max_allowed_packet = 20M
存檔後,重新啟重mysql
使用mysqladmin variables -u root -p 確認 預設封包值是否已變更
需修改 /etc/my.cnf檔
例1:變更預設封包大小(max_allowed_packet)
在[mysqld] 下面加入一行
max_allowed_packet = 20M
存檔後,重新啟重mysql
使用mysqladmin variables -u root -p 確認 預設封包值是否已變更
例2:變更資料庫預設語(character_set_server),這個只有mysql 4 才須要改
character_set_server = utf8
存檔後,重新啟重mysql
使用mysqladmin variables -u root -p 確認character_set_server 及 character_set_database 是否變為 utf8
註:不同的下指令方式得到不同的結果
towns 使用 mysqladmin variables -u root -p 出現了以下五個值皆改為UTF8
character_set_client
character_set_connection
character_set_database
character_set_results
character_set_server
character_set_server = utf8
存檔後,重新啟重mysql
使用mysqladmin variables -u root -p 確認character_set_server 及 character_set_database 是否變為 utf8
註:不同的下指令方式得到不同的結果
towns 使用 mysqladmin variables -u root -p 出現了以下五個值皆改為UTF8
character_set_client
character_set_connection
character_set_database
character_set_results
character_set_server
towns 登入資料庫後(mysql -u root -p),再使用 show variables;,得到以下結果
character_set_client ==> latin1
character_set_connection ==> latin1
character_set_database ==> utf8
character_set_results ==> latin1
character_set_server ==> utf8
character_set_client ==> latin1
character_set_connection ==> latin1
character_set_database ==> utf8
character_set_results ==> latin1
character_set_server ==> utf8
26. 資料庫編碼轉換問題
這個問題只會出現在 mysql 4版中
使用指令 SET NAMES utf8;將character_set_client、character_set_connection、character_set_results改為 UTF8,這個是臨時性的修改相關資料:感謝前輩說明 http://chiouss0817.wordpress.com/2006/05/15/internal-charset-conversion-of-mysql/
這個問題只會出現在 mysql 4版中
使用指令 SET NAMES utf8;將character_set_client、character_set_connection、character_set_results改為 UTF8,這個是臨時性的修改相關資料:感謝前輩說明 http://chiouss0817.wordpress.com/2006/05/15/internal-charset-conversion-of-mysql/
27. 免密碼登入mysql
這個在備份時很好用
vim /home/towns/.my.cnf <==建立或編輯.my.cnf檔
這個在備份時很好用
vim /home/towns/.my.cnf <==建立或編輯.my.cnf檔
[client] <== 加入這兩行,[ ]中是打下密碼
password= [mysql password]
password= [mysql password]
chmod 600 ~/.my.cnf <==調整檔案權限
28. mysql 效能觀察與調整
相關資料:
http://forum.slime.com.tw/thread208416.html
http://portable.easylife.tw/2074
http://blog.xuite.net/huenlil/note/5877606
http://forum.slime.com.tw/thread208416.html
http://portable.easylife.tw/2074
http://blog.xuite.net/huenlil/note/5877606
29. Mysql UTF-8 中文排序問題
towns在匯資料到Mysql資料庫中,如果欄位資料為中文UTF-8,會出現排序異常的情形,找了一些資料提供大家參考
1.SELECT * FROM `test` ORDER BY CONVERT(`name` USING big5) DESC
2.
註:DESC為大到小,ASC為小到大
towns在匯資料到Mysql資料庫中,如果欄位資料為中文UTF-8,會出現排序異常的情形,找了一些資料提供大家參考
1.SELECT * FROM `test` ORDER BY CONVERT(`name` USING big5) DESC
2.
註:DESC為大到小,ASC為小到大
coolhd大的blog http://www.ezdiy.org/forum/viewtopic.php?id=392
KKonline大的blog http://kkonline.pixnet.net/blog/post/34095805-mysql%E4%B8%AD%E7%9A%84utf8%E4%B8%AD%E6%96%87%E6%8E%92%E5%BA%8F%E7%9A%84%E8%A7%A3%E6%B1%BA%E6%96%B9%E6%A1%88
KKonline大的blog http://kkonline.pixnet.net/blog/post/34095805-mysql%E4%B8%AD%E7%9A%84utf8%E4%B8%AD%E6%96%87%E6%8E%92%E5%BA%8F%E7%9A%84%E8%A7%A3%E6%B1%BA%E6%96%B9%E6%A1%88
2013年10月23日 星期三
活动目录(Active Directory)及其相关概念
本地组,全局组,通用组区别
先谈作用范围:
加入本地组的用户只在本机有相应的权限,全局组用户或以登录本域电脑,也可以登录信任域的电脑,而通用组只能登录到本域内的电脑!
全局组Global:可以全局使用。即:可在本域和有信任关系的其它域中使用,体现的是全局性。MS建议的规则:基于组织结构、行政结构规划。
域本地组Domain local:只能在本域的域控制器DC上使用。MS建议的规则:基于资源(夹、打印机……)规划。
在域的混合模式下,只能把全局组加入到域本地组,即A-G-DL-P原则。
注意:2k/03域的默认模式为:混合模式。则域本地组:只能在本域的域控制器DC上使用。若域功能级别转成本机模式(或称2k纯模式),甚至03模式,域本地组可在全域范围内使用。
通用组Universal:组的成员情况,记录在全局目录GC中,非常适于林中跨域访问使用。集成了全局组和域本地组的长处。
AGDLP
A (account):用户帐户
G (Global group):全局组
DL (Domain local group):域本地组
P (Permission):许可
按照AGDLP的原则对用户进行组织和管理起来更容易
域本地组生效范围域本地组所属的域。
全局组本域和所有被信任的域。
通用组森林中所有的域。
组是可包含用户、计算机和其他组的活动目录或本机对象。
在Windows 2k域中,组根据其类型可以分为安全组(Securiy Group)和分布组(Distribution),根据其范围又可以分为全局组(Global Group)、域本地组(Domain Local Group)和通用组(Universal Group)。组的类型决定组可以管理哪些类型的任务,组的范围决定组可以作用的范围。
1.组的类型
(1)分布组:分布组一般用于组织用户。使用分布组可以向一组用户发送电子邮件,由于它不能用于与安全有关的功能,不能列于资源和对象权限的选择性访问控制表(DACL)中。因此,只有在电子邮件应用程序(如Exchange)中才用到分布组。
(2)安全组:安全组一般用于与安全性有关的授权功能。使用安全组可以定义资源和对象权限的选择性访问控制表(DACL),控制和管理用户和计算机对活动目录对象及其属性、网络共享位置、文件、目录和打印机等资源和对象的访问。安全组中的成员会自动继承其所属安全组的所有权限。
安全组具有分布组的全部功能,也可用作电子邮件实体。当向安全组发送电子邮件时,会将邮件发给安全组的所有成员。
先谈作用范围:
加入本地组的用户只在本机有相应的权限,全局组用户或以登录本域电脑,也可以登录信任域的电脑,而通用组只能登录到本域内的电脑!
全局组Global:可以全局使用。即:可在本域和有信任关系的其它域中使用,体现的是全局性。MS建议的规则:基于组织结构、行政结构规划。
域本地组Domain local:只能在本域的域控制器DC上使用。MS建议的规则:基于资源(夹、打印机……)规划。
在域的混合模式下,只能把全局组加入到域本地组,即A-G-DL-P原则。
注意:2k/03域的默认模式为:混合模式。则域本地组:只能在本域的域控制器DC上使用。若域功能级别转成本机模式(或称2k纯模式),甚至03模式,域本地组可在全域范围内使用。
通用组Universal:组的成员情况,记录在全局目录GC中,非常适于林中跨域访问使用。集成了全局组和域本地组的长处。
AGDLP
A (account):用户帐户
G (Global group):全局组
DL (Domain local group):域本地组
P (Permission):许可
按照AGDLP的原则对用户进行组织和管理起来更容易
域本地组生效范围域本地组所属的域。
全局组本域和所有被信任的域。
通用组森林中所有的域。
组是可包含用户、计算机和其他组的活动目录或本机对象。
在Windows 2k域中,组根据其类型可以分为安全组(Securiy Group)和分布组(Distribution),根据其范围又可以分为全局组(Global Group)、域本地组(Domain Local Group)和通用组(Universal Group)。组的类型决定组可以管理哪些类型的任务,组的范围决定组可以作用的范围。
1.组的类型
(1)分布组:分布组一般用于组织用户。使用分布组可以向一组用户发送电子邮件,由于它不能用于与安全有关的功能,不能列于资源和对象权限的选择性访问控制表(DACL)中。因此,只有在电子邮件应用程序(如Exchange)中才用到分布组。
(2)安全组:安全组一般用于与安全性有关的授权功能。使用安全组可以定义资源和对象权限的选择性访问控制表(DACL),控制和管理用户和计算机对活动目录对象及其属性、网络共享位置、文件、目录和打印机等资源和对象的访问。安全组中的成员会自动继承其所属安全组的所有权限。
安全组具有分布组的全部功能,也可用作电子邮件实体。当向安全组发送电子邮件时,会将邮件发给安全组的所有成员。
3、2 Windows域相关故障
本节介绍Windows 2000/03 AD域故障的排错。首先我们会介绍活动目录(Active Directory)及其相关概念,然后介绍和域故障排错相关的知识、工具软件的使用,最后以实例的形式讲解针对具体的各种域故障如何进行排错,如何有效 地利用组策略来管理AD域、管理网络。
通过本节的学习,读者可以掌握活动目录(Active Directory)及其相关概念,活动目录的功能、逻辑结构、物理结构;管理Windows 2000/03网络的方法,相关工具的使用;提高域故障排错能力,掌握活动目录上的最大应用:组策略。
3.2.1 活动目录(Active Directory)及其相关概念
要掌握Windows 2000/03 AD域故障排错,首先就得知道什么是域,什么是活动目录,活动目录的工作原理如何。以下内容作为后面域排错的基础理论知识至关重要。
3.2.1.1为什么要使用活动目录?
为什么要使用活动目录?
有效地管理网络,也象管理电话号码、管理图书一样。我们会把网络中众多的对象:计算机、用户、用户组、打印机、共享夹……,分门别类、井然有序地放 在活动目录这个大仓库中。使用活动目录对你公司的网络进行管理,才是积极有效的管理方法,而且网络规模越大,越能体现出活动目录在管理网络上的高效性。
3.2.1.2工作组(Workgroup)
当然如果网络规模很小,也可以使用Windows工作组模式来进行管理,但其管理功能极其有限。对于一台Windows计算机来讲,它要么隶属于工作组,要么隶属于域。工作组是微软的概念,一般的普遍称谓是对等网。
工作组通常是一个由不多于10台计算机组成的逻辑集合,如果要管理更多的计算机,微软推荐你使用域的模式进行集中管理,这样的管理更有效。你可以使 用域、活动目录、组策略等等各种功能,使你网络管理的工作量达到最小。当然这里的10台只是一个参考值,11台甚至20台,如果你不想进行集中的管理,那 么你仍然可以使用工作组模式。
工作组的特点就是实现简单,不需要域控制器DC,每台计算机自己管理自己,适用于距离很近的有限数目的计算机。顺便说明一下,工作组名并没有太多的 实际意义,只是在网上邻居的列表中实现一个分组而已;再就是对于“计算机浏览服务”,每一个工作组中,会自动推选出一个主浏览器,负责维护本工作组所有计 算机的NetBIOS名称列表。用户可以使用默认的工作组名workgroup,也可以任意起个名字(不必担心重名),同一工作组或不同工作组间在访问时 也没有什么分别,都需要输入目标计算机上的用户名、口令进行验证。
在工作组模式下,用户要访问10台计算机上的资源,就需要记住至少10个用户名和口令,工作组的这种分散管理性是它和域的集中式管理相比最大的缺点。AD域提供了对网络资源的集中控制,用户只需登录一次就可以访问整个活动目录的资源。
3.2.1.3活动目录(Active Directory)和域控制器(Domain Controller)
如果网络规模较大,这时我们就会考虑把网络中众多的对象(被称之为AD对象):计算机、用户、用户组、打印机、共享夹……分门别类、井然有序地放在 一个大仓库中,并做好检索信息,以利于查找、管理和使用这些对象(资源)。这个有层次结构的数据库,就是活动目录数据库,简称AD库。
接下来,我们应该把这个数据库放在哪台计算机上呢?是这样的,我们把存放有活动目录数据库的计算机就称之为域控制器(Domain Controller),简称DC。
3.2.1.4活动目录架构(Active Directory Schema)
架构是关于AD对象类型属性的定义。一种类型AD对象应该有哪些属性是由架构来定义的,比如它定义了用户对象有姓、名、登录名、口令等一系列的属 性。如果你想增加一个“性别”属性,这就要修改架构,一般称之为扩展AD架构,这要求你必须是林根域上的Schema Admins组成员才行。
整个活动目录的林中只有一个架构,因此在活动目录中创建的所有对象都遵从同样的规则。也就是说你对架构的修改将影响到林中的所有域,你没办法实现同一林中的一个域用户对象有“性别”属性,而另一个域没有。
3.2.1.5目录访问协议(DAP)和轻量级目录访问协议(LDAP)
AD对象存储在活动目录中,客户和应用程序就通过访问活动目录,来查找这些存放于活动目录中的对象。用户访问这些AD对象,当然要遵照一定的规则和 约定,这就是协议。客户访问目录所用的协议被称之为目录访问协议(DAP),DAP是在X.500中定义的一个复杂协议,它的简化版本被称之为轻量级目录 访问协议(LDAP),被微软的活动目录AD所采用。LDAP是用于查询和更新活动目录的目录服务协议。
3.2.1.6目录服务
回过头来,我们再来看一下目录服务的定义。目录服务由X.500标准定义,目录是指一个组织中关于人和资源信息的结构化、层次化的库。在微软的 Windows 2000/03网络中,这个目录服务就是指活动目录(Active Directory)服务,又比如在Novell公司的NetWare上使用的目录服务叫NDS(Novell目录服务),目录服务的实质就是一种网络服 务。
活动目录(Active Directory)作为网络目录服务,提供了用于组织、管理和控制网络资源的结构和功能,使我们有了集中管理Windows 2000/03网络的能力,管理员可以在一个地点管理整个网络。当然也可以利用OU进行委派控制,把一部分管理工作分派给OU管理员。
3.2.1.7活动目录的逻辑结构
活动目录的逻辑结构具有伸缩性,小:可以只是一台计算机,大:可以应用到大型跨国公司的网络。活动目录的逻辑组件包括:
活动目录林(Active Directory Forest)
活动目录树(Active Directory Tree)
活动目录域(Active Directory Domain)
组织单元(OU,Organizational Units)
全局目录(GC,Global Catalog)
接下来,以上图为例,进行相关讨论。这整个是一个林,mcse.com为林根域,有两个树,一个由mcse.com和它的子域 sub.mcse.com组成,另一个由my.com单独组成,林中有mcse.com,sub.mcse.com,my.com三个域。相关概念如下:
林根域:在林中建立的第一个域,如:mcse.com 树:共用连续的命名空间的多层域,如mcse.com(父域)和sub.mcse.com(子域)
树根域:树最高层的域,名最短。如:mcse.com和my.comWindows 2000/03可采用多层域结构,但最有效、最简便的管理方法仍是单域,所以大家在实际工作中要记住一个原则“能用单域解决,就不用多域”。
一、域(Domain)
域是活动目录中逻辑结构的核心单元。一个域包含许多计算机,它们由管理员设定,共用一个目录数据库,一个域有一个唯一的名字。
域是安全边界,保证域的管理员只能在该域内有必要的管理权限,除非得到其它域的明确授权。每个域都有自己的安全策略和与其它域的安全联系方式。注 意:1、无法在一个域内实现不同的帐号策略。2、父域对子域并没有任何管理特权,但要注意林根域下有企业管理员组Enterprise Admins,它默认对林中的其它域是有特权的。
父域和子域间默认就有双向可传递的信任关系,也就是说用户可以使用林中任意一个域内的计算机,登录到林内的任何一个域上(操作上就是使用欲要登录的 那个域的用户帐号);还可以,以自己本域的帐号登录,访问林内任何资源而不需要重新输入口令,当然要想能真正访问某一具体资源,在该资源上必须得有相应权 限才行。
二、组织单元(OU,Organizational Units)
在域下面,我们可以规划OU,放入计算机、用户、用户组等对象。也就是说通过OU,我们可以把对象组织起来,并形成一个有层次的逻辑结构。OU下面可以再建小OU,微软建议嵌套层次不要超过3层,我们平常一般1到2层就够用了。
在规划OU时,要考虑到将来的管理和组策略的应用,一般应把有相同需求的计算机、用户等放在同一OU下。可以基于部门、基于管理责任,也可以基于地理位置来规划,使其最佳地适应你的公司的需求。
在域下面规划OU,不是仅仅为得到一个层次结构,我们主要目的是要基于OU实现委派控制和将来链接相应的组策略来实现管理控制。委派的权限可以是完全控制,也可以是仅指定有限的权限(如:修改OU内的用户口令)给一个或几个用户和组。
在域下面规划OU,不是仅仅为得到一个层次结构,我们主要目的是要基于OU实现委派控制和将来链接相应的组策略来实现管理控制。委派的权限可以是完全控制,也可以是仅指定有限的权限(如:修改OU内的用户口令)给一个或几个用户和组。
三、活动目录林(Active Directory Forest)
在林中建立的第一个域,被称为林根域,如前面提到的mcse.com。在刚开始时候,我们这个林中只有一个树,树内只有一个域,域内只有一台计算机作为域控制器。也就是说此时我们整个林就只有一台计算机。
接下我们也可以为它添加子域,如sub.mcse.com.,再添加了一个新树下的域my.com。这样我们的这个林下就有了两个树:一个树由mcse.com域、和它的子域sub.mcse.com构成,一个树仅由my.com域构成。
四、活动目录树(Active Directory Tree)
活动目录树是Windows 2000/03网络中的层次组织,同一树下的域共用连续的名字空间。如父域mcse.com(它同时也是树根域、林根域),树根域的名字一定是最短的。父 域mcse.com和子域sub.mcse.com之间默认就有一个双向的、可传递的信任关系。也正由于这种信任关系的可传递性,使得 sub.mcse.com和my.com间也有了双向信任关系。
五、全局目录(GC,Global Catalog)
全局目录GC包含了AD对象属性的子集,换句话说就是GC中包含了林中所有对象的摘要信息,也就是相对重要一些的属性,如用户对象的姓、名和登录名。全局目录GC本身必须首先是域控制器DC,GC不具有唯一性,可以有多个。
全局目录GC使用户能够:1、查询整个林中的AD信息,无论数据在林中什么位置。以利于林中的跨域访问。2、使用通用组,即利用通用组成员身份的信息登录网络。
3.2.1.8活动目录的物理结构
在活动目录中,物理结构与逻辑结构是相互独立的。域控制器DC和站点(Site)组成了活动目录的物理结构。
利用站点,我们可规划域控制器DC放置,优化AD复制,使用户就近查找DC登录。同时,知道物理结构将有助于排除复制和登录过程中出现的问题。
一、域控制器(Domain Controllers)
Windows 2000/03域控制器上存储有活动目录的副本,管理目录信息的变化,并把这些变化复制给该域上的其它域控制器。域控制器存储目录数据,管理用户登录、验证和目录搜索。
一个域至少得有一台域控制器,为了容错就应该有两台,甚至多台。这主要要看网络的规模及分布。
二、活动目录复制
同一域内的DC之间要复制域信息,同一林内的DC间要复制林信息。活动目录复制确保AD信息对整个网络上的所有DC和客户机都是可用的。而活动目录的物理结构决定了复制发生的时间和地点。
AD复制采用多主控复制模型,也就是说每个DC都存储有AD的可写副本,彼此间的复制是双向的。这点与NT4域的PDC到BDC(目录服务的只读副本)的单主控复制不同。
在所有的DC把它们的变化都同步到活动目录中以前,DC在短时间内可能有不同的信息。按照默认,这一时间,同一站点内不越过3x5=15分钟。
三、站点(Site)
站点就是一个或几个高速带宽连接的IP子网的集合。管理员规划的站点,必须真实反映网络的物理结构和连接情况,把高速连接的部分规划为一个站点。也就是说,站点内一定是高速连接,站点间是低速连接。
管理员利用规划站点,可以为活动目录配置访问和复制拓扑。使用Windows 2000/03网络可以使用最有效的链接和时间安排来复制和登录。创建站点,我们可以:1、优化AD复制,如:让其半夜进行,一天一次。2、优化用户登 录,如:使用户就近查找本站点内高速连接的DC进行登录。
在活动目录中,物理结构与逻辑结构是相互独立的,没有什么必然的联系。一个站点可以有几个域,一个域也可以有几个站点。给站点起名字也是任意的,不必考虑和域名字间的联系。
3.2.1.9操作主机(或叫主控、FSMO)
前面我们介绍了AD复制采用多主控复制模型,但在有些特殊情况下,我们需要目录林进行单主控更新以避免冲突的发生。简单地说就是,这时我们就让一台DC说了算,来执行相关的AD改变,然后由它把变化复制到其它的DC上去,这台DC就是操作主机。共有五种操作主机,它们是:
架构主控 Schema master 林内唯一
域命名主控 Domain Naming master 林内唯一
PDC仿真器 PDC Emulator master 域内唯一
RID主控 RID master 域内唯一
基础结构主控 Infrastructure master 域内唯一
默认林根域的第一台DC就是这五种操作主机,同时还是GC。林内其它域的第一台DC是该域内的域唯一的那三种操作主机,即PDC仿真、RID、基础结构。。
操作主机具有唯一性,但我们可以把操作主机移动到其它DC上,只要保证原来的不再是操作主机,也就是说保证这种唯一性即可。
任何一台DC都可以是一操作主机(注意也只有DC才可以是操作主机),一台DC可以同时担当多种操作主机角色。
对于操作主机的管理,我们可 以查看、传送、查封。传送(Transfer)和查封(Seizing)的区别在于:传送是在原操作主机联机的情况下进行的,传送后得到了新的操作主机, 原来的操作主机就不再是操作主机了,传送保证操作主机的唯一性。查封是在原操作主机有故障或失效,脱机的情况下的强行传输,也就是重新推选一个新的操作主 机,会有数据的丢失。查封不保证操作主机唯一性,原操作主机必须格式化后再接入网络。
对于操作主机的管理,我们可 以查看、传送、查封。传送(Transfer)和查封(Seizing)的区别在于:传送是在原操作主机联机的情况下进行的,传送后得到了新的操作主机, 原来的操作主机就不再是操作主机了,传送保证操作主机的唯一性。查封是在原操作主机有故障或失效,脱机的情况下的强行传输,也就是重新推选一个新的操作主 机,会有数据的丢失。查封不保证操作主机唯一性,原操作主机必须格式化后再接入网络。
对操作主机的管理,可以使用图形化界面(管理的位置,将在下面逐个介绍说明),也可以使用Ntdsutil命令。下面我们简单介绍一下各种操作主机的作用。
一、架构主控(Schema master)
操作:AD架构/AD架构上右键/操作主机
说明:默认情况下,架构的MMC管理工具不被安装。需要:
1、运行adminpak.msi安装AD管理工具。Adminpak.msi可在03光盘I386目录下找到,或在03的windows\system32下找到。或者手动,开始/运行:regsvr32 schmmgmt.dll
2、开始/运行:MMC,文件/添加删除管理单元/添加/AD架构
关于架构,我们前面介绍过:架构是关于AD对象类型属性的定义。架构主控控制对架构的所有原始更新,也就是说对架构的修改、扩展,必须连接到林内唯一的这台架构主机上进行,然后由它复制到到林内所有的DC上。
注意:只有架构管理员组(Schema Admins)可以对架构进行修改,例如安装Exchange Server、ISA阵列,就需要扩展架构,你应该以架构管理员身份进行。
二、域命名(Domain Naming master)
操作:AD域和信任关系/AD域和信任关系上右键/操作主机
只有域命名主机可以向目录林中添加域或者删除域,保证域的名字在林中唯一。若域命名主机不可用,则无法在目录林中添加或删除域。
为保证域的名字在林中唯一,域命名主机需要查询GC。若林功能级别为Windows 2000林模式,GC必须和域命名主机在同一台计算机上才行。若林功能级别为Windows Server 2003林模式,不要求GC必须和域命名主机非得在同一台计算机上。
三、PDC仿真器(PDC Emulator master)
操作:AD用户和计算机/域上右键/操作主机/PDC标签
PDC仿真主机在五种操作主机中是最重要的,它的利用率很高。如果PDC仿真主机失效,必须尽快解决。它主要负责:
1、如果Windows 2000/03域中还有NT4的BDC,它充当NT BDC的PDC,并为早期版本客户机提供服务。顺便说一下,NT4的域控制器在2000/03域中只能是BDC,不可能是PDC。
2、管理运行NT、95/98计算机的密码变化,写入活动目录AD
3、最小化密码变化的复制等待时间。若一台DC接受到密码变化的请求,它必须通知PDC仿真主控。用户登录时,如密码错误,进行验证的DC必先送至PDC仿真主控。因为普通DC不能确认到底是密码错误,还是它没有及时与PDC仿真主控同步。
4、同步全域中的域控制器、成员计算机的时间。加入域的计算机,没有自己的时间。这是因为时间参数,在AD复制中是一个极为重要的因素,决定多主控 复制时,谁的修改最终生效。所以整个域的时间,都由PDC仿真主机来控制。你可以手动修改域成员计算机上的时间,但当AD复制过后,又会被改回成PDC仿 真主机上的时间。如果目录林是多层域结构,最终以林根域上的PDC仿真主机的时间为准。
5、防止重写GPO的可能,修改组策略设置,默认也是要连接到PDC仿真主控上才行。当然这个默认值是可以修改的,或者找不到PDC仿真主控时,系统会提示你连到其它DC。
四、相关标识符RID主控(RID master)
操作:AD用户和计算机/域上右键/操作主机/RID标签
在AD对象中的用户、组或计算机等对象,我们是可以为其分配权利权限的,被称为安全主体。安全主体与其它非安全主体对象的最主要的区别就在于:安全 主体对象有安全标识符(SID),可以为其分配权利权限。大家要明确:在活动目录中,所有对象都有GUID(全局唯一标识符),只有安全主体对象才有 SID。
当我们在域内创建安全主体(例如用户、组或计算机)对象时,域控制器将域的SID与安全主体对象RID标识符相结合,以创建唯一的安全标识符 (SID)。形如:
S-1-5-21-1553226038-2352558368-427082893-500
其中S-1-5表示NT Authority(标识符颁发机构);上例中的21-1553226038-2352558368- 427082893为这个域的SID,在这个位置还可能是32(表示本地/域内置的本地组),也可能是本机的SID;后面跟的500表示 administrator用户。
为了结合后面的案例,在这里我们把SID多作些介绍:
为了结合后面的案例,在这里我们把SID多作些介绍:
SID
|
名称
|
描述
|
S-1-5-域-500
|
Administrator
|
管理员帐户
|
S-1-5-域-501
|
Guest
|
供来宾访问计算机或访问域的内置帐户
|
S-1-5-域-502
|
krbtgt
|
密钥分发中心(KDC) 服务使用的服务帐户
|
其它还有:Domain Admins(512),Domain Users(513),Domain Guests(514)。用户帐户、全局组可在林内或有信任关系的其它域使用,所以域间不可重复。
| ||
S-1-5-域-515
|
Domain Computers
|
一个包括加入域的所有客户端和服务器的全局组
|
S-1-5-域-516
|
Domain Controllers
|
一个包括域中所有域控制器的全局组。
默认情况下,新的域控制器将添加到该组中。
|
S-1-5-根域-518
|
Schema Admins
|
域为混合模式时为全局组,纯模式时为通用组。默认成员林根域的 Administrator。被授权更改AD架构。
|
S-1-5-根域-519
|
Enterprise Admins
|
域为混合模式时为全局组,纯模式时为通用组。
默认成员林根域的 Administrator。
被授权更改AD林结构,例如添加子域,删除域。
|
S-
|
Administratrs
|
域/本地管理员,都只能在DC/本机使用,重复无妨。
|
其它还有:Users(545),Guests(546),Power Users(547),Account Operators(548),Server Operators(549),Print Operators(550),Backup Operators(551),Replicators(552),Remote Desktop Users(555)。都只能在本域内使用,域间重复无妨。
| ||
S-
|
Everyone
|
包括所有用户(甚至匿名用户和来宾)的组。成员身份由操作系统控制。在03中管理员可决定是否包括Gest。
|
S-
|
Service
|
一个包括所有作为服务登录的安全主体的组。成员身份由操作系统控制。
|
S-
|
Anonymous
|
一个包括所有以匿名方式登录的用户的组。成员身份由操作系统控制。
|
S-
|
Local System
|
操作系统使用的服务帐户。
|
S-
|
Local Service
|
本地服务
|
S-
|
Network Service
|
网络服务
|
RID操作主机就是负责向域内的DC分配 RID 池,每一个 Windows 2000/03 DC 都会收到用于创建对象的 RID 池(默认为 512)。RID 操作主机通过分配不同的池来确保这些 ID 在每一个 DC 上都是唯一的。若DC分到的RID池被用尽,可以向RID操作主机自动再次申请。
通过 RID 主机,还可以在同一目录林中的不同域之间移动所有对象。当对象从一个域移动到另一个域上时,RID主控将该对象从域中删除。
五、基础结构主控(Infrastructure master)
操作:AD用户和计算机/域上右键/操作主机/结构 标签
基础结构主机确保所有域间操作对象的一致性。当引用另一个域中的对象时(如域本地组中包括另一域的一个全局组),此引用包含该对象的全局唯一标识符 (GUID)、安全标识符 (SID) 和可分辨的名称 (DN)。
如果被引用的对象移动,则在域中担当结构主机角色的 DC 会负责更新该域中跨域对象引用中的 SID 和 DN。也就是说,基础结构主机负责更新外部对象的索引(组成员资格),显然,单域不需要基础结构主机。
基础结构主机是基于域的,目录林中的每个域都有自己的基础结构主机。基础结构主机不应该和GC在同一个DC上,应手动移走,否则将不起作用。前面我 们提到过,默认林根域的第一台DC就是这五种操作主机,同时还是GC。也就是说,这时基础结构主机实际上是失效的,不起作用。但这时只有一个林根域,基础 结构主机不起作用也没关系,若以后构建多层域,需要手动将其与GC分开。
3.2.1.10域功能级别和林功能级别
域功能
级别
|
2000
|
2000混合模式
|
DC:可包含NT4的BDC。
|
2000本机模式
|
所有DC均为2000,可以使用通用组、多主复制、SID历史、通讯组与安全组的转换、组的同名嵌套。
| ||
03
|
2000混合域功能级级别
|
只是DC中多了03,即DC:NT、2000、03
| |
2000本机域功能级级别
|
只是DC中多了03,即DC:2000、03,
| ||
03临时域功能级级别
|
不常用,DC:03、NT。需要专门工具
| ||
03域功能级级别
|
所有DC均为03,可以重命名域
| ||
林功能
级别
|
2000林功能级别
|
默认值,域命名主控必须是GC
| |
03林功能级别
|
需要所有DC均为03,提升林时,会自动提升所有域为03域功能级级别。可传递的林信任关系、更灵活的组成员复制(基于操作)、更好的站点间路由选择、对GC的修复、架构的重新定义。
|
3.2.1.11标识名(DN)和相对标识名(RDN)
前面我们提到了客户使用LDAP协议来访问活动目录中的对象,那么LDAP是如何来标识一个在活动目录中的对象的呢?换句话说,LDAP是如何在活 动目录找到对象A,而不会错找成对象B的呢?这就要用到一个命名路径,即标识名(DN)和相对标识名(RDN)。DN为活动目录中的对象标识出LDAP命 名的完整路径;RDN用来标识容器中的一个对象,即它总是DN中的最前面一项。
如:在Active Directory用户和计算机中,在mcse.com域下有个OU:Finance(财务),在Finance下又有个小OU:Sales(销售),在 其下有个用户,名叫Suzan Fine。则此用户对象的DN为:CN=Suzan Fine, U=Sales, U=Finance, DC=mcse DC=com。RDN为:CN=Suzan Fine。
说明:
1、其中DC表示DNS名字的域组件,OU表示组织单元,CN表示普通名字,CN可用于除了前两种以外的所有对象。比如:如果用户帐号不在OU中而 是在默认容器Users中,为表示Users容器应使用CN。即:CN=Suzan Fine, CN=Users, DC=mcse, DC=com。
2、如果在命令中引用DN,且DN中有空格,如CN=Suzan Fine。应使用引号将整个DN括起来。如“CN=Suzan Fine, CN=Users, DC=mcse, DC=com”。
3.2.1.12 域名服务系统(DNS)
Windows 2000/03的活动目录服务与域名服务系统(DNS)紧密结合、集成一起,所以DNS故障是导致AD故障非常主要的因素之一,有统计数据显示AD故障的60%来自于DNS。
使用活动目录、构建Windows 2000/03的域,网络上必须有可用的DNS服务器,并且必须支持SRV记录(Service Location Resource Record)和动态更新功能。如:MS Win2000/03 DNS,UNIX的DNS BIND 8.12及以上版本,使用已有的NT4 DNS是不行的。
构建NT4域并不需要DNS的支持,但2000/03域必须有DNS,且满足上述要求。
SRV记录的作用是指明域和站点(site)的DC、PDC仿真、GC是谁。动态更新也是2000/03DNS的新特色,管理员不必再象NT4 DNS那样手动为计算机创建或修改相应记录,在域成员计算机重启,或改名、改IP时依赖周期性更新,自动动态注册或更新相应DNS记录。
如果没有DNS服务器的话,也不一定非得预装DNS,可以在安装AD过程中,选择在本机上安装2000 DNS。而且推荐初学者使用这种方法,因为系统会根据你提供的FQDN域名,自动创建好DNS区域(zone),并配置成AD集成区域,仅安全动态更新。 如果需要向外连或反向解析,用户只需配置上转发器和反向区域即可,不需要的话,直接就可以用了。
如果决定在安装AD过程中在本机安装DNS,应在安装前,将本机TCP/IP配置/DNS服务器指向自己,这样在安装AD完成后重启时,SRV记录 将被自动注册到DNS服务器的区域当中去的,生成四个以下划线开头的文件夹,如_msdcs,03DNS在这里夹的层次结构有所变化,但本质没变。当然如 果忘了指,也可以后补上,只不过需要多重启一次。
03DNS新特色:
1、条件转发。
转发器的作用是,如果本机无法解析DNS客户所发的查询请求,转发给转发器所指定的DNS服务器。在03DNS中新增了条件转发,即不同的DNS区域,可指定不同的转发器。
利用条件转发,不仅可改善DNS查询,更重要的是有其实际意义。例如两个公司合并时,可将利用条件转发,基于对方域名将转发器配置为指向对方的 DNS服务器。这样DNS服务器就能解析对方网络中的DNS名称,并对其他网络信息建立巨大的缓存。又由于不必查询 Internet 上的 DNS 服务器,将大大减少DNS查询所用的时间。
2、存根(stub)区域
上面的场景也可用存根区域来解决,在03DNS中创建对方的存根区域,并指明对方的权威DNS服务器。注意在存根区域下只有对方域的SOA、NS及与NS相关的A记录,不会有对方其它的具体资源的记录。在有些情况下,与条件转发的作用还是有所不同的。
3.2.1.13 组策略(Group Policy)
组策略是活动目录上的最大应用,可以应用于2000/XP/03。组策略使许多重复的管理工作自动化、简单化,所以说组策略的应用程度是衡量2000/03管理员的重要尺度。
组策略对象(GPO)也是一种AD对象,并且可设置权限。在域内创建,可链接到站点(Site)、域(Domain)、组织单元(OU),使组策略 的设置对一定范围的计算机/用户生效。本地(Local)策略可理解为一个特殊的组策略:在工作组下也可使用,只对本地用户和该计算机生效。使用 gpedit.msc进行管理,设置后立即生效,不需刷新。
组策略设置的默认优先级是:LSDOU原则,本地策略优先级最低。可通过阻止继承(将阻止所有策略继承)、禁止替代(也就是必须继承,针对某个具体的GPO来设置)、组策略筛选器(实质为GPO权限)改变默认的优先级。
组策略对象(GPO)包括组策略容器(GPC)和组策略模板(GPT)两部分。GPC位于AD用户和计算/System/Policies(需要选 中查看下的高级功能),仅是GPO的属性和版本信息,计算机通过GPC来查找GPT。具体的策略设置值存储在GPT中,位于DC的windows\ sysvol\sysvol下,以GUID为文件夹名。注意安装AD系统自带的两个GPO,使用固定的GUID,分别是:
默认域的策略的GUID为31B2F340-016D-11D2-945F-00C04FB984F9
默认域控制器的策略的GUID为6AC1786C-016F-11D2-945F-00C04FB984F9。
组策略具体的设置内容2000到达600多条,03又新增200条左右。
组策略设置中的安全模板(计算机和用户)部分,通过注册表生效,但并不永久改变注册表。若用户手动修改注册表中的组策略设置值,若策略未变,组策略不负责强制改回。
安全策略是组策略的子集(一部分),只不过其MMC工具被单独提出来,放到管理工具下了。
標籤:
Active Directory
訂閱:
文章 (Atom)