学习MySQL:客户机和工具

命令行客户机程序

1.这几个客户机都必须运行mysqld服务器程序,客户机才能访问数据库;

2.mysql是通用的命令行客户机,用于向服务器发送SQL语句,其中包括用于管理的SQL语句;

3.mysqladmin是可帮助管理服务器的管理命令行客户机;

4.mysqlimport为LOAD DATA INFILE语句提供了命令行界面;

使用该客户机可以将数据文件装入表中,而无需手动发出LOAD DATA INFILE语句;

之后讲导入导出数据时会具体再讲;

5.mysqldump是用于转储数据库和表中内容的命令行客户机;

使用它可备份数据库或将其复制到其他计算机;

调用命令行客户机

两种常见的选项语法格式:

1.长选项(–):双横线选项后面加等号和参数;

2.短选项(-):单横线选项后加空格和参数;

mysql -V;

连接参数选项

1.-h:后跟给定主机的主机名或IP地址,用于连接到服务器(默认为localhost);

2.-C:压缩客户机和服务器之间发送的所有信息(如果两者都支持压缩);

3.–protocol:后跟用于连接到服务器的连接协议:{TCP|SOCKET|PIPE|MEMORY };

4.-P:后跟端口号,用于代替默认值(3306);

5.-S:用于设置UNIX套接字文件或在Windows上使用的命名管道的名称;

6.–shared-memory-base-name:(仅Windows)通过共享内存连接到本地服务器时所使用的共享内存的名称;

此选项仅在服务器支持共享内存连接时适用;

调用mysql客户机

1.在命令行中提供凭证:

-u选项后面可带或不带空格;

-p选项后面不带空格,如果对该选项使用空值,则系统会提示您输入口令;

2.在登录路径中提供凭证:

使用此登录路径(通过mysql_config_editor创建)的凭证;

3.执行语句:mysql –login-path=admin -e “SELECT VERSION()”;

4.使用特定选项文件执行:

5.使用包含SQL语句的文本文件执行:

– 可以使用[ >| <]重定向流,用来运行脚本或者批处理文件;

– 文件必须为纯文本格式,其中每个语句都有语句终结符;

– 文件必须位于运行 mysql 客户机的主机上;

– <和-e是互斥的,不能同时使用

mysql 客户机:安全更新

1.可能会不小心发出一些会修改表中多个行的语句或者会返回特别大的结果集的语句,使用–safe-updates选项可帮助防止这些问题;

(可以启动时设置,也可以在选项文件中设置)

2.设置安全更新模式可施加以下SQL语句限制:

1).UPDATE和DELETE仅在包含WHERE子句(该子句通过键值明确标识了要更新或删除的记录)或LIMIT子句时才允许使用;

2).将单表SELECT语句中的输出限制为不超过1K行,但语句包含LIMIT子句时除外;

3).仅当MySQL为处理查询所检查的行不超过100W时,才允许使用多表SELECT语句;

例子:


# mysql

mysql>use db1;


mysql>SELECT * FROM t1;


mysql>UPDATE t1 SET id = id + 1;


mysql>COMMIT;



# mysql -uroot -p –safe-update

mysql>use db1;


mysql>UPDATE t1 SET id = id + 1;


ERROR 1175 (HY000): You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column

mysql 客户机:输出格式

默认情况下,无论是以交互模式还是以批处理模式使用mysql,都会生成输出:

1.交互式:当以交互模式调用mysql时,会以表格格式显示查询输出,其中使用长条和短划线显示在方框列中列出的值;

–table(或 -t):生成表格输出格式,即使在以批处理模式运行时也是如此,这是交互模式的默认格式;

2.批处理:在通过使用文件作为命令行中的输入源来调用mysql时,mysql会以批处理模式运行,并且在显示的查询输出中使用制表符来分隔数据值;

–batch(或 -B):生成批处理模式(用制表符分隔的)输出(即使在以交互模式运行时也是如此),且不使用历史文件,这是批处理模式的默认格式;

在批处理模式下,使用–raw或-r选项可禁止字符转换(例如,将换行符和回车符转换为n或r等转义序列),在原始模式下,将按字面值输出字符;

3.使用以下选项可选择不同于以上任一默认格式的输出格式:

–html(或 -H):生成 HTML 格式的输出;

–xml(或 -X):生成 XML 格式的输出;

mysql 客户机:MySQL客户机命令

一.列出所有的 MySQL 客户机级别命令:mysql>HELP;

1.?与help一样,获得帮助信息;

2.clear:清除当前输入的语句,在错误的语句后面输入c即可;

3.connect:重新连接服务器,可以指定主机名和服务器,输入connect dbname host或或者r dbname host即可;

4.delimiter:语句分隔符,设置执行语句的符号,执行delimiter $$即可;

5.edit:调用vi修改sql语句,在要修改的语句后面输入e即可;

6.go:发送命令到mysql服务器;

7.pager:查询内容太多,分页显示,设置:>pager less,禁止:>nopager;

8.tee:把查询结果输入到一个文件中:>tee /tmp/rst.txt,禁止notee,主要用于数据库的备份脚本输出;

9.prompt:改变提示符,如:prompt royalwzy>;

则每次输入命令是提示符变为royalwzy>字符串(可以在配置文件中定义,prompt=xxx);

10.quit/exit:都是退出客户端,输入quit,exit和q都行;

11.source:执行一个sql脚本文件,文件名为参数,source /tmp/sql.txt;

12.system:执行操作系统的命令,用法:system ls -l /tmp 或者! ls -l /tmp;

13.status:查看服务器信息的状态,输入status或者s即可;

14.use:改变使用的数据库,后面跟数据库的名称,eg:use mysql;

15.charset:修改字符集,可以通过status查看当前使用的字符集,eg:charset latin1;

16.warnings:开启警告信息,当输入的sql语句出错时,可以通过show warning或者show errors来打印警告或者错误信息,设置:warning或者W,关闭:nowarning或者w;

17.rehash:设置客户端自动补全功能;

1).在服务器的配置文件中[mysql]节点下,默认使用no-auto-rehash选项;

2).注释no-auto-rehash选项,添加auto-rehash选项,reboot;

二.显示会话状态信息:mysql>s;

Using outfile:就是使用tee命令指定的值,把当前所有的操作和输出都重定向到一个文本;

三.日志会话查询及其输出:tee my_tee_file.txt;

mysql 客户机:SQL语句

一.数据定义语言(Data Definition Language, DDL)

1.CREATE DATABASE/TABLE:用于创建具有给定名称的数据库或表;

2.ALTER DATABASE/TABLE:可更改数据库或表的整体特性;

3.DROP DATABASE/TABLE:用于删除数据库中的所有表并删除该数据库,或者用于删除特定的表;

二.数据操纵语言(Data Manipulation Language, DML)

1.SELECT:用于从一个或多个表中检索所选的行;

2.INSERT:用于在现有表中插入新行;

3.DELETE:用于删除现有表中的行;

4.UPDATE:用于使用新值更新指定表中现有行的列;

5.JOIN:组合使用多个表以用于SELECT,多表DELETE和UPDATE语句;

mysql 客户机:有关SQL语句的帮助

获得服务器端帮助:>help contents;

1.可以通过help cmd获得更详细的信息;

2.获得管理操作的命令:>help administration;

3.获得数据类型:>help data types;

4.获得show命令的帮助:help show;

? show;

5.show variables:打印系统变量,类似oracle中的show parameter;

查询包含某一关键字的变量:show variables like ‘%buffer%’;

设置变量的值用set命令:set global|session key=value;

6.show variables和show status的区别

show variables:当服务器运行之后如果没有人工干预所有的参数不会发生改变;

show status:显示服务器运行过程中的动态信息,值会动态改变;

7.不必逐步浏览目录列表中所列出的项来获取有关特定主题的帮助,只需给出主题作为关键字即可获得一些提示:HELP STATUS;

mysql 客户机:SQL语句终结符

1.[;

]和[g]:常见的终结符,二者等效,可互换使用;

2.G:用于终止查询并以垂直方式显示查询结果,其中显示的每个输出行的每个列值均位于单独的行中;

此终结符在查询生成的输出行非常宽的情况下十分有用(因为竖直格式可使结果更易阅读);

3.c:如果决定放弃正在编写的语句,则可取消该语句并返回到新的mysql>提示符下;

mysql 客户机:特殊语句终结符

mysql 客户机:重新定义提示符

1.可以更改默认提示符,将当前信息放入提示符中,例如用户(u),主机(h)和数据库(d);

2.PROMPT关键字之后第一个空格后面的所有内容都将成为提示符字符串的一部分,包括其他空格;

该字符串可包含特殊序列;

1.3.要将提示符恢复为默认值,请指定不包含参数的PROMPT或R;

eg:prompt (u@h)[d]>

mysql 客户机:使用脚本文件

1.脚本文件应该为纯文本文件,其中所包含语句的格式要与以交互模式输入的语句的格式相同;

具体来说,每个语句都必须以 终结符结束;

2.SOURCE命令后的文件名无需用引号括起;

mysqladmin客户机

查看帮助:

1.create databasename:创建数据库;

2.debug:把bug信息写入日志文件;

3.drop databasename:删除数据库;

4.extended-status:列出服务器的附加信息;

5.flush-hosts:刷新主机缓存;

