MySQL 是一种广泛使用的开源关系型数据库管理系统,其命令行工具提供了丰富的功能,用于数据库的创建、管理、查询和维护,以下是 MySQL 常用命令的详细说明,涵盖连接数据库、数据库操作、表操作、数据操作、用户与权限管理、备份与恢复等多个方面。

连接与退出 MySQL
-
连接 MySQL 服务器
mysql -u 用户名 -p
执行后会提示输入密码,若连接远程服务器,可添加
-h
参数(如-h 192.168.1.100
),指定端口则用-P
(如-P 3306
)。 -
退出 MySQL
exit; quit; \q;
数据库操作
-
显示所有数据库
(图片来源网络,侵删)SHOW DATABASES;
-
创建数据库
CREATE DATABASE 数据库名 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
示例:
CREATE DATABASE mydb;
-
选择数据库
USE 数据库名;
-
删除数据库
(图片来源网络,侵删)DROP DATABASE 数据库名;
-
修改数据库字符集
ALTER DATABASE 数据库名 CHARACTER SET utf8mb4;
表操作
-
显示当前数据库的所有表
SHOW TABLES;
-
创建表
CREATE TABLE 表名 ( 列名1 数据类型 [约束], 列名2 数据类型 [约束], PRIMARY KEY (列名) );
示例:
CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL, email VARCHAR(100) UNIQUE );
-
查看表结构
DESC 表名; SHOW COLUMNS FROM 表名;
-
修改表结构
- 添加列:
ALTER TABLE 表名 ADD 列名 数据类型;
- 修改列:
ALTER TABLE 表名 MODIFY 列名 新数据类型;
- 删除列:
ALTER TABLE 表名 DROP 列名;
- 重命名表:
RENAME TABLE 旧表名 TO 新表名;
- 添加列:
-
删除表
DROP TABLE 表名;
数据操作(CRUD)
-
插入数据(INSERT)
INSERT INTO 表名 (列1, 列2) VALUES (值1, 值2);
批量插入:
INSERT INTO 表名 VALUES (值1, 值2), (值3, 值4);
-
查询数据(SELECT)
SELECT 列名 FROM 表名 WHERE 条件 ORDER BY 列名 LIMIT 数量;
示例:
SELECT * FROM users WHERE age > 18 ORDER BY name LIMIT 10;
-
更新数据(UPDATE)
UPDATE 表名 SET 列名=新值 WHERE 条件;
注意:务必添加
WHERE
条件,否则会更新全表数据。 -
删除数据(DELETE)
DELETE FROM 表名 WHERE 条件;
数据类型与约束
-
常用数据类型
| 类型 | 说明 | 示例 |
|---------------|-----------------------------|--------------------|
| INT | 整数 |age INT
|
| VARCHAR | 可变长度字符串 |name VARCHAR(50)
|
| TEXT | 长文本 |content TEXT
|
| DATETIME | 日期时间(YYYY-MM-DD HH:MM:SS)|created_at DATETIME
|
| DECIMAL | 精确小数 |price DECIMAL(10,2)
| -
常用约束
PRIMARY KEY
:主键,唯一标识记录。UNIQUE
:唯一约束,值不能重复。NOT NULL
:非空约束。DEFAULT
:默认值。FOREIGN KEY
:外键,用于关联表。
索引与优化
-
创建索引
CREATE INDEX 索引名 ON 表名 (列名);
-
查看索引
SHOW INDEX FROM 表名;
-
删除索引
DROP INDEX 索引名 ON 表名;
用户与权限管理
-
创建用户
CREATE USER '用户名'@'主机' IDENTIFIED BY '密码';
示例:
CREATE USER 'admin'@'localhost' IDENTIFIED BY '123456';
-
授予权限
GRANT 权限列表 ON 数据库名.* TO '用户名'@'主机';
示例:
GRANT SELECT, INSERT ON mydb.* TO 'admin'@'localhost';
-
刷新权限
FLUSH PRIVILEGES;
-
撤销权限
REVOKE 权限 ON 数据库名.* FROM '用户名'@'主机';
-
删除用户
DROP USER '用户名'@'主机';
备份与恢复
-
备份数据库(mysqldump)
mysqldump -u 用户名 -p 数据库名 > 备份文件.sql
备份所有数据库:
mysqldump -u root -p --all-databases > all.sql
-
恢复数据库
mysql -u 用户名 -p 数据库名 < 备份文件.sql
其他常用命令
-
显示当前用户
SELECT USER();
-
显示当前数据库版本
SELECT VERSION();
-
清空表数据(保留表结构)
TRUNCATE TABLE 表名;
-
执行 SQL 文件
SOURCE /路径/文件名.sql;
相关问答 FAQs
Q1:如何查看 MySQL 的运行状态?
A1:可以通过以下命令查看 MySQL 服务器的运行状态:
SHOW STATUS;
或查看特定状态变量,如:
SHOW VARIABLES LIKE 'max_connections';
在 Linux 系统中,可通过 systemctl status mysql
查看服务运行状态。
Q2:忘记 MySQL root 密码怎么办?
A2:可通过以下步骤重置 root 密码:
- 停止 MySQL 服务:
systemctl stop mysql
(Linux)或通过任务管理器停止(Windows)。 - 跳过权限表启动 MySQL:
- Linux:
mysqld_safe --skip-grant-tables &
- Windows:在命令行中执行
mysqld --skip-grant-tables
- Linux:
- 无密码登录 MySQL:
mysql -u root
- 执行以下命令修改密码(假设新密码为 "newpassword"):
USE mysql; UPDATE user SET authentication_string=PASSWORD('newpassword') WHERE User='root'; FLUSH PRIVILEGES;
- 重启 MySQL 服务,使用新密码登录。