您的位置:首页 > 数据库 > MySQL

4.MySQL程序概述

2015-07-01 11:31 483 查看

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和-hlocalhost是等效的)。该规则的例外情况是指定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:\WINDOWS或C:\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在选项文件中应指定为quick或host=localhost。要想在选项文件中指定--loose-opt_name形式的选项,应写为loose-opt_name。注释行以‘#’或‘;’开头。‘#’注释也可以从行的中部开始。[group]group是你想要设置选项的程序名或组名。在组行后面,任何opt_name或set-variable行适用于组名,直到选项文件结尾或给出其它组行。opt_name等价于命令行中的--opt_name。opt_name=value等价于命令行中的--opt_name=value。在选项文件中,‘=’字符附近可以有空格,而在命令行中是不允许的。你可以用单引号或双引号来引用值。如果值包含一个‘#’注释字符或空格时很有用。可以在选项值中使用转义序列‘\b’、‘\t’、‘\n’、‘\r’、‘\\’以及‘\s’来表示退格、tab、换行符、回车以及空格字符在Windows中,如果某个选项值表示一个路径名,应使用‘/’而不是‘\’作为路径名间隔符来指定值。如果使用‘\’,必须用双斜线‘\\’,因为‘\’在MySQL中为转义字符。如果选项组名与程序名相同,则组内的选项专用于该程序。所有客户程序(但不能被mysqld)读取[client]选项组。这样允许你指定适用于所有客户端的选项。从5.0系列的MySQL5.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端口号。典型的语法为(例如sh、bash、zsh等等):
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
如果你喜欢,变量名的下划线可以为破折号。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: