8.2 MySQL管理
包含MySQL发行版中的一些有用的工具程序使管理工作变得更加容易,它们中最常用的是mysqladmin程序。
8.2.1 命令
除了mysqlshow命令以外,所有的MySQL命令都接受下面的3个标准参数。命令选项 参数 说明
-u 用户名 在默认情况下,mysql工具会尝试把当前linux的用户名作为MySQL的用户名,-u参数可以指定不同的用户名。
-p 密码 如果给出了-p参数但是未提供密码,系统会提示输入密码。
-h 主机名 用于连接位于不同主机上的服务器(这个参数对于本地服务器总是可以省略)
1.myisamchk命令
myisamchk工具是设计用来检查和修复使用默认MYISAM表格式的任何数据表,MYISAM表格由MySQL自身支持。通常情况下,myisamchk应该以安装时创建的mysql用户身份来运行,并且运行该命令时应该位于数据表所处的目录中。为了检查数据库,首先执行命令su mysql,然后改变目录到与数据库名称对应的目录下。例如:myisamchk -e -r *.MYI
myisamchk最常见的命令选项如下:
命令选项 说明
-c 检查表以发现错误
-e 执行扩展检查
-r 修复发现的错误
2.mysql命令
这是MySQL一个主要的且功能非常强大的命令行工具。几乎每个管理或用户级别的任何都可以在这里执行。可以从命令行启动mysql,通过在命令行的最后添加数据库名称作为参数,就无需在MySQL的控制台中使用use<database>命令。例如,以用户名rick、提示输入密码、默认使用数据库foo来启动控制台的命令如下所示:$mysql -u rick -p foo
如果在启动MySQL时未指定数据库,可以在MySQL中使用use<databasename>选项来选择一个数据库。
另外,可以通过非交互模式来运行mysql,只需要绑定命令到一个输入文件中并从命令行读取它即可。在这种情况下,必须在命令行上指定密码:
$mysql -u rick --password=secretpassword foo < sqlcommands.sql
一旦mysql读取并处理完命令,它就会返回到命令提示符。
mysql服务器支持同时拥有许多不同的数据库这一想法,所有的数据库都由同一个服务器进程来服务和管理。每个数据库都是一个基本独立的表格集。这样可以针对不同的目的建立不同的数据库,并为每个数据库指定不同的用户,而只需要使用同一个数据库服务器就可以有效地管理它们。只要拥有适当的权限,就可以通过使用use命令在不同的数据库之间进行切换。
特定数据库mysql是由MySQL安装自动创建的,它用于保存如用户和权限这样的数据。
3.mysqladmin
这是快速进行MySQL数据库管理的工具。除了常见的参数以外,还支持以下命令:命令 说明
create <databasename> 创建一个新数据库
drop <databasename> 删除一个数据库
password <new_password> 修改密码
ping 检查服务器是否正在运行
reload 重载控制权限的grant表
status 提供服务器的状态
shutdown 停止服务器
variable 显示控制MySQL操作的变量及其当前值
version 提供服务器的版本号以及它持续运行的时间
如果不带参数调用mysqladmin命令,可以从命令提示符下看到完整的选项列表。
4.mysqlbug
5.mysqldump
这是一个极其有用的工具,它允许以SQL命令集的形式将部分或整个数据库导出到一个单独文件中,该文件能被重新导入MySQL或其他的SQL RDBMS。它接受标准用户和密码信息作为参数,也接受数据库名和表名作为参数。命令 说明
--add-drop-table 添加SQL命令到输出文件,以在创建表的命令之前丢弃(删除)任何表
-e 使用扩展的insert语法。
-t 只转储表中的数据,而不是用来创建表的信息
-d 只转储表结构,而不是实际数据
这个工具对于迁移数据或快速备份非常有用。此外,由于MySQL的客户段服务器实现方式,通过使用一个安装在不同机器上的mysqldump客户端,它甚至可以用来实现远程备份。下面这个例子显示通过用户名rick进行连接,转储数据库myplaydb的例子:
$ mysqldump -u rick -p myplaydb > myplaydb.dump
6.mysqlimport
mysqlimport命令用于批量将数据导入到一个表中,通过使用mysqlimport,可以从一个输入文件中读取大量的文本数据。这个命令唯一的参数需求是一个文件名和一个数据库名。7.mysqlshow
这个小工具用来快速了解MySQL安装及其组成数据库的信息1.不提供参数,它列出所有可用的数据库
2.以一个数据库为参数,它列出该数据库中的表
3.以数据库和表名为参数,它列出表中的列
4.以数据库、表和列为参数,它列出指定列的详细信息