Mysql常用命令
1.1链接数据库
Mysql –h172.18.237.252 –p6001 –uup_webas –p–s /etc/mysock/upweb_upsql.sock
密码:
参数说明:
-h:主机ip
-p:端口
-u:用户名
-p:密码
-s:指定连接mysql的sock文件位置,默认路径/tmp/mysql.sock
1.2查看数据库
Show databases;
1.3选中某个数据库
Use 数据库名
1.4执行脚本
Source 脚本名称
1.5分析锁
Show open tables where in_use>0 查看mysql锁
Show processlist 查看mysql进程
Kill 进程id 杀死mysql进程
Show variables like ‘log_%’;查看日志
Show variables like ‘event_scheduler%’;查看执行计划是否开启
Show status like ‘Threads’;查看线程
Show variables like ‘%max_connections%’;查看最大线程数
Show variables like ‘%storage_engine%’;查看数据库引擎
Show engines; 查看数据库引擎
Show global status like ‘qcache’; 查询缓存状态
Show variables like ‘query_cache’;查询缓存信息
Show status like ‘Handler_read%’;查询索引使用情况
mysql> show status like 'Handler_read%';
+-----------------------+-------+
| Variable_name | Value |
+-----------------------+-------+
| Handler_read_first | 0 |
| Handler_read_key | 0 |
| Handler_read_next | 0 |
| Handler_read_prev | 0 |
| Handler_read_rnd | 0 |
| Handler_read_rnd_next | 74 |
+-----------------------+-------+
6 rows in set (0.00 sec)
mysql> show global status like 'Handler_read%';
+-----------------------+--------------+
| Variable_name | Value |
+-----------------------+--------------+
| Handler_read_first | 1785153 |
| Handler_read_key | 2650399364 |
| Handler_read_next | 104781425 |
| Handler_read_prev | 55082598 |
| Handler_read_rnd | 14893605 |
| Handler_read_rnd_next | 244848860571 |
+-----------------------+--------------+
6 rows in set (0.00 sec)
分析这几个值,我们可以查看当前索引的使用情况:
Handler_read_first:索引中第一条被读的次数。如果较高,它表示服务器正执行大量全索引扫描;例如,SELECT col1 FROMfoo,假定col1有索引(这个值越低越好)。
Handler_read_key:如果索引正在工作,这个值代表一个行被索引值读的次数,如果值越低,表示索引得到的性能改善不高,因为索引不经常使用(这个值越高越好)。
Handler_read_next :按照键顺序读下一行的请求数。如果你用范围约束或如果执行索引扫描来查询索引列,该值增加。
Handler_read_prev:按照键顺序读前一行的请求数。该读方法主要用于优化ORDER BY ... DESC。
Handler_read_rnd :根据固定位置读一行的请求数。如果你正执行大量查询并需要对结果进行排序该值较高。你可能使用了大量需要MySQL扫描整个表的查询或你的连接没有正确使用键。这个值较高,意味着运行效率低,应该建立索引来补救。
Handler_read_rnd_next:在数据文件中读下一行的请求数。如果你正进行大量的表扫描,该值较高。通常说明你的表索引不正确或写入的查询没有利用索引。
1.5导出数据库表记录
1.5.1 select into outfile 命令
基本语法:
Select(col_name,)from table into outfile ‘filename’
[fields[terminated by’t’][OPTIONALLY] [enclosed by ‘’][escaped by ‘\’]]
[linesterminated by’n’]
参数说明:
terminated by:描述字段分隔符,默认情况下是tab字符(\t)
enclosed by:描述的是字段括起字符,默认空;
escaped by:描述转义字符,默认的是反斜杠(backslash:\)
实例说明:
Selecr * fromv_user_posview into outfile “/home/cp_mgmdb/v_ user_posview.txt”
Fieldsterminated by ‘,’ enclosed by “” ’lines terminated by’n’’;
注:经过验证,如果字段为null,则导出的值为\N,而不是空串””,也不是”\N”字符串;
1.5.2 mysqldump 命令
Mysqldump为MYSQL逻辑备份工具,产生一系列SQL语句,之后重新执行以产生备份的库、表及数据。也可产生CSV、MXL等格式的数据。适用于各类引擎的表。
基本语法:
备份一个或多个表
Mysqldump [options] db_name [table_name….]
备份一个或多个库:
Mysqldump [options] –database dbname…
备份所有数据库:
Mysqldump [option] –all –databases
参数说明:
--bind –address=ip_address : 对于有多个网络接口的机器选择使用指定的接口连接Mysql.
---compress , -C :为备份文件添加注释。
--default –auth=plugin :指明要使用的客户端认证插件
--password[=password],-p[password]
--pipe,-W :在Windows上通过命令管道连接server
--plugin-dir=path
--host ,-h
--port=port_num,-p port_num
--protcol={TCP|SOCKET|PIPE|MEMQRY}
--SOCKET=path,-S path
--ssl*
-user=user_num,-u user_num
Max_allowed_packet: 可连接或发送的最大包分组长度
Net_buffer_length TCP/IP及socket通许的buffer大小
1.5导入文件到数据库表记录
1.5.1 load data infile命令
基本语法
Load data [low_prioriry] [local] infile ‘file_nametxt’ [replace | ignore]
Into tabletbl_name
[fields [terminated by’t] [OPTIONALLY] [ enclosed by ‘’] [escaped by ‘\’]]
[lines terminated by ‘n’]
[ignore number lines]
[{col_name, }]
参数说明:
Low_priority:启用参数后,Mysql将等到没有用户操作要导入的表的时候,才会执行load data infile操作;
Local:从客户主机读文件。如果local没指定,文件必须位于数据库服务器主机上;
Replace/ignore:当文件出现重复行时,使用新行代替有相同的唯一值的现有行或者跳过有唯一键的现有行的重复行的输入。如果你不指定任何一个选项,当找到重复键时,sql语句会报错并且文本文件的余下部分被方略;
Terminated by:描述字段的分隔符,默认情况下是tab字符(\t);
Enclosed by:描述的是字段的括起字符,默认是空;
Escaped by:描述的转义字符。默认的是反斜杠(backslash:\);
Col_name:导入到指定的列。
示例说明:
Load data infile “/tmp/load.txt” replaceinto table test fields terminated by ‘,’ lines terminated by ‘\n’;
Load data infile “/tmp/load.txt” ignore intotable to character set gbk fields terminated by ‘,’
Enclosed by “’’” lines terminated by ‘\n’ {‘name’,’age’,’description’};
Load data infile “/tmp/load.txt” into tabletmp character set utf8 fields terminated by ‘,’ enclosed by “” lines terminatedby ‘\n’;
导入的时候要建议加character,否则如果数据库的字符编码和操作的数据库表的编码不一致,可能出现乱码。
查看数据库字符编码命令:show variables like 'character_set_%'
2,修改已设定编码:
如对character_set_database修改编码
命令:set character_set_database= utf8
执行后,查看新编码内容为:
可见已成功将编码更换。
另外,有一种最简单的方式,通过修改mysql安装目录下的my.ini文件,将文件中
character_set_database = gbk
修改为
character_set_database = utf8
重启mysql服务即可。
因此,通过以上两个步骤,便可查看目前mysql内的各种编码格式,同时通过命令或修改配置文件还可以很轻松实现编码更换,用此来解决mysql数据库入库中文乱码问题。
还原
1. MySQL -h IP -u 用户 -p 密码 数据库 < 文件路径
备份:
2 mysqldump -h IP -u 用户 -p 密码 数据库 >文件路径
1.导出整个数据库
mysqldump -u 用户名 -p 数据库名 > 导出的文件名
mysqldump -u wcnc -p smgp_apps_wcnc > wcnc.sql
2.导出一个表
mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名
mysqldump -u wcnc -p smgp_apps_wcnc users> wcnc_users.sql
导出一个表数据 into outfile '/home/aa.sql' 或者用 mysqldump -e '语句' 或者 mysqldump -w 'id=3'
3.导出一个数据库结构
mysqldump -u wcnc -p -d --add-drop-table smgp_apps_wcnc >d:wcnc_db.sql
-d 没有数据 --add-drop-table 在每个create语句之前增加一个drop table
4.导入数据库
常用source 命令
进入mysql数据库控制台,
如mysql -u root -p
mysql>use 数据库
然后使用source命令,后面参数为脚本文件(如这里用到的.sql)
mysql>source d:wcnc_db.sql (注:如果写成source d:/wcnc_db.sql,就会报语法错误)