【mysql】mysql数据库常用命令

. 数据库赋权

进入mysql数据库:
mysql> use mysql;

给root用户设置新密码:
mysql> update user set password=password("新密码") where user="root";

刷新数据库
mysql> flush privileges;

nagios监控
mysql> GRANT PROCESS, REPLICATION CLIENT ON *.* TO 'nagiosshow'@'10.172.172.12' IDENTIFIED BY PASSWORD '*79B36E3D5F430AF5B15934D61D71C031B6502834';

查看用户信息
use mysql;
select User,Host,Password from user;

查看用户权限
show grants for root@'localhost';

删除用户
delete user form user where Host='xxxx' and User='xxxx';
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

2. 新建数据库

查看已有用户:
mysql> use mysql;
mysql> select Host,User,Password from user;

新建数据库
CREATE DATABASE marketing_base DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

新建用户并赋权
grant all privileges on marketing_base.* to dysql@'%' identified by '1Qaz2wsx';

mysql  -uroot -p123456 --default-character-set=gb2312 test<F:/pushingdb.sql 

mysql -uroot -p1qaz2wsx --default-character-set=utf8 ryp_production  <  cnapsbank.sql
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

3. 导出数据库

导出数据时排除某些表的数据

可以运行两条命令,可以一起运行。
首先导出表结构:
mysqldump -uxxx -p -d db_name > db_name.sql

然后导出你要的数据:
mysqldump -uxxx -p dbname --ignore-table=test.t --ignore-table=test.t1 ...>>test.sql;

仅导出数据库的数据:
mysqldump -uxxx -p -t db_name > db_data.sql

注:--ignore-table=xx “=” 左右不能有空格。

导出数据库包含pos、file值
mysqldump -uroot --quick --flush-logs --master-data=1 -p ryp1_production > ryp1_production20140924.sql
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

4. 导出表结构

命令行下具体用法如下: 
mysqldump -u用戶名 -p密码 -d 数据库名 表名 > 脚本名; 

导出整个数据库结构和数据 
mysqldump -h localhost -uroot -p123456 database > dump.sql 

导出单个数据表结构和数据 
mysqldump -h localhost -uroot -p123456  database table > dump.sql 

导出整个数据库结构(不包含数据) 
/usr/local/mysql/bin/mysqldump -uroot -d entrym> dump.sql 

导出单个数据表结构(不包含数据) 
mysqldump -h localhost -uroot -p123456  -d database table > dump.sql


字段分隔符
mysqldump -uroot -p hsb MERCHANT_INFO --tab="/tmp/" --fields-terminated-by="#;@"

mysql> select * into outfile '/tmp/CASH_USE_INFO.sql' FIELDS TERMINATED BY '#;@' from CASH_USE_INFO;

mysql> select * into outfile '/tmp/MERCHANT_ORDER.sql' FIELDS TERMINATED BY '#;@' from MERCHANT_ORDER where MERCHANT_ID in(select ID from MERCHANT_INFO); 

导出存储过程 
mysqldump -u 数据库用户名 -p -n -t -d -R 数据库名 > 文件名
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

5. 主从同步设置

主数据库
GRANT REPLICATION SLAVE ON *.* TO 'backup'@'192.168.252.%' IDENTIFIED BY '123456';
mysql> show master status\G

从数据库
mysql> change master to  master_host='192.168.252.150', master_user='backup', master_password='123456', master_log_file='mysql-bin.000003', master_log_pos=107;
mysql> start slave;
mysql> SHOW SLAVE STATUS\G

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

6. 查看数据库大小

进入information_schema数据库(存放了其他的数据库的信息)
use information_schema;

查询所有数据的大小:
select concat(round(sum(data_length/1024/1024),2),'MB') as data from tables;

查看指定数据库home的大小
select concat(round(sum(data_length/1024/1024),2),'MB') as data from tables where table_schema='home';

查看指定数据库home中 members 表的大小
select concat(round(sum(data_length/1024/1024),2),'MB') as data from tables where table_schema='home' and table_name='members';
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

7. 查询新建表索引

查看表是否存在索引(二选一)
show index from table_name from db_name
show index from db_name.table_name

查看表结构
desc table_name

为表字段(field_name)创建索引
create index field_name_index on table_name(field_name); 

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

8. 外部执行sql语句

mysql -uroot -p -e “seclect * from ” > seclect.sql
 
 
  • 1

9. KILL Mysql Processlist ID

#!/bin/bash
DATAFILE=`date +%Y%m%d%s`
/usr/bin/mysql -uroot -p123456 -e "select concat('KILL ',id,';') from information_schema.processlist where user='root' into outfile '/tmp/$DATAFILE.txt';"
KILLCOM=`/usr/bin/mysql -uroot -p123456 -e "source /tmp/$DATAFILE.txt"`
 git fetch
 1038  git merge origin/develop
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

10. 锁表处理

use information_schema

select * from INNODB_LOCK_WAITS

