?? manual_tools.html
字號:
<html>
<head>
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb2312">
<title>MySQL中文參考手冊-12 MySQL實用程序</title>
<style type="text/css">
<!--
.p14{font-size:14.8px;font-family:宋體;line-height:14pt;}
a:hover{color:red;}
a.t1:visited{color:red;}
-->
</style>
</head>
<body BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#101090" VLINK="#7030B0" class="p4">
<h1><img src="Img/mysql-logo.gif" alt="mysql-logo.gif (3082 bytes)" WIDTH="127" HEIGHT="60"><font color="#FF0000">MySQL中文參考手冊</font></h1>
<p>譯者:晏子 <a href="mailto:(clyan@sohu.com">(clyan@sohu.com</a>)
主頁:<a href="http://linuxdb.yeah.net">http://linuxdb.yeah.net</a></p>
<hr>
<p><a HREF="manual_Introduction.html">第一章</a>, <a HREF="manual_MySQL_Benchmarks.html">前一章</a>, <a HREF="manual_Maintenance.html">下一章</a>,
<a HREF="manual_Concept_Index.html">最后一章</a>,<a HREF="manual_toc.html">目錄</a>.
</p>
<hr>
<h1><a NAME="Tools" HREF="manual_toc.html#Tools">12 MySQL實用程序</a></h1>
<h2><a NAME="Programs" HREF="manual_toc.html#Programs">12.1 各種MySQL程序概述</a></h2>
<p>所有使用<code>mysqlclient</code>客戶庫與服務器通信的<strong>MySQL</strong>客戶使用下列環境變量:
</p>
<table BORDER="1" WIDTH="100%" NOSAVE="#101090" class="p4">
<tr>
<td><strong>名字</strong> </td>
<td><strong>說明</strong> </td>
</tr>
<tr>
<td><code>MYSQL_UNIX_PORT</code> </td>
<td>缺省套接字;用于連接<code>localhost</code> </td>
</tr>
<tr>
<td><code>MYSQL_TCP_PORT</code> </td>
<td>缺省 TCP/IP 端口</td>
</tr>
<tr>
<td><code>MYSQL_PWD</code> </td>
<td>缺省口令</td>
</tr>
<tr>
<td><code>MYSQL_DEBUG</code> </td>
<td>調試時調試-蹤跡選項</td>
</tr>
<tr>
<td><code>TMPDIR</code> </td>
<td>臨時表/文件被創建的目錄</td>
</tr>
</table>
<p>使用<code>MYSQL_PWD</code>是不安全的。見<a HREF="manual_Privilege_system.html#Connecting">6.3 與MySQL服務器連接</a>。 </p>
<p><a NAME="IDX648"></a><tt>“mysql”</tt>客戶使用<code>MYSQL_HISTFILE</code>環境變量中命名的文件來保存命令行歷史,歷史文件的缺省值是<tt>“$HOME/.mysql_history”</tt>,這里<code>$HOME</code>是<code>HOME</code>環境變量的值。
</p>
<p>所有<strong>MySQL</strong>程序取許多不同的選項,然而,每個<strong>MySQL</strong>程序提供一個<code>--help</code>選項,你可以使用它得到程序不同選項的完整描述。例如,試一試<code>mysql
--help</code>。 </p>
<p>你能用一個選項文件覆蓋所有的標準客戶程序的缺省選項。見<a HREF="manual_Installing.html#Option_files">4.15.4 選擇文件</a>。 </p>
<p>下表簡單地描述<strong>MySQL</strong>程序:
<dl COMPACT="manual_Installing.html#Option_files">
<dt><code>myisamchk</code> </dt>
<dd><a NAME="IDX655"></a>描述、檢查、優化和修復<strong>MySQL</strong>表的使用程序。因為<code>myisamchk</code>有許多功能,它在其自己的章節中描述。見<a HREF="manual_Maintenance.html#Maintenance">13 維護MySQL安裝</a>。 <a NAME="IDX656"></a>
</dd>
<dt><code>make_binary_release</code> </dt>
<dd>制作一個編譯<strong>MySQL</strong>的一個二進制的版本。這能用FTP傳送到在<code>ftp.tcx.se</code><tt>網站的“/pub/mysql/Incoming”</tt>以方便其它<strong>MySQL</strong>用戶。
<a NAME="IDX657"></a> </dd>
<dt><code>msql2mysql</code> </dt>
<dd>一個外殼腳本,轉換<code>mSQL</code>程序到<strong>MySQL</strong>。它不能處理所有的情況,但是當轉換時,它給出一個好起點。
<a NAME="IDX658"></a> <a NAME="IDX659"></a> </dd>
<dt><code>mysql</code> </dt>
<dd><code>mysql</code>是一個簡單的SQL外殼(具有GNU<code> readline</code> 能力),它支持交互式和非交互式使用。當交互地使用時,查詢結果以ASCII表的格式被表示。當非交互地使用時(例如,作為一個過濾器),結果是以定位符分隔的格式表示。(輸出格式可以使用命令行選項改變)你可以簡單地象這樣運行腳本:
<pre>shell> mysql database < script.sql > output.tab
</pre>
<p>如果你在客戶中由于內存不足造成問題,使用<code>--quick</code>選項!這迫使<code>mysql</code>使用<code>mysql_use_result()</code>而非<code>mysql_store_result()</code>來檢索結果集合。
<a NAME="IDX660"></a> </p>
</dd>
<dt><code>mysqlaccess</code> </dt>
<dd>一個腳本,檢查對主機、用戶和數據庫組合的存取權限。 <a NAME="IDX661"></a> </dd>
<dt><code>mysqladmin</code> </dt>
<dd>執行管理操作的實用程序,例如創建或拋棄數據庫,再裝載授權表,清洗表到磁盤中和再打開日志文件。<code>mysqladmin</code>也可以被用來從服務器檢索版本,進程和狀態信息。見<a HREF="manual_Tools.html#mysqladmin">12.2 管理一個 MySQL 服務器</a>。</dd>
<dt><code>mysqlbug</code> </dt>
<dd><strong>MySQL</strong>錯誤報告腳本。當填寫一份錯誤報告到<strong>MySQL</strong>郵件列表時,應該總是使用該腳本。
<a NAME="IDX663"></a> </dd>
<dt><code>mysqld</code> </dt>
<dd>SQL守護進程。它應該一直在運行。 <a NAME="IDX664"></a> </dd>
<dt><code>mysqldump</code> </dt>
<dd>以SQL語句或定位符分隔的文本文件將一個<strong>MySQL</strong>數據庫傾倒一個文件中。這是最早由Igor
Romanenko編寫的自由軟件的增強版本。見<a HREF="manual_Tools.html#mysqldump">12.3
從MySQL數據庫和表傾倒結構和數據</a>。 <a NAME="IDX665"></a></dd>
<dt><code>mysqlimport</code> </dt>
<dd>使用<code>LOAD DATA INFILE</code>將文本文件倒入其各自的表中。見<a HREF="manual_Tools.html#mysqlimport">12.4 從文本文件導入數據</a>。 <a NAME="IDX666"></a> </dd>
<dt><code>mysqlshow</code> </dt>
<dd>顯示數據庫,表,列和索引的信息。 <a NAME="IDX667"></a> </dd>
<dt><code>mysql_install_db</code> </dt>
<dd>以缺省權限創建<strong>MySQL</strong>授權表。這通常僅被執行一次。就是在系統上第一次安裝<strong>MySQL</strong>時。
<a NAME="IDX668"></a> </dd>
<dt><code>replace</code> </dt>
<dd>一個實用程序,由<code>msql2mysql</code>使用,但是有更一般的適用性。<code>replace</code>改變文件中或標準輸入上的字符串。使用一臺有限狀態機首先匹配更長的字符串,能被用來交換字符串。例如,這個命令在給定的文件中交換<code>a</code>和<code>b</code>:
<pre>shell> replace a b b a -- file1 file2 ...
</pre>
</dd>
<dt><code>safe_mysqld</code> </dt>
<dd>一個腳本,用某些更安全的特征啟動<code>mysqld</code>守護進程,例如當一個錯誤發生時,重啟服務器并且記載運行時刻信息到一個日志文件中。
</dd>
</dl>
<h2><a NAME="mysqladmin" HREF="manual_toc.html#mysqladmin">12.2 管理一個MySQL服務器</a></h2>
<p>用于執行管理性操作。語法是: </p>
<pre>shell> mysqladmin [OPTIONS] command [command-option] command ...
</pre>
<p>通過執行<code>mysqladmin --help</code>,你可以得到你<code>mysqladmin</code>的版本所支持的一個選項列表。
</p>
<p>目前<code>mysqladmin</code>支持下列命令: </p>
<table border="1" width="100%" class="p4">
<tr>
<td>create databasename </td>
<td>創建一個新數據庫</td>
</tr>
<tr>
<td>drop databasename </td>
<td>刪除一個數據庫及其所有表</td>
</tr>
<tr>
<td>extended-status </td>
<td>給出服務器的一個擴展狀態消息</td>
</tr>
<tr>
<td>flush-hosts </td>
<td>洗掉所有緩存的主機</td>
</tr>
<tr>
<td>flush-logs </td>
<td>洗掉所有日志 </td>
</tr>
<tr>
<td>flush-tables </td>
<td>洗掉所有表 </td>
</tr>
<tr>
<td>flush-privileges </td>
<td>再次裝載授權表(同reload) </td>
</tr>
<tr>
<td>kill id,id,... </td>
<td>殺死mysql線程 </td>
</tr>
<tr>
<td>password </td>
<td>新口令,將老口令改為新口令</td>
</tr>
<tr>
<td>ping </td>
<td>檢查mysqld是否活著 </td>
</tr>
<tr>
<td>processlist </td>
<td>顯示服務其中活躍線程列表</td>
</tr>
<tr>
<td>reload </td>
<td>重載授權表 </td>
</tr>
<tr>
<td>refresh </td>
<td>洗掉所有表并關閉和打開日志文件</td>
</tr>
<tr>
<td>shutdown </td>
<td>關掉服務器 </td>
</tr>
<tr>
<td>status </td>
<td>給出服務器的簡短狀態消息</td>
</tr>
<tr>
<td>variables </td>
<td>打印出可用變量</td>
</tr>
<tr>
<td>version </td>
<td>得到服務器的版本信息</td>
</tr>
</table>
<p>所有命令可以被縮短為其唯一的前綴。例如: </p>
<pre>shell> mysqladmin proc stat
+----+-------+-----------+----+-------------+------+-------+------+
| Id | User | Host | db | Command | Time | State | Info |
+----+-------+-----------+----+-------------+------+-------+------+
| 6 | monty | localhost | | Processlist | 0 | | |
+----+-------+-----------+----+-------------+------+-------+------+
Uptime: 10077 Threads: 1 Questions: 9 Slow queries: 0 Opens: 6 Flush tables: 1
Open tables: 2 Memory in use: 1092K Max memory used: 1116K
</pre>
<p><code>mysqladmin status</code>命令結果有下述列:</p>
<table border="1" class="p4" width="100%">
<tr>
<td>Uptime </td>
<td><strong>MySQL</strong>服務器已經運行的秒數</td>
</tr>
<tr>
<td>Threads </td>
<td>活躍線程(客戶)的數量 </td>
</tr>
<tr>
<td>Questions </td>
<td>從<code>mysqld</code>啟動起來自客戶問題的數量 </td>
</tr>
<tr>
<td>Slow queries </td>
<td>已經超過<code>long_query_time</code>秒的查詢數量 </td>
</tr>
<tr>
<td>Opens </td>
<td><code>mysqld</code>已經打開了多少表 </td>
</tr>
<tr>
<td>Flush tables </td>
<td><code>flush ...</code>, <code>refresh</code>和<code>reload</code>命令數量 </td>
</tr>
<tr>
<td>Open tables </td>
<td>現在被打開的表數量</td>
</tr>
<tr>
<td>Memory in use </td>
<td>由mysqld代碼直接分配的內存(只有在<strong>MySQL</strong>用--with-debug編譯時可用)
</td>
</tr>
<tr>
<td>Max memory used </td>
<td>由mysqld代碼直接分配的最大內存(只有在<strong>MySQL</strong>用--with-debug編譯時可用)</td>
</tr>
</table>
<h2><a NAME="mysqldump" HREF="manual_toc.html#mysqldump">12.3 從MySQL數據庫和表中倒出結構和數據</a></h2>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -