Linux常用MySQL命令有哪些?

Linux环境下,MySQL命令是数据库管理、操作的核心工具,涵盖从服务管理到数据查询、用户权限配置等全流程操作,以下从基础到进阶,详细梳理常用命令及使用场景,并结合表格归纳关键操作。

linux的mysql命令大全
(图片来源网络,侵删)

MySQL服务管理

在Linux中,MySQL服务通常通过systemctl或service命令管理,前提是已安装MySQL服务器(如mysql-server包)。

  • 启动服务
    systemctl start mysqld  # CentOS/RHEL系统
    service mysql start     # Debian/Ubuntu系统(需安装mysql-server)
  • 停止服务
    systemctl stop mysqld
    service mysql stop
  • 重启服务
    systemctl restart mysqld
    service mysql restart
  • 设置开机自启
    systemctl enable mysqld
  • 查看服务状态
    systemctl status mysqld

登录与退出MySQL

  • 登录MySQL(需输入密码,root用户初始密码可能通过sudo grep 'temporary password' /var/log/mysqld.log查看)
    mysql -u root -p
  • 登录后指定数据库
    mysql -u root -p test_db
  • 退出MySQL
    exit;
    quit;
    \q

数据库操作

创建数据库

CREATE DATABASE db_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  • CHARACTER SET指定字符集,utf8mb4支持emoji和特殊字符;COLLATE指定排序规则。

查看数据库列表

SHOW DATABASES;

选择数据库

USE db_name;

删除数据库

DROP DATABASE db_name;

数据库操作命令速查

操作命令示例说明
创建数据库CREATE DATABASE db_name;默认字符集latin1
查看当前数据库SELECT DATABASE();返回当前使用的数据库名
修改数据库字符集ALTER DATABASE db_name CHARSET utf8mb4;修改已存在数据库的字符集

数据表操作

创建数据表

