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:
- 如何启动,关闭,重启数据库?
# 开启
systemctl start mysqld_9876
# 关闭
systemctl stop mysqld_9876
# 重启
systemctl restart mysqld_9876
-
按来源IP统计连接数
SELECT SUBSTRING_INDEX(host, ':', 1) AS ip, COUNT(*) AS connection_count
FROM information_schema.processlist
GROUP BY ip
ORDER BY connection_count DESC;
-
统计库表大小
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;
-
查看表结构
DESC 表名;
或者
SHOW CREATE TABLE 表名;
-
查看活跃会话
SHOW PROCESSLIST;
或者查看不是Sleep状态的会话:
SELECT * FROM information_schema.processlist WHERE `Command` != 'Sleep';
-
看某个特定会话执行的SQL
首先,找到该会话的ID(用SHOW PROCESSLIST;命令),然后:
SHOW FULL PROCESSLIST;
通过上述命令可以查看到所有会话的信息,包括ID、User、Host等,根据ID可以定位到特定会话正在执行的SQL语句。
-
杀会话
KILL 连接ID;
例如,如果要结束ID为1234的会话,可以执行:
KILL 1234;
-
查看当前所有数据库的大小
SELECT table_schema "数据库名",
ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS "数据库大小(MB)"
FROM information_schema.tables
GROUP BY table_schema;
-
查找大于指定大小的表
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。
-
检查和修复表
CHECK TABLE 表名;
REPAIR TABLE 表名;
-
查看数据库版本
SELECT VERSION();