select r.trx_id as waiting_trx_id,
r.trx_mysql_thread_id as waiting_thread,
timestampdiff(second,r.trx_wait_started,current_timestamp) as wait_time,
r.trx_query as waiting_query,
l.lock_table as waiting_table_lock,
b.trx_id as blocking_trx_id,
b.trx_mysql_thread_id as blocking_thread,
substring(p.host,1,instr(p.host,':')-1) as blocking_host,
substring(p.host,instr(p.host,':')+1) as blocking_port,
if(p.command='sleep',p.time,0) as idle_in_trx,
b.trx_query as blocking_query
from information_schema.INNODB_LOCK_WAITS as w 
inner join information_schema.innodb_trx as b on b.trx_id=w.blocking_trx_id 
inner join information_schema.innodb_trx as r on r.trx_id=w.requesting_trx_id
inner join information_schema.INNODB_LOCKS as l on w.requested_lock_id =l.lock_id 
left join information_schema.PROCESSLIST as p on p.id=b.trx_mysql_thread_id
order by wait_time desc\G;
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

11. 分析频繁操作的表

mysqlbinlog --no-defaults --base64-output=decode-rows -v mysql-bin.000009 | awk '/###/{if($0~/UPDATE|INSERT|DELETE/)count[$2" "$NF]++}END{for(i in count)print i,"\t",count[i]}' | column -t | sort -k3nr >>~/$$.sql  & 2>/dev/null 

 
 
  • 1
  • 2

12. 数据库分析工具

yum install percona-toolkit-2.2.8-1.noarch
pt-query-digest mysql-slow-queries_20150313.log
 
 
  • 1
  • 2

13. 跳过某个同步错误

slave stop;
set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
slave start;
 
 
  • 1
  • 2
  • 3

14. 开启慢查询日志

配置文件开启(需重启)
vi /etc/my.cnf
long_query_time = 2
log-slow-queries=/var/log/slow.log

在线开启(无需重启)
set long_query_time=2
set global slow_query_log = 1;
set global slow_query_log_file = "/var/log/slow.log";
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

15. 存储过程执行权限(待验证)

definer ('lpdba'@'%')  确定定义者为lpdba
grant all on mysql.* to lpdba@'%' identified by 'l1ghtp@l3'; 
grant execute on test.* to lpdba@'%' identified by 'l1ghtp@l3';
 
 
  • 1
  • 2
  • 3

16. 开启事件

SHOW VARIABLES LIKE 'event_scheduler';
SET GLOBAL event_scheduler = ON;
 
 
  • 1
  • 2

17. 修改数据库触发器

查看数据库(vas_manage)的触发器创建语句
use vas_manage;
show CREATE TRIGGER  before_update_game_product;

删除触发器
drop TRIGGER before_update_game_product;

创建触发器
CREATE TRIGGER before_update_game_product BEFORE UPDATE ON game_product
FOR EACH ROW
BEGIN
    IF LOCATE("&nbsp;",new.game_type)>0 THEN
        set NEW.game_type=REPLACE(NEW.game_type,"&nbsp;"," ");
  END if;
END

添加执行触发器权限
http://www.jb51.net/article/54635.htm
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

附录

  1. 以下的文章主要描述的是MySQL SHOW INDEX语法的实际操作用法以及其实际查看索引状态(语法)的具体内容的描述,如果你对这一技术,心存好奇的话,以下的文章将会揭开它的神秘面纱。

       
       
    1. SHOW INDEX FROM tbl_name [FROM db_name] 

    MySQL SHOW INDEX会返回表索引信息。其格式与ODBC中的SQLStatistics调用相似。

    MySQL SHOW INDEX会返回以下字段:

    Table

    表的名称。

    Non_unique

    如果索引不能包括重复词,则为0。如果可以,则为1。

    Key_name

    索引的名称。

    Seq_in_index

    索引中的列序列号,从1开始。

    Column_name

    列名称。

    Collation

    列以什么方式存储在索引中。在MySQLSHOW INDEX语法中,有值’A’(升序)或NULL(无分类)。

    Cardinality

    索引中唯一值的数目的估计值。通过运行ANALYZE TABLE或myisamchk -a可以更新。基数根据被存储为整数的统计数据来计数,所以即使对于小型表,该值也没有必要是精确的。基数越大,当进行联合时,MySQL使用该索引的机会就越大。

    Sub_part

    如果列只是被部分地编入索引,则为被编入索引的字符的数目。如果整列被编入索引,则为NULL。

    Packed

    指示关键字如何被压缩。如果没有被压缩,则为NULL。

    Null

    如果列含有NULL,则含有YES。如果没有,则该列含有NO。

    Index_type

    用过的索引方法(BTREE, FULLTEXT, HASH, RTREE)。

    Comment

    多种评注。

    您可以使用db_name.tbl_name作为tbl_name FROM db_name语法的另一种形式。这两个语句是等价的:

       
       
    1. mysql> SHOW INDEX FROM mytable FROM mydb;  
    2. mysql> SHOW INDEX FROM mydb.mytable;  

    SHOW KEYS是MySQL SHOW INDEX的同义词。您也可以使用mysqlshow -k db_name tbl_name命令列举一个表的索引。

    SHOW INNODB STATUS语法

       
       
    1. SHOW INNODB STATUS 

    在MySQL 5.1中,这是SHOW ENGINE INNODB STATUS的同义词,但不赞成使用。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT_驿站

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值