MySQL是基于客户端/服务器体系架构的数据库系统,MySQL服务器端以守护进程的方式运行,mysqld为服务器主进程.当我们需要对数据库进行

任何操作时,都需要使用客户端软件来连接服务器进行操作.MySQL客户端程序有很多,可以使用自带软件mysql,mysqladmin,mysqldump等命

令对数据库进行操作,也可以自己设计动态网站通过API连接MySQL数据库进行操作.也可以通过图形化MySQL数据库客户端进行操作.此文主要

介绍MySQL软件包自带的客户端命令.

1.MySQL工具

mysql是一个简单的命令行SQL工具,支持交互式和非交互式运行.使用mysql命令很容易,只要在系统命令终端输入mysql,即可进入管理界面.

如果使用mysqladmin或 mysql_secure_installation程序为账户设置里密码,需要在启动MySQL程序时指定账户和密码,进入交互界面后,

即可通过输入SQL语句对数据库进行操作.SQL语句之后要求以";","\g","\G"结尾.退出程序时可以通过exit指令或"\q"退出

  mysql -user=username -password=password    =>  mysql -uusername -ppassword

通常密码不会直接写在-p之后,会在-p回车后输入,处于安全考虑.

通过提前创建SQL语句脚本文件,我们可以使用mysql工具自动执行数据操作:

  shell>cat script.sql

     use mysql

     select * from user\G

  shell>mysql mysql < script.sql > out.tab

mysql命令支持大量的选项:

选项                      描述

--help,-?                    显示帮助信息

--auto-rehash                  Tab自动补齐,默认为开启状态

-- auto-vertical-output             自动垂直显示,如果显示的结果太宽,将以列格式显示

--batch,-B                   不使用历史文件

--bind-address=ip_address           使用特定的网络接口连接MySQL服务器

--compress                   压缩客户端与服务器传输的所有数据

--database=dbname,-D dbname        指定使用的数据库名称

--default-character-set=charset_name     设置默认字符集

--delimiter=str                设置语句分割符

--host=host_name,-h host_name      通过host连接到指定服务器

--password,-p                使用密码连接服务器

--pager=[command]              使用分页程序分页显示,Linux中可以使用more或less

--port=port_num                使用指定端口号连接服务器

--quick                     不缓存查询结果

--unfuffered                 每次查询后刷新缓存

--user=username,-u username       使用指定账户连接服务器

示例:

  mysql -u root      #使用root账号连接服务器,无密码登录

  mysql -u root mysql    #使用root账户连接服务器,默认进入mysql数据库

  mysql -u root -p      #使用root账户连接服务器,有密码登录,提示输入密码

  mysql -u root -p -h 192.168.1.115      #使用root账户连接192.168.1.115服务器,提示输入密码

2.mysqladmin工具

mysqladmin是一个执行管理操作的工具,使用它可以检查服务器配置,当前运行状态,以及创建,删除数据库等.

语法格式:

  mysqladmin [选项] 命令 [命令参数] [命令 [命令参数]]

  mysqladmin支持下列命令:

    create db_name      #创建名为db_name的数据库

    debug           #将debug信息写入错误日志

    drop db_name        #删除名为db_name的数据库以及数据库中所有的表(慎用)

    extended-status       #显示服务器状态变量及变量值

    flush-hosts         #刷新所有主机的缓存信息

    flush-logs         #刷新所有的日志

    flush-privileges      #重新加载权限数据表

    flush-status         #清空状态变量

    flush-tables        #刷新所有的数据表

    kill id            #杀死服务器进程

      password new_pass    #设置新密码

    ping            #检查服务器是否可用

    reload           #重新加载权限数据表

    refresh            #刷新所有的数据表并重启日志文件

    shutdown         #关闭服务器

    start-slave          #在从服务器上启动复制

    stop-slave         #在从服务器上停止复制

常用选项:

  --bind-address=ip_address          #使用指定网络接口连接服务器

  --compress                  #压缩服务器与客户端传输的数据

  --default-character-set=charset_name    #设置默认字符集

  --host=host_name              #连接到host指定的服务器

  --password=[password],-p          #使用密码连接服务器

  --port=port_num               #使用特定端口号连接服务器

  --silent                    #静默模式

  --user=user_name              #使用指定账户连接服务器

3.mysqldump工具

mysqldump是一个数据库逻辑备份程序,我们可以使用它对一个或多个MySQL数据库进行备份或将数据库传输至其他MySQL服务器.

执行mysqldump时需要账户拥有select权限才可以备份数据表,show view权限用于备份视图,trigger权限用于备份触发器.某些命令

选项可能还需要更多的权限才可以完成操作.mysqldump不是大数据备份的解决方案,因为mysqldump需要通过重建SQL语句来实现

备份,对于数据量比较大的数据库备份与还原操作,速度比较慢.

对于大规模的数据备份与还原,使用物理备份会更加合适,通过直接复制数据文件,即可实现快速的数据还原工作.在企业版本的MySQL中

提供了一个mysqlbackup的工具也可以,它提供了各种不同的MySQL数据库引擎高性能备份还原功能

使用mysqldump可以备份数据库中的某些数据表,也可以备份整个数据库,还可以备份MySQL系统中的所有数据库.对于使用mysqldump

工具备份的数据库文件,可以使用mysql命令工具还原.

语法格式

  mysqldump [选项] db_name [table_name]

  mysqldump [选项] -- databases db_name1,...

  mysqldump [选项] --all-databases

mysqldump支持下列选项,这些选项也可以通过[mysqldump]和[client]写入配置文件

  --add-drop-database              #在备份文件中添加,删除相同数据库的SQL语句

  --add-drop-table                #在备份文件中添加,删除相同数据表的SQL语句

  --add-drop-trigger                #在备份文件中添加,删除相同触发器的SQL语句

  --add-locks                     #在备份数据表前后添加表锁定与解锁SQL语句

  --all-databases                 #备份所有数据库中的所有数据表

  --apply-slave-statements            #在change master前添加stop slave语句

  --bind-address=ip_address             #使用指定的网络接口连接服务器

  --comments                     #为备份文件添加注释

  --create-options                 #在create table语句中包含所有的MySQL特性

  --databases                    #备份若干个指定的数据库

  --debug                      #创建debugging日志

  --default-character-set=charset_name       #设置默认字符集

  --host,-h                     #设置需要连接的主机

  --ignore-table                  #设置不需要备份的数据表,该选项可以使用多次

  --lock-all-tables                 #设置全局锁,锁定所有的数据表以保证备份数据的完整性

  --no-create-db,-n                #只导出数据而不创建数据库

  --no-create-info                 #只导出数据而不创建数据表

  --no-data                     #不备份数据内容,用于备份数据表结构

  --password,-p                  #使用密码连接服务器

  --port=port_num                  #使用指定端口号连接服务器

  --replace                       #使用replace语句替代insert语句

示例:

  mysqldump -u root -p --all-databases > all_databases_sql      #备份所有数据库

  mysqldump -u root -p --databases mysql > mysql_database_sql      #备份mysql数据库

  mysqldump -u root -p mysql user > user_table          #备份mysql数据库下的user表

  mysql -u root -p < all_databases_sql          #使用all_databases_sql数据库备份文件还原数据库

  mysql -u root -p mysql < user_table          #使用user_table数据库备份文件还原user表