利用选项文件简化连接
在激活 mysql 时,有可能需要指定诸如主机名、用户名或口令这样的连接参数。运行一个程序需要做很多输入工作,这很快就会让人厌烦。利用选项文件可以存储连接参数,减少输入工作。
例如,对于使用mysqladmin客户机来管理数据库,那么你很快会厌烦每次使用这么长的命令行:
shell>mysql –u root –p varialbles Enter password: ********* |
你也许会选择使用全局选项文件来存贮你的参数:
[mysqladmin]
#也可以用[client],为所有的客户机存储参数
user=root password=yourpassword |
这样执行mysqladmin variables就不会显示任何存储拒绝的错误,并且你可以用root用户身份维护数据库了。
且慢,你立刻会发现,这样做是一个很大的安全漏洞,因为任何可以读取选项文件的用户都可以获得你的密码!解决方法是,只提供password选项不提供密码:
[mysqladmin] user=root password |
这样你在命令行执行时,会提示你数据密码:
shell>mysql varialbles Enter password: ********* |
但是,你不能不提供password选项,否则你还是要在命令行中提供-p选项。
利用 mysql 的输入行编辑器
mysql 具有内建的 GNU Readline 库,允许对输入行进行编辑。可以对当前录入的行进行处理,或调出以前输入的行并重新执行它们原样执行或做进一步的修改后执行)。在录入一行并发现错误时,这是非常方便的;您可以在按 Enter 键前,在行内退格并进行修正。如果录入了一个有错的查询,那么可以调用该查询并对其进行编辑以解决问题,然后再重新提交它。如果您在一行上键入了整个查询,这是最容易的方法。)
表1中列出了一些非常有用的编辑序列,除了此表中给出的以外,还有许多输入编辑命令。利用因特网搜索引擎,应该能够找到 Readline手册的联机版本。此手册也包含在 Readline 分发包中,可在 http://www.gnu. org/ 的 Gnu Web 站点得到。
表1 mysql 输入编辑命令
| 键 序 列 | 说 明 |
| Up 箭头,Ctrl-p Down 箭头,Ctrl-N Left 箭头,Ctrl-B Right 箭头,Ctrl-F Escape Ctrl-B Escape Ctrl-F Ctrl-A Ctrl-E Ctrl-D Delete Escape D Escape Backspace Ctrl-K Ctrl-_ |
调前面的行 调下一行 光标左移向后) 光标右移向前) 向后移一个词 向前移一个词 将光标移到行头 将光标移到行尾 删除光标下的字符 删除光标左边的字符 删词 删除光标左边的词 删除光标到行尾的所有字符 撤消最后的更改;可以重复 |
下面的例子描述了输入编辑的一个简单的使用。假定用 mysql 输入了下列查询:
如果在按 Enter 前,已经注意到将“president”错拼成了“persident”,则可按左箭头或 Ctrl-B 多次移动光标到“s”的左边。然后按 Delete 两次删除“er”,键入“re”改正错误,并按 Enter 发布此查询。如果没注意到错拼就按了 Enter,也不会有问题。在 mysql 显示了错误消息后,按上箭头或 Ctrl-P 调出该行,然后对其进行编辑。
输入行编辑在 mysql 的 Windows 版中不起作用,但是可从 MySQL Web 站点取得免费的 cygwin_32 客户机分发包。在该分发包中的mysqlc 程序与 mysql 一样,但它支持输入行编辑命令。
批处理模式连接
在前面的章节中,你交互式地使用mysql输入查询并且查看结果。你也可以以批模式运行mysql。为了做到这些,把你想要运行的命令放在一个文件中,然后告诉mysql从文件读取它的输入:
shell> mysql < batch-file |
如果你需要在命令行上指定连接参数,命令可能看起来像这样:
shell> mysql -h host -u user -p < batch-file Enter password: ******** |
当你这样使用mysql时,你正在创建一个脚本文件,然后执行脚本。
为什么要使用一个脚本?有很多原因:
如果你重复地运行查询(比如说,每天或每周),把它做成一个脚本使得你在每次执行它时避免重新键入。
你能通过拷贝并编辑脚本文件从类似的现有的查询生成一个新查询。
当你正在开发查询时,批模式也是很有用的,特别对多行命令或多行语句序列。如果你犯了一个错误,你不必重新打入所有一切,只要编辑你的脚本来改正错误,然后告诉mysql再次执行它。
如果你有一个产生很多输出的查询,你可以通过一个分页器而不是盯着它翻屏到你屏幕的顶端来运行输出:
$ mysql < batch-file | more
你能捕捉输出到一个文件中进行更一步的处理:
shell> mysql < batch-file > mysql.out
你可以散发脚本给另外的人,因此他们也能运行命令。
一些情况不允许交互地使用,例如, 当你从一个cron任务中运行查询时。在这种情况下,你必须使用批模式。
当你以批模式运行mysql时,比起你交互地使用它时,其缺省输出格式是不同的(更简明些)。例如,当交互式运行SELECT DISTINCT species FROM pet时,输出看起来像这样:
+---------+
| species |
+---------+
| bird |
| cat |
| dog |
| hamster |
| snake |
+---------+
但是当以批模式运行时,像这样:
species
bird
cat
dog
hamster
snake
如果你想要在批模式中得到交互的输出格式,使用mysql -t。为了回显以输出被执行的命令,使用mysql -vvv。
总结
本章中列举了客户机与服务器连接的几种情况,读者需要注意的是下面几点:
1、 如何提供参数,以及参数的意义
2、 如何让客户机提示输入密码
3、 交互模式和批处理模式
4、 mysql客户机的行编辑功能
- 如何使用SQLServer数据库查询累计值
- MySQL数据库的启动与终止