分类: Mysql/postgreSQL
2008-05-11 17:39:27
本章简要概述了MySQL AB提供的命令行程序,并讨论了运行这些程序时如何指定选项。大多数程序具有其操作专用的选项,但指定选项的语法都近似。后面的几章更加详细地描述了各个程序,包括它们识别的选项。
MySQL AB还提供了3个GUI客户程序供MySQL服务器使用:
· MySQL管理器:该工具用于管理MySQL服务器、数据库、表以及用户。
· MySQL查询浏览器:该图形工具由MySQL AB提供,用于创建、执行以及优化对MySQL数据库的查询。
· MySQL移植工具包:该工具可以帮助你将计划和数据从其它关系数据库管理系统移植到MySQL。
MySQL AB提供了几种类型的程序:
· MYSQL服务器和服务器启动脚本:
o mysqld是MySQL服务器
o mysqld_safe、mysql.server和mysqld_multi是服务器启动脚本
o mysql_install_db初始化数据目录和初始数据库
· 访问服务器的客户程序:
o mysql是一个命令行客户程序,用于交互式或以批处理模式执行SQL语句。
o mysqladmin是用于管理功能的客户程序。
o mysqlcheck执行表维护操作。
o mysqldump和mysqlhotcopy负责数据库备份。
o mysqlimport导入数据文件。
o mysqlshow显示信息数据库和表的相关信息。
在第8章:客户端和实用工具程序中详细讨论了这些程序。
· 独立于服务器操作的工具程序:
o myisamchk执行表维护操作。
o myisampack产生压缩、只读的表。
o mysqlbinlog是处理二进制日志文件的实用工具。
o perror显示错误代码的含义。
在第5章:数据库管理中详细讨论了myisamchk。在第8章:客户端和实用工具程序中详细讨论了其它程序。
大多数MySQL分发包括上述的全部程序,只是不包含那些与平台相关的程序。(例如,在Windows中不使用服务器启动脚本)。不同的只是RPM分发更加具体化。可能一个RPM是服务器分发,另一个RPM是客户程序分发等等。如果你丢失了一个或多个程序,要想查阅关于分发类型和它们所包含内容的信息,参见第2章:安装MySQL。也可能需要安装一些其它内容。
要想从命令行调用MySQL程序(即从shell或命令提示),应输入程序名,并随后输入指导操作发的选项或其它参量。下面的命令显示了一些程序调用的例子。“shell>”表示命令解释符提示;并不是输入的部分。你所看见的具体提示取决于命令解释符。典型提示符:sh或bash为$,csh或tcsh为%,Windows command.com或cmd.exe为C:\>。
shell> mysql test
shell> mysqladmin extended-status variables
shell> mysqlshow --help
shell> mysqldump --user=root personnel
以破折号开始的参数为选项参量。它们通常指定程序与服务器的连接类型或影响其操作模式。关于选项语法的描述参见4.3节,“指定程序选项”。
非选项参数(不以破折号开始的参量)可以为程序提供更详细的信息。例如,mysql程序将第一个非选项参量解释为数据库名,因此命令 mysql test表示你想要使用test数据库。
后面的章节描述了具体的程序,表示程序可以理解的选项,并描述了其它非选项参量的含义。
部分选项对部分程序是通用的。最常用的是指定连接参数的--host、--user和--password选项。它们指示MySQL服务器运行的主机和MySQL账户的用户名和 密码。所有MySQL客户程序可以理解这些选项;它们允许你指定连接哪个服务器,以及在该服务器上使用的 账户。
你也许会发现需要使用MySQL程序安装的bin目录的路径名来调用MySQL程序。如果你试图不在bin目录下运行MySQL程序,可能会遇到“程序未找到”错误。为了更方便地使用MySQL,可以将bin目录的路径名添加到PATH环境变量中。然后运行程序时只需要输入程序名,而不需要输入整个路径名。
关于设置PATH的指令的命令解释符请查阅相关文档。设置环境变量的语法与解释符有关。
可以用几种方式提供MySQL程序的选项:
· 在命令行中在程序名后面提供。这对于具体程序调用时使用的选项很普遍。
· 在程序启动时读取的选项文件中设置。这对于每次程序运行时使用的选项很普遍。
· 在环境变量中设置。这对每次程序运行时所使用的选项很有用,尽管实际上最常用选项文件。(5.12.2节,“在Unix中运行多个服务器”中讨论了环境变量会很有帮助的一种情况。描述了使用这些变量来指定服务器和客户程序的TCP/IP端口号和Unix套接字文件的各种技术)。
MySQL程序首先检查环境变量,然后检查选项文件,然后检查命令行来确定给出了哪些选项。如果多次指定一个选项,最后出现的选项占先。这说明环境变量具有最低的优先级,命令行选项具有最高优先级。
可以在选项文件中指定程序选项的默认值来让MySQL程序处理各选项。不需要在每次运行程序时输入选项,但可以根据需要通过命令行选项来覆盖默认值。
在命令行中指定的程序选项遵从下述规则:
· 在命令名后面紧跟选项。
· 选项参量以一个和两个破折号开始,取决于它具有短名还是长名。许多选项有两种形式。例如,-?和--help是指导MySQL程序显示帮助消息的选项的短名和长名。
· 选项名对大小写敏感。-v和-V均有效,但具有不同的含义。(它们是--verbose和--version选项的短名)。
· 部分选项在选项名后面紧随选项值。例如,-h localhost或--host=localhost表示客户程序的MySQL服务器主机。选项值可以告诉程序MySQL服务器运行的主机名。
· 对于带选项值的长选项,通过一个‘=’将选项名和值隔离开来。对于带选项值的短选项,选项值可以紧随选项字母后面,或者二者之间可以用一个空格隔开。(-hlocalhost和-h localhost是等效的)。该规则的例外情况是指定MySQL密码的选项。该选项的形式可以为--password=pass_val或--password。在后一种情况(未给出 密码值),程序将提示输入密码。也可以给出密码选项,短形式为-ppass_val或-p。然而,对于短形式,如果给出了 密码值,必须紧跟在选项后面,中间不能插入空格。这样要求的原因是如果选项后面有空格,程序没有办法来告知后面的参量是 密码值还是其它某种参量。因此,下面两个命令的含义完全不同:
· shell> mysql -ptest
· shell> mysql -p test
第一个命令让mysql使用密码test,但没有指定默认数据库。第二个命令让mysql提示输入 密码并使用test作为默认数据库。
部分选项控制可以开关的行为。例如,mysql客户端支持--column-names选项,确定是否在查询结果开头显示一行栏目名。默认情况,该选项被启用。但是可能在某些情况下你想要禁用它,例如将mysql的输出发送到另一个只希望看到数据而不希望看到开始的标题行的程序中。
要想禁用列名,可以使用下面的形式来指定选项:
--disable-column-names
--skip-column-names
--column-names=0
--disable和--skip前缀与=0后缀的效果相同:它们均关闭选项。
可以用下述方法“启用”选项:
--column-names
--enable-column-names
--column-names=1
如果选项有前缀--loose,如果程序未识别出选项不会提示错误退出,但是会发出一条警告:
shell> mysql --loose-no-such-option
mysql: WARNING: unknown option '--no-such-option'
当你从安装了多个MySQL的同一台机器上运行程序时,--loose前缀会很有用。当你在一个选项文件中列出选项时,该前缀会特别有用。有可能不能被程序的所有版本识别的选项可以冠以--loose前缀(或在选项文件中用loose)。不能识别选项的程序版本将会发出一条警告并忽视该选项。
对mysql偶尔有用的另一个选项是-e或--execute选项,可用来将SQL语句传递给服务器。该语句必须用引号引起来(单引号或双引号)。(然而,如果想要在查询中将值引起来,则对于查询应使用双引号,查询中引用的值应使用单引号)。当使用该选项时,语句被执行,然后mysql立即退出命令外壳。
例如,你可以用下面的命令获得用户账户列表:
shell> mysql -u root -p -e "SELECT User, Host FROM User" mysql
Enter password: ******
+------+-----------+
| User | Host |
+------+-----------+
| | gigan |
| root | gigan |
| | localhost |
| jon | localhost |
| root | localhost |
+------+-----------+
shell>
请注意mysql数据库名作为一个独立的参量传递。然而,相同的查询可能已经使用mysql -u root -p -e "SELECT User,Host FROM mysql.User"从外壳中执行。
可以按这种方式传递多个SQL语句,用分号隔开:
shell> mysql -u root -p --execute="SELECT Name FROM Country WHERE Name LIKE 'AU%';SELECT COUNT(*) FROM City" world
Enter password: ******
+-----------+
| Name |
+-----------+
| Australia |
| Austria |
+-----------+
+----------+
| COUNT(*) |
+----------+
| 4079 |
+----------+
请注意长形式(--execute)后面必须紧跟一个等号(=)。
-e选项也可以以类似方式用来将命令传递给MySQL簇的ndb_mgm管理客户端。相关例子参见17.3.6节,“安全关闭和重启”。