4.1. MySQL程序概述
MySQL AB提供了几种类型的程序:MYSQL服务器和服务器启动脚本:(见于5)
- mysqld是MySQL服务器
- mysqld_safe、mysql.server和mysqld_multi是服务器启动脚本
- mysql_install_db初始化数据目录和初始数据库
访 访问服务器的客户程序:(见于8)
- mysql是一个命令行客户程序,用于交互式或以批处理模式执行SQL语句。
- mysqladmin是用于管理功能的客户程序。
- mysqlcheck执行表维护操作。
- mysqldump和mysqlhotcopy负责数据库备份。
- mysqlimport导入数据文件。
- mysqlshow显示信息数据库和表的相关信息。
独立于服务器操作的工具程序:
- myisamchk执行表维护操作。
- myisampack产生压缩、只读的表。
- mysqlbinlog是处理二进制日志文件的实用工具。
- perror显示错误代码的含义。
4.2. 调用MySQL程序
shell> mysql test
shell> mysqladmin extended-status variables
shell> mysqlshow --help
shell> mysqldump --user=root personnel
4.3. 指定程序选项
4.3.1. 在命令行上使用选项
在命令行中指定的程序选项遵从下述规则:
·在命令名后面紧跟选项。
·选项参量以一个和两个破折号开始,取决于它具有短名还是长名。许多选项有两种形式。例如,-?和--help是指导MySQL程序显示帮助消息的选项的短名和长名。
·选项名对大小写敏感。-v和-V均有效,但具有不同的含义。(它们是--verbose和--version选项的短名)。
·部分选项在选项名后面紧随选项值。例如,-h localhost或--host=localhost表示客户程序的MySQL服务器主机。选项值可以告诉程序MySQL服务器运行的主机名。
·对于带选项值的长选项,通过一个‘=’将选项名和值隔离开来。对于带选项值的短选项,选项值可以紧随选项字母后面,或者二者之间可以用一个空格隔开。(-hlocalhost和-h localhost是等效的)。该规则的例外情况是指定MySQL密码的选项。该选项的形式可以为--password=pass_val或--password。在后一种情况(未给出 密码值),程序将提示输入密码。也可以给出密码选项,短形式为-ppass_val或-p。然而,对于短形式,如果给出了 密码值,必须紧跟在选项后面,中间不能插入空格。这样要求的原因是如果选项后面有空格,程序没有办法来告知后面的参量是 密码值还是其它某种参量。
要想禁用列名,可以使用下面的形式来指定选项:
--disable-column-names
--skip-column-names
--column-names=0
可以用下述方法“启用”选项:
--column-names
--enable-column-names
--column-names=1
如果选项有前缀--loose,如果程序未识别出选项不会提示错误退出,但是会发出一条警告:
shell> mysql --loose-no-such-option
mysql: WARNING: unknown option '--no-such-option'
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 -u root -p -e "SELECT User,Host FROM mysql.User"
4.3.2. 使用选项文件
在Windows中,MySQL程序从以下文件读取启动选项:
文件名 | 目的 |
WINDIR\my.ini | 全局选项 |
C:\my.cnf | 全局选项 |
INSTALLDIR\my.ini | 全局选项 |
defaults-extra-file | 用--defaults-extra-file=path指定的文件,如果有 |
WINDIR表示Windows目录的位置。通常为C:\WINDOWS或C:\WINNT。你可以使用下面的命令通过环境变量WINDIR的值确定其确切位置:
在Unix中,MySQL程序从下面的文件读取启动选项:
文件名 | 目的 |
/etc/my.cnf | 全局选项 |
$MYSQL_HOME/my.cnf | 服务器相关选项 |
defaults-extra-file | 用--defaults-extra-file=path指定的文件,如果有 |
~/.my.cnf | 用户相关选项 |
[group]
group是你想要设置选项的程序名或组名。在组行后面,任何opt_name或set-variable行适用于组名,直到选项文件结尾或给出其它组行。
opt_name
等价于命令行中的--opt_name。
opt_name=value
等价于命令行中的--opt_name=value。在选项文件中,‘=’字符附近可以有空格,而在命令行中是不允许的。你可以用单引号或双引号来引用值。如果值包含一个‘#’注释字符或空格时很有用。
要包括文件/home/mydir/myopt.cnf,可以使用:
!include /home/me/myopt.cnf
要搜索所有以.cnf结尾的文件的目录/home/mydir并作为选项文件读取,应使用:
!includedir /home/mydir
使用my.cnf中的某些内容,如下所示:
[mysqld]
!include /home/mydir/myopt.cnf
在这种情况下,只为该服务器处理文件myopt.cnf,并且!include指令将被客户应用程序忽略。
注释: 目前,在 Unix 操作系统中,所发现的使用 !includedir 指令包括的文件的文件名 必须 以 .cnf 为扩展名。在 Windows 中,该指令也为有 .ini 扩展名 ( 包括 .cnf ) 的文件做检查。如果你想要创建只由一个具体mysqld服务器发布系列读取的选项组,选项组可以用[mysqld-5.0]、[mysqld-5.1]等名称。下面的组表示--new选项只能用于5.1.x 版本的MySQL服务器:
[mysqld-5.1]
new
下面是一个典型的全局选项文件:
[client]
port=3306
socket=/tmp/mysql.sock
[mysqld]
port=3306
socket=/tmp/mysql.sock
key_buffer_size=16M
max_allowed_packet=8M
[mysqldump]
quick
下面是一个典型的用户选项文件:
[client]
# The following password will be sent to all standard MySQL clients
password="my_password"
[mysql]
no-auto-rehash
connect_timeout=2
[mysqlhotcopy]
interactive-timeout
所有支持选项文件的MySQL程序可以处理下面的命令行选项:
· --no-defaults
不读取任何选项文件。
· --print-defaults
打印从选项文件中获得的程序名和所有选项。
· --defaults-file=path_name
只使用给出的选项文件。path_name是文件的全路径名。
· --defaults-extra-file=path_name
shell> my_print_defaults client mysql
--port=3306
--socket=/tmp/mysql.sock
--no-auto-rehash
4.3.3. 用环境变量指定选项
在 Windows 或 NetWare 中,可以设置 USER 变量来指定 MySQL 账户名。要想实现,使用语法:SET USER=your_name
在Unix中的语法取决于你的外壳。假定你想要使用MYSQL_TCP_PORT变量指定TCP/IP端口号。典型的语法为(例如sh、bash、zsh等等):
MYSQL_TCP_PORT=3306
export MYSQL_TCP_PORT
第1个命令设置变量,export命令将变量导出到外壳环境,以便其值可供MySQL和其它进程访问。
csh和tcsh有类似的问题。运行这些外壳时,使用setenv使外壳变量适用环境:
setenv MYSQL_TCP_PORT 3306
4.3.4. 使用选项设置程序变量
shell> mysql --max_allowed_packet=16777216
shell> mysql --max_allowed_packet=16M
在选项文件中,变量设定值没有引导破折号:
[mysql]
max_allowed_packet=16777216
或:
[mysql]
max_allowed_packet=16M
如果你喜欢,变量名的下划线可以为破折号。