DBA必知MySQL基本命令

23 阅读2分钟

1. 如何登录数据库?
# 查看数据库端口进程
[root@10-186-62-34 ~]# ps -ef | grep 9876
root     15909 15863  0 15:17 pts/0    00:00:00 grep --color=auto 9876
actiont+ 26413     1  2 Jan30 ?        22:59:10 /data/mysql/base/5.7.25/bin/mysqld --defaults-file=/data/mysql/etc/9876/my.cnf --daemonize --pid-file=/data/mysql/data/9876/mysqld.pid --user=actiontech-mysql --socket=/data/mysql/data/9876/mysqld.sock --port=9876

# 登录,注意,生产上不建议使用root登录数据库,权限太大!
[root@10-186-62-34 ~]# /data/mysql/base/5.7.25/bin/mysql -uroot -p -S /data/mysql/data/9876/mysqld.sock
Enter password:
  1. 如何启动,关闭,重启数据库?
# 开启
systemctl start mysqld_9876

# 关闭
systemctl stop mysqld_9876

# 重启
systemctl restart mysqld_9876
  1. 按来源IP统计连接数

SELECT SUBSTRING_INDEX(host, ':', 1) AS ip, COUNT(*) AS connection_count 
FROM information_schema.processlist 
GROUP BY ip 
ORDER BY connection_count DESC;
  1. 统计库表大小

SELECT 
    table_schema AS `数据库`, 
    table_name AS `表名`, 
    ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS `大小(MB)` 
FROM information_schema.tables 
GROUP BY table_schema, table_name;
  1. 查看表结构

DESC 表名;

或者

SHOW CREATE TABLE 表名;
  1. 查看活跃会话

SHOW PROCESSLIST;

或者查看不是Sleep状态的会话:

SELECT * FROM information_schema.processlist WHERE `Command` != 'Sleep';
  1. 看某个特定会话执行的SQL

首先,找到该会话的ID(用SHOW PROCESSLIST;命令),然后:

SHOW FULL PROCESSLIST;

通过上述命令可以查看到所有会话的信息,包括IDUserHost等,根据ID可以定位到特定会话正在执行的SQL语句。

  1. 杀会话

KILL 连接ID;

例如,如果要结束ID为1234的会话,可以执行:

KILL 1234;
  1. 查看当前所有数据库的大小

SELECT table_schema "数据库名",
ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS "数据库大小(MB)"
FROM information_schema.tables
GROUP BY table_schema;
  1. 查找大于指定大小的表

SELECT table_schema AS `数据库`, table_name AS `表名`, 
ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS `大小(MB)` 
FROM information_schema.tables 
GROUP BY table_schema, table_name 
HAVING SUM(data_length + index_length) > 指定大小 * 1024 * 1024
ORDER BY SUM(data_length + index_length) DESC;

其中“指定大小”需替换为实际的数值大小,单位为MB。

  1. 检查和修复表

CHECK TABLE 表名;
REPAIR TABLE 表名;
  1. 查看数据库版本

SELECT VERSION();