MySQL中文參考手冊5(安裝MySQL下)ww w.iTbulo.coUkonL
轉載 譯者:晏子譯者:晏子 ([email protected])主頁:http://linuxdb.yeah.net
4.12 Win32 注意事項
這節描述在Win32上安裝和使用MySQL,這也在MySQL Win32分發所帶的“readme”文件中描述。
4.12.1 在Win32上安裝MySQL
如果你沒有一個注冊的MySQL版本,你應該首先下載共享軟件版本,從:
MySQL 3.21.29
如果你准備從一些其他程序連接MySQL,你也可能需要MyODBC驅動程序。你可在MySQL下載頁找到。
安裝任何一個分發,在某個空目錄解壓縮它並且運行Setup.exe程序。
缺省地,MySQL-Win32被配置安裝在“C:mysql”。如果你想要在其它地方安裝MySQL,在“C:mysql”安裝它,然後將安裝移到你想要的地方。如果你真的移走MySQL,你必須通過提供選項給mysqld告訴mysqld那裡的所有一切,使用C:mysqlinmysqld --help顯示所有的選項目!例如,如果你移動MySQL分發到“D:programsmysql”,你必須用D:programsmysqlinmysqld --basedir D:programsmysql來啟動mysqld。
用登記的MySQL版本,你也可以創建一個“C:my.cnf”文件來保存用於MySQL服務器的任何缺省選項。拷貝文件“mysqlmy-example.cnf”到“C:my.cnf”並且編輯它來適用於你的安裝。注意你應該用"/"而不是""指定所有的路徑。如果你使用“”,你需要指定兩次(“”),因為在MySQL中“”是轉義字符,見4.15.4 選項文件。
4.12.2 在Win95/Win98上啟動MySQL
MySQL使用 TCP/IP 把一個客戶連接到一個服務器。(這將允許在你的網絡上任何機器連接你的MySQL服務器)。因此,你必須在啟動MySQL前在你的機器上安裝TCP/IP,你可以在你的Windows CDROM上找到TCP/IP 。
注意:如果你正在使用一個舊的Win95版本(例如OSR2),很有可能你有一個老的Winsock包!MySQL需要Winsock 2!你可從微軟得到最新的Winsock。Win98有新的Winsock 2庫作為缺省,這樣上述不適用於Win98。
你能使用2個不同的MySQL服務器:
mysqld 用完整調試和自動存儲器分配檢查編譯
mysqld-opt 對Pentium 處理器優化。
上面兩個應該在任何 > = i386的Intel處理器上工作 。
為了啟動mysqld服務器,你應該啟動一個MSDos窗口並鍵入:
C:mysqlinmysqld
這將在一個沒有窗口的背景啟動mysqld。
你可以這樣殺死MySQL服務器,執行:
C:mysqlinmysqladmin -u root shutdown
注意Win95/Win98不支持命名管道的創建。在Win95/Win98上,你只能使用命名管道連接運行在一個NT服務器上的遠程MySQL。
4.12.3 在NT上啟動MySQL
Win95/Win98小節也適用於在NT上的MySQL,有下列差別:
為了是MySQL用TCP/IP工作,你必須安裝服務包3(service pack 3)(或更新)!
對於NT,服務器名字是mysqld-nt。通常你應該在 NT 上安裝MySQL作為一種服務:
C:mysqlinmysqld-nt --install
(你可以在 NT 上使用mysqld或mysqld-opt服務器,但是那些不能作為一種服務啟動或使用命名管道。)
你可以用下列命令啟動和停止MySQL服務:
NET START mysql
NET STOP mysql
注意在這種情況下,你不能對mysqld-nt使用任何其他選項!
如果你需要用任何選項啟動mysqld-nt,你也可以作為在NT上的一個獨立程序運行mysqld-nt!如果你在NT上沒有選項啟動mysqld-nt,mysqld-nt嘗試啟動自己作為一種有默認選項的服務。如果你停止了mysqld-nt,你必須用NET START mysql啟動它。
服務用MySql名字被安裝,一旦安裝,它必須使用服務控制管理器(SCM)實用程序啟動服務(在控制面板中找到)或使用NET START MySQL命令。如果需要任何選項,在你啟動MySQL服務前必須作為SCM實用程序的“啟動參數”指定它們。一旦運行,可使用mysqladmin或從SCM實用程序或使用命令NET STOP MySQL停止mysqld-nt。如果你使用SCM停止mysqld-nt,SCM有一條關於mysqld shutdown normally奇怪的消息,當作為一種服務運行時,mysqld-nt沒有控制台的存取權限,所以沒有消息可以看見。
在NT上你可以得到下列服務錯誤消息:
Permission Denied (權限拒絕) 意味著它不能找到mysqld-nt.exe
Cannot Register (不能登記) 意味著路徑是不正確的
如果你作為一種服務安裝mysqld-nt有問題,嘗試用完整的路徑啟動它:
C:mysqlinmysqld --install
如果這還不工作,你能通過在注冊表修正路徑使得mysqld-nt正確啟動!
如果你不想作為一種服務啟動mysqld-nt,你可以如下啟動它:
C:mysqlinmysqld-nt --standalone
或
C:mysqlinmysqld-nt --standalone --debug
最新的版本在“C:mysqld.trace”給你一個調試蹤跡。
4.12.4 在 Win32 上運行 MySQL
MySQL在所有Win32平台上支持TCP/IP和NT上命名管道。如果客戶安裝了TCP/IP,缺省是對NT上的本地連接使用命名管道而對所有其他情形使用TCP/IP,主機名指定使用哪個協議:
主機名 協議
空 (沒有) 在NT上,首先嘗試命名管道;如果它不工作,使用TCP/IP。在Win95/Win98上,使用TCP/IP。
. 命名管道
localhost TCP/IP到當前主機
主機名 TCP/IP
通過指定命名管道--pipe選項,你可以強制一個MySQL客戶使用命名管道。使用--socket選項指定管道的名字。
通過執行下列命令,你能測試MySQL是否正在工作:
C:mysqlinmysqlshow
C:mysqlinmysqlshow -u root mysql
C:mysqlinmysqladmin version status proc
C:mysqlinmysql test
如果在Win95/Win98上mysqld很慢地回答連接,可能你的DNS有問題。在這種情況中下,用--skip-name-resolve啟動mysqld並且在MySQL授權表中僅使用localhost和IP數字。在你連接運行在NT上一個mysqld-nt的MySQL服務器時,使用--pipe指定命名管道使用的參數,你也能避開DNS,對大多數MySQL客戶是可行的。
有2個版本的MySQL命令行工具:
mysql 用原生Win32編譯,它提供很有有限的文本編輯能力。
mysqlc 用Cygnus GNU 編譯器和庫編譯,它提供readline編輯。
如果你想使用mysqlc.exe,你必須拷貝“C:mysqllibcygwinb19.dll”到“windowssystem”(或類似的地方)。
在Win32上缺省的權限給所有本地用戶以所有數據庫的完全權限。為了使MySQL更安全,你應該為每個用戶設置口令並刪除mysql.user中有Host='localhost'和User='的行。
你也應該為root用戶增加一個口令:(下列例子通過刪除匿名用戶,允許任何人存取“測試”數據庫)
C:mysqlinmysql mysql
mysql> DELETE FROM user WHERE Host='localhost' AND User=';
mysql> QUIT
C:mysqlinmysqladmin reload
C:mysqlinmysqladmin -u root password your_password
在你設置了口令以後,如果你想要關掉mysqld服務器, 你能使用這個命令做到:
mysqladmin -- user=root -- password=your_password shutdown
如果你正在使用在windows下的MySQL共享軟件版本,上面的命令將以 parse error near 'SET OPTION password'的錯誤而失敗,這是因為,這是共享軟件版本,它基於MySQL 3.21,沒有SET PASSWORD命令。
對共享軟件版本,你能如下設置root用戶口令:
C:mysqlinmysql mysql
mysql> UPDATE user SET password=PASSWORD('your password') WHERE user='root';
mysql> QUIT
C:mysqlinmysqladmin reload
有注冊的MySQL版本,你能很容易地用GRANT和REVOKE命令增加新用戶和更改權限,見7.26 GRANT和REVOKE句法。對Windows 的共享軟件版本,必須使用INSERT、UPDATE和DELETE在mysql數據庫中的一個表來管理用戶和他們的權限,見6.13 存取拒絕(Access denied)的錯誤原因。
4.12.5 用SSH從Win32連接一個遠程MySQL
這是一個關於怎樣用SSH 得到一個安全的連接遠程MySQL服務器的注意事項(David Carlson)。