CREATE TABLE table_name (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    age INT DEFAULT 18,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
  • AUTO_INCREMENT:自增主键;NOT NULL:字段非空;DEFAULT:默认值;TIMESTAMP:自动记录时间。

查看数据表列表

SHOW TABLES;

查看表结构

DESC table_name;
SHOW COLUMNS FROM table_name;

修改表结构

  • 添加字段:ALTER TABLE table_name ADD COLUMN email VARCHAR(100);
  • 修改字段类型:ALTER TABLE table_name MODIFY COLUMN age SMALLINT;
  • 删除字段:ALTER TABLE table_name DROP COLUMN email;
  • 重命名字段:ALTER TABLE table_name CHANGE COLUMN old_name new_name VARCHAR(50);

删除数据表

DROP TABLE table_name;

数据表操作命令速查

操作命令示例说明
创建带索引的表CREATE TABLE table_name (id INT, INDEX idx_id (id));为id字段创建普通索引
查看表创建语句SHOW CREATE TABLE table_name;返回建表SQL语句
清空表数据(保留结构)TRUNCATE TABLE table_name;比DELETE更快,不可回滚

数据操作(CRUD)

插入数据(INSERT)

INSERT INTO table_name (name, age) VALUES ('Alice', 25), ('Bob', 30);

查询数据(SELECT)

  • 基础查询:SELECT * FROM table_name;
  • 条件查询:SELECT * FROM table_name WHERE age > 20;
  • 模糊查询:SELECT * FROM table_name WHERE name LIKE 'A%';
  • 排序:SELECT * FROM table_name ORDER BY age DESC;
  • 聚合函数:SELECT COUNT(*) FROM table_name;

更新数据(UPDATE)

UPDATE table_name SET age = 26 WHERE name = 'Alice';

删除数据(DELETE)

DELETE FROM table_name WHERE age < 18;

数据操作命令速查

操作命令示例说明
插入查询结果INSERT INTO table1 SELECT * FROM table2;将table2数据插入table1
分页查询SELECT * FROM table_name LIMIT 10 OFFSET 20;跳过前20条,返回10条
分组统计SELECT age, COUNT(*) FROM table_name GROUP BY age;按年龄分组统计人数

用户与权限管理

创建用户

CREATE USER 'user_name'@'localhost' IDENTIFIED BY 'password';
  • 'localhost'限制仅本地登录,允许任意主机登录。

授权

GRANT SELECT, INSERT ON db_name.* TO 'user_name'@'localhost';
  • 权限类型:SELECT(查询)、INSERT(插入)、UPDATE(更新)、DELETE(删除)、ALL(所有权限)。

刷新权限

FLUSH PRIVILEGES;

撤销权限

REVOKE INSERT ON db_name.* FROM 'user_name'@'localhost';

删除用户

DROP USER 'user_name'@'localhost';

用户权限管理命令速查

操作命令示例说明
查看用户权限SHOW GRANTS FOR ‘user_name’@’localhost’;返回用户权限列表
授权所有数据库GRANT ALL ON TO ‘user_name’@’%’;赋予全局超级权限(谨慎)

数据备份与恢复

备份数据库(mysqldump)

mysqldump -u root -p db_name > backup.sql
  • 备份所有数据库:mysqldump -u root -p --all-databases > all_backup.sql

恢复数据库

mysql -u root -p db_name < backup.sql

数据备份命令速查

操作命令示例说明
备份表结构(不含数据)mysqldump -u root -p db_name table_name –no-data > structure.sql仅导出表结构
压缩备份mysqldump -u root -p db_namegzip > backup.sql.gz

其他常用命令

  • 查看MySQL版本
    SELECT VERSION();
  • 查看当前用户
    SELECT USER();
  • 执行SQL脚本文件
    SOURCE /path/to/script.sql;
  • 查询正在执行的线程
    SHOW PROCESSLIST;

相关问答FAQs

Q1:忘记MySQL root密码如何重置?
A1

  1. 停止MySQL服务:systemctl stop mysqld
  2. 跳过权限表启动:mysqld_safe --skip-grant-tables &
  3. 无密码登录MySQL:mysql -u root
  4. 更新密码(MySQL 5.7+):
    UPDATE mysql.user SET authentication_string=PASSWORD('new_password') WHERE User='root';
    FLUSH PRIVILEGES;
  5. 重启MySQL服务:systemctl restart mysqld

Q2:如何优化慢查询SQL?
A2

  1. 开启慢查询日志:在my.cnf中配置
    slow_query_log = 1
    slow_query_log_file = /var/log/mysql/slow.log
    long_query_time = 2  # 记录执行超过2秒的SQL
  2. 使用EXPLAIN分析查询计划:EXPLAIN SELECT * FROM table_name WHERE condition;
  3. 添加索引:CREATE INDEX idx_name ON table_name(name);
  4. 避免SELECT *,只查询必要字段;减少子查询,使用JOIN优化。
linux的mysql命令大全
(图片来源网络,侵删)

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/455914.html<

(0)
运维的头像运维
上一篇2025-11-09 10:35
下一篇 2025-11-09 10:39

相关推荐

  • 脚本执行cmd命令如何安全高效实现?

    在编程和自动化任务中,脚本执行cmd命令是一项常见的需求,无论是Windows系统管理、文件操作还是调用外部工具,通过脚本调用命令行接口(CMD)都能高效完成任务,本文将详细介绍脚本执行cmd命令的方法、注意事项及实际应用场景,帮助读者全面掌握这一技能,在Windows系统中,脚本语言如Python、VBScr……

    2025-11-20
    0
  • Linux中scp命令如何高效安全传输文件?

    在Linux系统中,scp(secure copy)命令是用于在本地主机和远程主机之间安全复制文件或目录的强大工具,它基于SSH(Secure Shell)协议进行数据传输,确保了数据传输过程中的加密性和安全性,因此被广泛应用于系统管理和文件备份等场景,scp命令的基本语法结构为scp [选项] 源文件 目标文……

    2025-11-20
    0
  • 如何用GM命令实现传送功能?

    在《魔兽世界》中,游戏管理员(GM)命令中的传送功能是一项强大的管理工具,主要用于帮助玩家解决卡位、迷路等紧急问题,或进行特殊活动场景的搭建,传送命令的核心逻辑是通过坐标或目标对象实现空间位置的即时转移,其使用需严格遵循游戏管理规范,避免影响正常游戏秩序,以下从命令类型、使用场景、操作步骤及注意事项等方面展开说……

    2025-11-19
    0
  • Linux的write命令怎么用?

    Linux的write命令是一个用于在用户之间发送消息的实用工具,它允许一个用户向另一个用户或终端会话写入文本信息,常用于快速通信或提醒,该命令的基本语法为write 用户名 [终端名],其中用户名指定接收消息的目标用户,终端名是可选参数,用于指定接收消息的具体终端,如果目标用户有多个终端会话,可以通过该参数确……

    2025-11-17
    0
  • Windows用户管理命令有哪些核心用法?

    Windows 用户管理是系统管理员日常工作中不可或缺的一部分,通过命令行工具可以高效地完成用户账户的创建、修改、删除等操作,尤其适用于批量管理或远程维护场景,以下将详细介绍常用的 Windows 用户管理命令及其功能,net user 是最基础且功能强大的用户管理命令,用于查看、创建、修改和删除用户账户,ne……

    2025-11-17
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注