MySQL是最流行的关系型数据库之一,掌握其命令行工具是每位开发者和DBA的必备技能。本教程将带你系统学习MySQL命令行的核心功能和实用技巧。

🚀 连接MySQL服务器

基础连接方式

# 连接到本地MySQL服务器
mysql -u root -p

# 指定主机和端口
mysql -h 127.0.0.1 -P 3306 -u username -p

# 连接后直接选择数据库
mysql -u root -p database_name

连接参数说明

参数说明示例
-u用户名-u admin
-p密码提示(回车后输入密码)
-h主机地址-h db.example.com
-P端口号-P 3307
-D指定数据库-D mydb

🔍 数据库与表操作

数据库管理

-- 显示所有数据库
SHOW DATABASES;

-- 创建新数据库
CREATE DATABASE school_db;

-- 选择数据库
USE school_db;

-- 删除数据库
DROP DATABASE old_db;

表操作

-- 创建学生表
CREATE TABLE students (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
age INT CHECK (age >= 15),
email VARCHAR(100) UNIQUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- 显示所有表
SHOW TABLES;

-- 查看表结构
DESCRIBE students;

-- 修改表结构
ALTER TABLE students ADD COLUMN major VARCHAR(50);
ALTER TABLE students MODIFY COLUMN age TINYINT;
ALTER TABLE students DROP COLUMN email;

📊 数据操作(CRUD)

插入数据

INSERT INTO students (name, age)
VALUES
('张三', 18),
('李四', 19),
('王五', 17);

查询数据

-- 查询所有数据
SELECT * FROM students;

-- 条件查询
SELECT name, age FROM students WHERE age > 18;

-- 排序和限制
SELECT * FROM students ORDER BY created_at DESC LIMIT 5;

-- 模糊查询
SELECT * FROM students WHERE name LIKE '张%';

更新数据

UPDATE students
SET age = 20
WHERE name = '张三';

删除数据

DELETE FROM students
WHERE name = '王五';

🔧 高级查询技巧

聚合函数

SELECT
COUNT(*) AS total,
AVG(age) AS avg_age,
MIN(created_at) AS oldest,
MAX(age) AS max_age
FROM students;

分组统计

SELECT
major,
COUNT(*) AS student_count,
AVG(age) AS avg_age
FROM students
GROUP BY major
HAVING COUNT(*) > 5;

表连接

-- 创建课程表
CREATE TABLE courses (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50),
instructor VARCHAR(50)
);

-- 内连接查询
SELECT s.name, c.name AS course
FROM students s
JOIN courses c ON s.id = c.student_id;

👥 用户与权限管理

用户管理

-- 创建新用户
CREATE USER 'dev'@'localhost' IDENTIFIED BY 'password123';

-- 修改密码
ALTER USER 'dev'@'localhost' IDENTIFIED BY 'newpassword456';

-- 删除用户
DROP USER 'dev'@'localhost';

权限管理

-- 授予权限
GRANT SELECT, INSERT, UPDATE ON school_db.* TO 'dev'@'localhost';

-- 查看权限
SHOW GRANTS FOR 'dev'@'localhost';

-- 撤销权限
REVOKE UPDATE ON school_db.* FROM 'dev'@'localhost';

📤 数据导入导出

导出数据

# 导出整个数据库
mysqldump -u root -p school_db > school_db.sql

# 导出特定表
mysqldump -u root -p school_db students > students.sql

# 导出为CSV格式
mysql -u root -p -e "SELECT * FROM students" school_db > students.csv

导入数据

# 导入SQL文件
mysql -u root -p school_db < backup.sql

# 导入CSV数据
mysql -u root -p school_db -e "
LOAD DATA INFILE '/path/to/students.csv'
INTO TABLE students
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;"

⚙️ 配置与优化

配置文件(my.cnf)

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysql/error.log
pid-file=/var/run/mysql/mysql.pid

# 性能优化
innodb_buffer_pool_size=1G
max_connections=200
query_cache_size=128M

性能分析

-- 查看查询执行计划
EXPLAIN SELECT * FROM students WHERE age > 18;

-- 查看进程列表
SHOW PROCESSLIST;

-- 优化表
OPTIMIZE TABLE students;

🚨 常见问题解决

忘记root密码

  1. 停止MySQL服务
  2. 启动安全模式:
mysqld_safe --skip-grant-tables &
  1. 登录并修改密码:
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpassword';
  1. 重启MySQL服务

连接错误

# 错误:ERROR 1045 (28000)
# 解决方案:检查用户名/密码,确保主机权限

# 错误:ERROR 2002 (HY000)
# 解决方案:确认MySQL服务运行中,检查socket路径

备份与恢复

# 定时备份脚本
mysqldump -u root -p --all-databases | gzip > /backups/mysql-$(date +%F).sql.gz

# 恢复备份
gunzip < /backups/mysql-2023-01-01.sql.gz | mysql -u root -p

💡 实用技巧

批处理模式

mysql -u root -p -e "SHOW DATABASES; SELECT VERSION();"

# 执行SQL脚本
mysql -u root -p < script.sql

输出格式化

-- 垂直显示结果
SELECT * FROM students \G

-- 表格格式
SELECT * FROM students \T

-- 导出为HTML
SELECT * FROM students --html

命令历史

# 查看历史命令
cat ~/.mysql_history

# 实时监控查询
mysqladmin -u root -p processlist

📚 学习资源推荐

  1. MySQL官方文档
  2. MySQL Tutorial
  3. SQLZoo MySQL练习
  4. MySQL Workbench图形工具

通过掌握这些MySQL命令和技巧,你将能够高效地管理和操作数据库。实践是最好的学习方式 - 立即创建你的第一个数据库项目吧!

附录:常用命令速查表

类别命令说明
连接mysql -u user -p连接数据库
数据库SHOW DATABASES;显示所有数据库
CREATE DATABASE dbname;创建数据库
USE dbname;选择数据库
表操作SHOW TABLES;显示所有表
DESCRIBE tablename;查看表结构
ALTER TABLE ...修改表结构
数据SELECT ... FROM ...查询数据
INSERT INTO ... VALUES ...插入数据
UPDATE ... SET ... WHERE ...更新数据
DELETE FROM ... WHERE ...删除数据
用户CREATE USER ...创建用户
GRANT ... ON ... TO ...授予权限
维护SHOW PROCESSLIST;查看活动连接
EXPLAIN SELECT ...分析查询性能

参考&致谢

系列教程

全部文章RSS订阅

数据库系列


作者: 夜法之书
版权声明: 本博客所有文章除特別声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 夜法之书 !
评论
数据加载中 ...
 上一篇

阅读全文

SQLite使用全面教程:轻量级数据库的终极指南
SQLite使用全面教程:轻量级数据库的终极指南 SQLite使用全面教程:轻量级数据库的终极指南
SQLite是世界上最广泛部署的数据库引擎,以其轻量、零配置和嵌入式特性著称。本教程将带你从基础到高级全面掌握SQLite的使用技巧,特别强化了数据库连接和命令行操作部分。
2025-11-22
下一篇 

阅读全文

PostgreSQL命令行使用教程:掌握 psql 工具
PostgreSQL命令行使用教程:掌握 psql 工具 PostgreSQL命令行使用教程:掌握 psql 工具
掌握PostgreSQL的命令行工具 psql 是高效管理数据库的关键。本文将带你全面了解这个强大的交互式终端工具的各种使用方法,包括各种常见问题和技巧总结。
2025-11-22
  目录