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表