当前位置: 首页 > article >正文

MySQL常用命令总结

目录

  • 前言
    • 1、查看表状态
    • 2、改密码
    • 3、杀特定用户链接
    • 4、binlog解析
    • 5、删除用户
    • 6、修改主键(小表,大表用pt-osc等工具)
    • 7、查看表大小
    • 8、权限查询
    • 9、trace
    • 10、innodb状态查看
    • 11、修改root密码
    • 12、添加自增属性
    • 13、rename库名 (所有表操作即可完成库名重命名)
    • 14、表碎片整理
    • 15、查看表的最近更新时间
    • 16、创建索引时间查询
    • 17、mysql 终端中操作启用事务
    • 18、修改表的字符集
    • 19、查看用户自定义视图
  • 总结

前言

MySQL是一个功能强大且广泛使用的开源关系型数据库管理系统。随着互联网和数据应用的不断发展,熟练掌握MySQL的使用对于开发人员和数据库管理员来说变得越来越重要。MySQL提供了丰富的命令和功能,能够满足各种数据库操作需求。本文将总结一些常用的MySQL命令,帮助大家更好地掌握和使用MySQL。

1、查看表状态

show table status like '%tablename%';

2、改密码

-- 方法一:

./mysqladmin -uroot -hlocalhost --socket=/data/mysql_3306/tmp/mysql.sock -p password
-- 方法二:

ALTER USER 'root'@'localhost' IDENTIFIED with mysql_native_password BY 'password';

3、杀特定用户链接

select concat('KILL ',id,';')from information_schema.processlist where user='21xmt_user';

4、binlog解析

mysqlbinlog --no-defaults -vv --base64-output=decode-rows mysql-bin.000201

5、删除用户

drop user 'xxx'; 只删除 'xxx'@'%' 账户

6、修改主键(小表,大表用pt-osc等工具)

alter table xxx drop primary key,add primary key(task_id, aaa);

7、查看表大小

select table_name , table_rows from inforation_schema.tables where table_name='xxx';

8、权限查询

-- 1. 查询用户的权限:

SHOW GRANTS FOR '用户名'@'主机名';
-- 其中,'用户名'是你想查询权限的用户,'主机名'是连接该用户的主机名。

-- 2. 查询所有用户的权限:

SELECT user, host, authentication_string, plugin, password_expired FROM mysql.user;
-- 该查询语句将返回所有用户的用户名、主机名、认证字符串、插件和密码过期信息等。

-- 3. 查询用户拥有的权限:

SELECT * FROM mysql.user WHERE User = '用户名' AND Host = '主机名';
-- 更改上述查询语句中的'用户名'和'主机名'为你想查询权限的用户和主机名。

4. 查询用户在特定数据库上的权限:

SHOW GRANTS FOR '用户名'@'主机名' ON '数据库名';
-- 将'用户名'替换为要查询权限的用户,'主机名'设置为连接该用户的主机名,'数据库名'为目标数据库。

注意,执行上述查询需要具有足够的权限,一般只有具有SUPER权限或拥有grant权限的用户才能查询其他用户的权限信息。

9、trace

SET SESSION OPTIMIZER_TRACE="enabled=on";   # enable tracing
<statement to trace>;   # like SELECT, EXPLAIN SELECT, UPDATE, DELETE...
SELECT * FROM information_schema.OPTIMIZER_TRACE;
[ repeat last two steps at will ]
SET SESSION OPTIMIZER_TRACE="enabled=off"; # disable tracing
  • SET SESSION OPTIMIZER_TRACE="enabled=on";此指令用于启用查询优化器跟踪。将其设置为"enabled=on"表示启用跟踪功能。此配置仅对当前会话有效。

  • <statement to trace>;在该指令中,你可以执行要进行跟踪的SQL语句,例如SELECT、EXPLAIN SELECT、UPDATE、DELETE等。查询优化器将在执行该语句的同时记录相关信息以进行跟踪。

  • SELECT * FROM information_schema.OPTIMIZER_TRACE;这个查询语句用于检索跟踪结果。执行后,将返回包含查询优化器跟踪信息的结果集。你可以通过分析这些信息来了解优化器是如何处理和优化查询的。

  • [ repeat last two steps at will ]这两个步骤可以重复多次,以跟踪和分析不同的查询语句。

  • SET SESSION OPTIMIZER_TRACE="enabled=off";此指令用于禁用查询优化器跟踪。将其设置为"enabled=off"表示禁用跟踪功能。同样,此配置仅对当前会话有效。

10、innodb状态查看

SHOW ENGINE INNODB STATUS;

执行上述语句后,会返回一个结果集,其中包含了InnoDB引擎的详细状态信息。可以查看到InnoDB的版本、事务和锁定的信息、缓冲池的统计信息等。

11、修改root密码

方式一:使用ALTER USER语句

-- 将 'new_password' 替换为你要设置的新密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';

-- 执行完成后刷新权限,以使修改后的密码生效
flush privileges;

方式二:使用SET PASSWORD语句

-- 将 'new_password' 替换为你要设置的新密码
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');

--执行完成后刷新权限,以使修改后的密码生效
FLUSH PRIVILEGES;

12、添加自增属性

alter table xxx modify id bigint auto_increment;

13、rename库名 (所有表操作即可完成库名重命名)

RENAME DATABASE old_database_name TO new_database_name;

将上述语句中的"old_database_name"替换为要重命名的现有数据库的名称,将"new_database_name"替换为所需的新数据库名称。

请注意以下事项:

  • 仅适用于空数据库:RENAME DATABASE语句只能重命名空数据库。如果数据库中有表或其他对象,则无法使用该语句。
  • 权限要求:执行RENAME DATABASE需要具有足够的权限(如CREATE、DROP和ALTER权限)。
  • 慎重操作:重命名数据库是一个潜在的高风险操作,应该在确认备份和可能的影响后谨慎执行。

