4.MySQL程序概述

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'

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 -u root -p -e "SELECT User,Host FROM mysql.User"


可以按这种方式传递多个 SQL 语句,用分号隔开:

4.3.2. 使用选项文件


下面程序支持选项文件:
myisamchk myisampack mysql mysql.server mysqladmin mysqlbinlog mysqlcc mysqlcheck mysqld_safe mysqldump mysqld mysqlhotcopy mysqlimport mysqlshow

在Windows中,MySQL程序从以下文件读取启动选项:

文件名

目的

WINDIR\my.ini

全局选项

C:\my.cnf

全局选项

INSTALLDIR\my.ini

全局选项

defaults-extra-file

--defaults-extra-file=path指定的文件,如果有

WINDIR表示Windows目录的位置。通常为C:\WINDOWSC:\WINNT。你可以使用下面的命令通过环境变量WINDIR的值确定其确切位置:


在Unix中,MySQL程序从下面的文件读取启动选项:

文件名

目的

/etc/my.cnf

全局选项

$MYSQL_HOME/my.cnf

服务器相关选项

defaults-extra-file

--defaults-extra-file=path指定的文件,如果有

~/.my.cnf

用户相关选项



如果未设置 MYSQL_HOME ,并且 DATADIR 中有一个 my.cnf 文件, BASEDIR 中没有 my.cnf 文件, mysqld_safe MYSQL_HOME 设置为 DATADIR 。否则,如果未设置 MYSQL_HOME 并且在 DATADIR 中没有 my.cnf ,则 mysqld_safe MYSQL_HOME 设置为 BASEDIR

MySQL 按照上述顺序寻找选项文件,并读存在的选项文件。如果你想要使用的某个选项文件不存在,则用明文文本编辑器创建。如果存在多个选项文件,文件中指定的后读取的选项要优先文件中指定的先读取的选项。

任何可以在运行 MySQL 程序时在命令行给出的长选项也可以在选项文件中给出。

在选项文件中指定选项的语法类似于命令行语法,例外的是要忽略掉两个破折号。例如,命令行中的--quick--host=localhost在选项文件中应指定为quickhost=localhost。要想在选项文件中指定--loose-opt_name形式的选项,应写为loose-opt_name

注释行以‘#’或‘’开头。‘#’注释也可以从行的中部开始。

[group]

group是你想要设置选项的程序名或组名。在组行后面,任何opt_nameset-variable行适用于组名,直到选项文件结尾或给出其它组行。

opt_name

等价于命令行中的--opt_name

opt_name=value

等价于命令行中的--opt_name=value。在选项文件中,‘=’字符附近可以有空格,而在命令行中是不允许的。你可以用单引号或双引号来引用值。如果值包含一个‘#’注释字符或空格时很有用。


可以在选项值中使用转义序列‘\b’、‘\t’、‘\n’、‘\r’、‘\\’以及‘\s’来表示退格、tab、换行符、回车以及空格字符

Windows中,如果某个选项值表示一个路径名,应使用‘/’而不是‘\’作为路径名间隔符来指定值。如果使用‘\’,必须用双斜线‘\\’,因为‘\’在MySQL中为转义字符。

如果选项组名与程序名相同,则组内的选项专用于该程序。

所有客户程序(不能mysqld)读取[client]选项组。这样允许你指定适用于所有客户端的选项。

5.0系列的MySQL 5.0.4开始,可以在选项文件中使用!include指令来包括具体文件和!includedir来搜索选项文件的具体目录。

要包括文件/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程序来分析选项文件。

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端口号。典型的语法为(例如shbashzsh等等):

MYSQL_TCP_PORT=3306
export MYSQL_TCP_PORT

第1个命令设置变量,export命令将变量导出到外壳环境,以便其值可供MySQL和其它进程访问。

cshtcsh有类似的问题。运行这些外壳时,使用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

如果你喜欢,变量名的下划线可以为破折号。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值