6.flush-logs:刷新所有的日志;

7.flush-status:清空状态变量;

8.flush-tables:刷新表;

9.flush-threads:刷新线程缓存;

10.flush-privileges:重新加载授权表,相当于reload;

11.kill id,id,…:杀掉mysql的进程;

12.password [new-password]:以当前格式修改密码;

13.old-password [new-password]:以旧的格式修改密码;

14.ping:检查mysqld是否活动;

15.processlist:列出所有活动的进程;

16.reload:重新加载授权表;

17.refresh:刷新所有的表,并重新打开日志文件;

18.shutdown:关闭Server;

19.status:查看服务器的状态信息;

20.start-slave:启动slave;

21.stop-slave:停止slave;

22.variables:打印变量状态;

23.version:查看服务器版本信息;

MySQL工具

1.MySQL Workbench:一个可视化的下一代数据库设计应用程序,可用于高效设计,管理和记录数据库结构;

它有开源和商业两种版本;

2.MySQL Proxy:一个位于客户机与MySQL服务器之间的简单程序,可监视,分析或传输客户机与服务器之间的通信;

MySQL Proxy 的灵活性使其具有多种用途,包括负载平衡/故障转移/查询分析/查询过滤和修改以及其他操作;

该工具当前尚不可用于生产;

3.MySQL Enterprise Monitor:MySQL的可视化企业监视系统,可用于检测MySQL服务器,通知潜在问题并就如何修复这些问题提供建议;

4.MySQL Enterprise Backup:使用该工具可以执行联机非阻塞“热”备份,从完整备份恢复数据,还支持创建压缩的备份文件;

5.MySQL Cluster Manager:通过自动执行常见的管理任务来简化MySQL Cluster Carrier Grade Edition数据库的创建和管理;

TIPS:345工具仅在MySQL商业版本中提供;

MySQL Enterprise Monitor

1.Enterprise Monitor可帮助管理多节点(可水平伸缩)环境中的多台MySQL服务器,调整当前MySQL服务器,发现MySQL数据库应用程序中存在的问题,并在这些问题变成严重问题或代价高昂的故障之前将其修复;

2.此Web GUI应用程序可主动监视企业数据库环境,并就MySQL如何增强MySQL所推动系统的安全性,优化其性能和减少其停机 时间提供专家建议;

3.Enterprise Monitor可监视各种类型的配置,从单个MySQL服务器直到支持繁忙Web站点的大型MySQL服务器群;

— MySQL Enterprise Monitor:系统信息显示板;

— MySQL Enterprise Monitor:访问;

— MySQL Workbench;

MySQL Workbench针对三种主要功能为DBA和开发者提供了基于GUI的跨平台集成工具环境:

1.SQL开发有助于进行以下任务:

编辑和执行SQL查询和脚本;

创建或变更数据库对象;

编辑表数据;

2.数据库设计和建模有助于进行以下任务:

执行增强型实体关系 (enhanced entity relationship, EER)建模;

编辑和执行SQL查询和脚本;

设计,生成和管理数据库;

3.服务器管理(取代了MySQL Administrator)有助于进行以下任务:

启动和停止服务器;

编辑数据库服务器配置;

管理用户;

导入和导出数据;

— MySQL Workbench:GUI窗口;

— MySQL Workbench:访问;

标准版(SE)提供了:

1.OSS版本的商业扩展;

2.高级功能;

3.需要付费;

MySQL Proxy

1.MySQL Proxy使用MySQL网络协议连接到网络,并提供一台或多台服务器与一台或多台MySQL客户机之间的通信;

在最基本的MySQL Proxy配置中,可以执行以下操作:

仅将查询从客户机传递到MySQL服务器,然后返回;

对使用该协议的任何与MySQL兼容的客户机,可不经修改地使用MySQL Proxy;

这包括mysql命令行客户机,任何使用MySQL客户机库的客户机以及任何支持MySQL网络协议的连接器;

监视和变更客户机和服务器之间的通信;

使用查询拦截添加分析,插入其他查询并删除其他结果;

交换信息的拦截可脚本化;

2.使用该代理可以对查询执行额外的监视,过滤或处理,而无需对客户机做出任何修改,客户机甚至不会知道正在与其通信的根本不是真正的MySQL服务器;

3.MySQL Proxy仍在开发中,尚未作为GA软件发行;

可以了解OneProxy;

— MySQL连接器;

— 第三方API;

1.大多数第三方API均基于C客户机库,并针对其他某种语言提供绑定;

2.虽然MySQL开发团队的成员经常与这些产品的开发者密切合作,但是这些API尚未得到Oracle的正式支持;

学习MySQL:体系结构及相关概念

学习MySQL:系统管理
学习MySQL:服务器配置