14、表碎片整理

OPTIMIZE TABLE table_name;
-- 将上述语句中的"table_name"替换为要进行碎片整理的表名。可以一次指定多个表,用逗号分隔。

碎片整理会重新组织表的物理存储结构,删除不再使用的空间和优化表的性能。它可以回收被删除数据所占用的空间并重组数据行,提高查询性能。

请注意以下事项:

  • 权限要求:执行OPTIMIZE TABLE需要具有足够的权限(如ALTER和CREATE权限)。
  • 表锁定:执行OPTIMIZE TABLE时,表将被锁定,可能会影响其他对表的操作。在生产环境中,应该在合适的时间段执行该操作,避免对用户的影响。
  • 自动碎片整理:MySQL InnoDB存储引擎默认支持自动碎片整理,并且在某些情况下会自动执行碎片整理。
    –碎片整理操作并不是在每个MySQL版本或存储引擎中都是可用的。在执行碎片整理之前,建议先进行数据备份,并测试对性能的影响。

15、查看表的最近更新时间

-- 使用INFORMATION_SCHEMA表
SELECT UPDATE_TIME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'your_database_name'
AND TABLE_NAME = 'your_table_name';

16、创建索引时间查询

SELECT trx_id, trx_started, (NOW() - trx_started) trx_duration_seconds, id processlist_id, user, IF(LEFT(HOST, (LOCATE(':', host) - 1)) = '', host,  LEFT(HOST, (LOCATE(':', host) - 1))) host, command, time, REPLACE(SUBSTRING(info,1,25),'\n','') info_25 FROM information_schema.innodb_trx JOIN information_schema.processlist  ON innodb_trx.trx_mysql_thread_id = processlist.id WHERE (NOW() - trx_started) > 60 ORDER BY trx_started;

17、mysql 终端中操作启用事务

begin-- 用于启动一个新的事务
要执行的sqlcommit/rollback-- commit用于提交事务,将之前的修改永久保存到数据库中
-- rollback命令用于回滚事务,撤销之前的修改,将数据库恢复到事务开始前的状态

启用事务后,在提交或回滚前,对数据库做的任何修改都只是在事务的上下文中进行的,对外部用户是不可见的。只有在显式执行 COMMIT; 或 ROLLBACK; 命令后,其他用户才能看到你的修改结果。

18、修改表的字符集

使用 ALTER TABLE 语句加上 CONVERT TO 子句,指定新的字符集来修改表的字符集。例如,如果要将表的字符集改为UTF-8,可以这样操作:

ALTER TABLE 表名 CONVERT TO CHARACTER SET utf8;

如果你想同时修改表的字符集和校对规则(collation),可以使用下面的命令:

ALTER TABLE 表名 CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

这里的 utf8_general_ci 是UTF-8字符集的一个常见的校对规则。
修改表字符集后,你可以使用 SHOW CREATE TABLE 命令再次查看表的详细信息,确认字符集的修改是否生效。

19、查看用户自定义视图

存储过程、triggers查询方法类似,自己找相关表查询即可。

SELECT TABLE_SCHEMA, TABLE_NAME
FROM information_schema.VIEWS
WHERE TABLE_SCHEMA NOT IN ('information_schema', 'mysql', 'performance_schema', 'sys');

总结

本文对MySQL常用命令进行了总结,涵盖了数据库的创建、连接、操作、查询、优化和备份等方面。通过学习和掌握这些命令,就可以完成基本的数据库操作,提高数据库性能,保证数据安全性。

学习MySQL是一个长期的过程,不断实践和探索才能更好地掌握。祝愿大家在使用MySQL时能够取得更好的效果,为自己的项目和工作创造更大的价值。


http://www.kler.cn/news/273773.html

相关文章:

  • 图论题目集一(代码 注解)
  • 使用rrweb悄悄录制用户操作过程
  • 蓝桥杯决赛2023 RE CyberChef2
  • 抖音视频爬虫工具安装|视频无水印批量下载软件
  • 递归算法c++
  • 什么是软件开发?软件开发阶段划分是什么?并以LabVIEW为例进行说明
  • 【小程序配置服务器域名】详细讲解
  • bs4模块
  • MyBatis3源码深度解析(十四)SqlSession的创建与执行(一)Configuration与SqlSession的创建过程
  • React的基本使用
  • 嵌入式学习40-数据结构
  • MindGraph:文字生成知识图
  • 电机学(笔记一)
  • UGUI界面性能优化3-合理规划界面层级结构
  • Machine Learning ---- Gradient Descent
  • 万界星空科技WMS仓储管理包含哪些具体内容?
  • Python如何去除网页中的隐藏元素
  • Matplotlib如何显示多张图片(管理多个子图)
  • 如何系统地自学 Python?
  • 【iOS】Blocks
  • redis cpu百分百问题
  • C#进阶实践项目(俄罗斯方块)
  • Ubuntu使用Docker部署Nginx容器并结合内网穿透实现公网访问本地服务
  • 【C++】每日一题 71 简化路径
  • [Java、Android面试]_05_内存泄漏和内存溢出
  • K8s的概念
  • 云原生 PaaS 服务:构建现代应用的利器(分布式应用服务、配置中心、数据库服务、定时任务、实时监控、服务网关、技术组件)
  • 【备忘录】查询数据库中是否存在数据 的SQL语句性能对比和优化
  • 蓝桥杯算法基础(20):(快速排序的其他优化)java版
  • IDEA中的Project工程、Module模块的概念及创建导入