附录C: MySQL常用命令
MySQL版本:5.5.19
系统命令
启动MySQL
重启MySQL
关闭MySQL
连接本机上的MySQL
进入目录
mysql\bin
,键入命令mysql -uroot -p
,回车后提示输入密码。使用exit
退出MySQL。修改MySQL密码
或进入MySQL命令行后设置
增加新用户
示例:增加一个用户test密码为123,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。以root用户连入MySQL,然后键入以下命令:
刷新MySQL的系统权限相关表
新设置用户或更改密码后需刷新MySQL的系统权限相关表
查看MySQL支持的存储引擎
查看MySQL当前的默认存储引擎
查看Mysql服务器上的版本
查看数据库连接情况
查看死锁信息
开启慢查询日志
查询结果输出到文件
数据操作
首先登录到MySQL中,有关操作都是在MySQL的提示符下进行,而且每个命令以分号结束。
显示数据库列表
显示库中的数据表
显示数据表的结构
建库
create database 的语法:
建表
删库和删表
将表中记录清空
显示表中的记录:
添加列
修改列名
修改列
删除列
修改表名
添加索引
删除索引
查看索引
复制表结构及数据到新表
只复制表结构到新表
复制旧表的数据到新表(假设两个表结构一样)
复制旧表的数据到新表(假设两个表结构不一样)
设置表的自增主键起始值
数据的导入导出
文本数据转到数据库中
文本数据应符合的格式:字段数据之间用tab键隔开,null值用空格字符来代替。例如:
数据传入命令
导出数据库和表
将数据库news中的所有表备份到news.sql文件,news.sql是一个文本文件,文件名任取。
将数据库news中的author表和article表备份到author.article.sql文件,author.article.sql是一个文本文件,文件名任取。
将数据库dbl和db2备份到news.sql文件,news.sql是一个文本文件,文件名任取。
把host上的以用户user、密码pass的数据库dbname导入到文件file.dump中
将所有数据库备份到all-databases.sql文件,all-databases.sql是一个文本文件,文件名任取。
导入数据
导入数据库:
在mysql命令行导入表:
编码操作
查看数据库编码
查看数据表编码,包括表使用的数据库引擎
查看字段编码
改变整个MySQL的编码, 启动MySQL的时候,mysqld_safe命令行加入
改变某个库的编码,在MySQL提示符后输入命令
把表默认的字符集和所有字符列(char,varchar,text)改为新的字符集
示例如下:
修改表的默认字符集
修改字段的字符集
数据库元信息查询
information_schema数据库中保存了各个数据库以及表的元信息,主要包括:
schemata表:提供了当前MySQL实例中所有数据库的信息。是
show databases
的结果来源。tables表:提供了关于数据库中的表的信息,包括视图。详细表述了某个表属于哪个schema、表的类型、表使用的引擎以及创建时间等信息。是
show tables from [schemaName]
和show table status from [schemaName] like '[tableName]'
的结果来源。columns表:提供了表中的列信息。详细表述了某张表的所有列以及每个列的信息。是
show columns from [tableName]
的结果来源。statistics表:提供了关于表索引的信息。是
show index from [tableName]
的结果来源。user_privileges表:给出了关于用户权限的信息。该信息源自mysql.user授权表。
schema_privileges表:给出了关于方案(数据库)权限的信息。该信息来自mysql.db授权表。
table_privileges表:给出了关于表权限的信息。该信息源自mysql.tables_priv授权表。
column_privileges表:给出了关于列权限的信息。该信息源自mysql.columns_priv授权表。
table_constraints表:描述了存在约束的表,以及表的约束类型。
例如,可通过tables查询某个数据表的创建时间:
数据库性能信息查询
performance_schema数据库用于收集数据库服务器性能参数,其中所有表的存储引擎为performance_schema。此功能MySQL5.5是默认关闭的,从5.6版本后变为默认开启。此功能开关如下:
其中的常用数据表如下:
setup_actors:配置用户纬度的监控,默认监控所有用户。
setup_consumers:配置events的消费者类型,即收集的events写入到哪些统计表中。
setup_objects:配置监控对象,默认对mysql,performance_schema和information_schema中的表都不监控,而其它DB的所有表都监控。
setup_timers:配置每种类型指令的统计时间单位。MICROSECOND表示统计单位是微妙,CYCLE表示统计单位是时钟周期,时间度量与CPU的主频有关,NANOSECOND表示统计单位是纳秒。但无论采用哪种度量单位,最终统计表中统计的时间都会转换到皮秒。(1秒=1000000000000皮秒)
file_instances:文件实例, 记录了系统中打开了文件的对象,包括ibdata文件,redo文件,binlog文件,用户的表文件等。
rwlock_instances: 读写锁同步对象实例,记录了系统中使用读写锁对象的所有记录,其中name为 wait/synch/rwlock/*。
socket_instances:活跃会话对象实例,记录了thread_id,socket_id,ip和port,其它表可以通过thread_id与socket_instance进行关联,获取IP-PORT信息,能够与应用对接起来。
socket_summary_by_instance、socket_summary_by_event_name:socket聚合统计表。
events_waits_current:记录了当前线程等待的事件。
events_waits_history:记录了每个线程最近等待的10个事件。
events_waits_history_long:记录了最近所有线程产生的10000个事件。
events_stages_current:记录了当前线程所处的执行阶段。同events_waits_current一样,events_stages_history、events_stages_history_long是历史记录。
events_statements_current:通过 thread_id+event_id可以唯一确定一条记录。Statments表只记录最顶层的请求,SQL语句或是COMMAND,每条语句一行。event_name形式为statement/sql/,或statement/com/。同events_waits_current一样,events_statements_history、events_statements_history_long是历史记录。
events_waits_summary_by_thread_by_event_name:按每个线程和事件来统计,thread_id+event_name唯一确定一条记录。包括总的等待时间、最小等待时间、平均等待时间以及最大等待时间。
table_lock_waits_summary_by_table:聚合了表锁等待事件,包括internal lock 和 external lock。
table_io_waits_summary_by_table:根据wait/io/table/sql/handler,聚合每个表的I/O操作(逻辑IO纬度)。
users:记录用户连接数信息。
hosts:记录了主机连接数信息。
accounts:记录了用户主机连接数信息。
threads:监视服务端的当前运行的线程。
几个常用应用示例如下:
统计哪个SQL执行最多
哪个SQL平均响应时间最长
哪个索引没有使用过
需要注意的是,MySQL5.5开启此功能即使没有数据可收集,也会有性能损失,慎重开启。MySQL5.6后做了改善,直到收集信息才会激活。
Last updated