MySQL 是一款广泛使用的开源关系型数据库管理系统,掌握其访问命令是进行数据库操作的基础,MySQL 的访问命令主要通过命令行客户端(如 mysql)或图形化工具(如 MySQL Workbench、Navicat)执行,其中命令行方式是最直接且高效的手段,以下将从连接 MySQL、数据库操作、表操作、数据操作、权限管理等方面详细介绍 MySQL 的核心访问命令。

连接 MySQL 服务器
要使用 MySQL,首先需要连接到 MySQL 服务器,基本命令格式为:
mysql -h 主机名 -P 端口号 -u 用户名 -p
参数说明:
-h
:指定 MySQL 服务器的 IP 地址或主机名,本地连接可省略或使用localhost
。-P
:端口号,默认为3306
,若未修改可省略。-u
:用户名,如root
(管理员账户)。-p
:提示输入密码,输入后按回车即可连接。
示例(连接本地 MySQL 服务器):
mysql -u root -p
连接成功后,会显示 mysql>
提示符,此时可输入 SQL 命令或特定管理命令。

数据库操作
显示所有数据库
SHOW DATABASES;
创建数据库
CREATE DATABASE 数据库名 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
(utf8mb4
支持 emoji 和特殊字符,推荐使用)
选择数据库
USE 数据库名;
删除数据库
DROP DATABASE 数据库名;
表操作
显示当前数据库的所有表
SHOW TABLES;
创建表
CREATE TABLE 表名 ( 字段名1 数据类型 [约束], 字段名2 数据类型 [约束], ... );
示例(创建用户表):
CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL, email VARCHAR(100) UNIQUE, age INT DEFAULT 18, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
查看表结构
DESC 表名;
修改表结构
- 添加字段:
ALTER TABLE 表名 ADD 字段名 数据类型 [约束];
- 修改字段:
ALTER TABLE 表名 MODIFY 字段名 新数据类型 [约束];
- 删除字段:
ALTER TABLE 表名 DROP 字段名;
删除表
DROP TABLE 表名;
数据操作(CRUD)
插入数据(INSERT)
INSERT INTO 表名 (字段1, 字段2, ...) VALUES (值1, 值2, ...);
示例:
INSERT INTO users (username, email, age) VALUES ('Alice', 'alice@example.com', 25);
查询数据(SELECT)
- 基本查询:
SELECT 字段1, 字段2 FROM 表名 WHERE 条件;
- 示例(查询年龄大于 30 的用户):
SELECT username, email FROM users WHERE age > 30;
- 排序与分页:
SELECT * FROM 表名 ORDER BY 字段名 [ASC/DESC] LIMIT 起始位置, 记录数;
更新数据(UPDATE)
UPDATE 表名 SET 字段1=新值1, 字段2=新值2 WHERE 条件;
(注意:未加
WHERE
条件会更新全表数据,需谨慎操作)(图片来源网络,侵删)删除数据(DELETE)
DELETE FROM 表名 WHERE 条件;
(同样需注意
WHERE
条件,避免误删全表数据)
用户与权限管理
创建用户
CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';
示例(创建本地用户):
CREATE USER 'dev'@'localhost' IDENTIFIED BY 'Dev@123';
授权
GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名';
- 权限列表:如
SELECT, INSERT, UPDATE, DELETE
(可使用ALL
表示所有权限)。 - 数据库名和表名可用 表示所有数据库和表。
示例(授予用户对test_db
的所有权限):GRANT ALL ON test_db.* TO 'dev'@'localhost';
刷新权限
FLUSH PRIVILEGES;
撤销权限
REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';
其他常用命令
- 退出 MySQL:
EXIT; -- 或 QUIT;
- 显示当前版本:
SELECT VERSION();
- 显示当前数据库:
SELECT DATABASE();
- 导入/导出数据:
- 导出(使用
mysqldump
命令):mysqldump -u 用户名 -p 数据库名 > 导出文件.sql
- 导入:
mysql -u 用户名 -p 数据库名 < 导入文件.sql
- 导出(使用
相关操作命令速查表
操作分类 | 命令示例 |
---|---|
连接 MySQL | mysql -u root -p |
显示数据库 | SHOW DATABASES; |
创建数据库 | CREATE DATABASE db_name; |
选择数据库 | USE db_name; |
创建表 | CREATE TABLE table_name (id INT PRIMARY KEY); |
查看表结构 | DESC table_name; |
插入数据 | INSERT INTO table_name (name) VALUES ('John'); |
查询数据 | SELECT * FROM table_name WHERE age > 20; |
更新数据 | UPDATE table_name SET age=25 WHERE name='John'; |
删除数据 | DELETE FROM table_name WHERE name='John'; |
删除表 | DROP TABLE table_name; |
创建用户 | CREATE USER 'user'@'localhost' IDENTIFIED BY 'pass'; |
授权 | GRANT SELECT ON db_name.* TO 'user'@'localhost'; |
退出 | EXIT; |
相关问答FAQs
Q1:忘记 MySQL root 密码如何重置?
A1:重置 root 密码的步骤如下(以 Linux 系统为例):
- 停止 MySQL 服务:
sudo systemctl stop mysql
; - 跳过权限表启动 MySQL:
sudo mysqld_safe --skip-grant-tables &
; - 无密码登录 MySQL:
mysql -u root
; - 执行以下命令重置密码(MySQL 8.0+ 需使用
ALTER USER
):FLUSH PRIVILEGES; ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码'; FLUSH PRIVILEGES;
- 重启 MySQL 服务:
sudo systemctl restart mysql
,即可使用新密码登录。
Q2:如何查看 MySQL 当前正在执行的 SQL 语句?
A2:可以通过查询 information_schema
数据库中的 PROCESSLIST
表或使用 SHOW PROCESSLIST
命令实现:
SHOW PROCESSLIST;
该命令会显示所有连接的线程信息,包括 ID
(线程 ID)、USER
(用户)、HOST
(主机)、DB
(数据库)、COMMAND
(当前命令)、TIME
(执行时长)等字段,若需查看特定线程的详细 SQL,可结合 SHOW PROCESSLIST
中的 ID
使用以下命令(需有 SUPER
权限):
SELECT id, state, info FROM sys.schema_processlist WHERE id = [线程ID];
通过监控 COMMAND
为 Query
的线程,可实时定位正在执行的 SQL 语句。