mysql命令行是开发者操作mysql数据库最常用的方式之一,通过终端直接输入命令可以快速完成各类数据库管理任务,不需要依赖图形化工具,适合服务器环境和对效率有要求的场景。接下来将详细介绍终端模式下mysql的完整使用流程和相关操作。

一、mysql命令行连接与登录
首先要确保本地已经安装mysql服务,并且服务处于运行状态,之后打开终端输入连接命令即可。如果是本地连接,基础命令格式如下:
mysql -u 用户名 -p
输入命令后回车,系统会提示输入对应用户的密码,输入正确密码后回车即可进入mysql命令行交互界面。如果是连接远程mysql服务,需要额外指定主机地址和端口,命令格式如下:
mysql -h 远程主机IP -P 端口号 -u 用户名 -p
例如连接192.168.0.1主机的3306端口,用户名为root,命令为:
mysql -h 192.168.0.1 -P 3306 -u root -p
如果要退出mysql命令行,输入exit或者quit命令后回车即可。
二、数据库基础操作
1. 查看所有数据库
进入mysql命令行后,首先可以查看当前mysql实例下所有的数据库,命令如下:
SHOW DATABASES;
2. 创建数据库
创建新数据库的命令格式为:
CREATE DATABASE 数据库名 CHARACTER SET 字符集 COLLATE 排序规则;
如果不指定字符集和排序规则,默认会使用mysql配置的字符集,通常建议显式指定utf8mb4字符集,避免中文乱码问题,示例:
CREATE DATABASE test_db CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
3. 选择数据库
操作数据库内的表和数据前,需要先选择要使用的数据库,命令如下:
USE 数据库名;
4. 删除数据库
删除数据库的命令需要谨慎使用,执行后数据库内所有数据都会被清除,命令格式:
DROP DATABASE 数据库名;
三、表操作相关命令
1. 查看当前数据库下的所有表
选择数据库后,可以查看该数据库下所有的表,命令如下:
SHOW TABLES;
2. 创建表
创建表需要指定表名、字段名、字段类型以及约束条件,基础命令格式:
CREATE TABLE 表名 (
字段1 数据类型 约束条件,
字段2 数据类型 约束条件,
...
主键约束,
索引约束等
) ENGINE=存储引擎 DEFAULT CHARSET=字符集;
示例:创建一个用户表,包含id、用户名、年龄、创建时间字段:
CREATE TABLE user (
id INT PRIMARY KEY AUTO_INCREMENT COMMENT '用户ID',
username VARCHAR(50) NOT NULL UNIQUE COMMENT '用户名',
age INT DEFAULT 0 COMMENT '年龄',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
3. 查看表结构
查看已创建表的结构信息,命令如下:
DESC 表名; -- 或者 DESCRIBE 表名;
4. 修改表结构
如果需要新增字段、修改字段类型或者删除字段,可以使用ALTER TABLE命令,常见操作示例:
-- 新增字段 ALTER TABLE user ADD email VARCHAR(100) COMMENT '邮箱'; -- 修改字段类型 ALTER TABLE user MODIFY age SMALLINT DEFAULT 18 COMMENT '年龄'; -- 删除字段 ALTER TABLE user DROP email; -- 修改表名 ALTER TABLE user RENAME TO sys_user;
5. 删除表
删除表的命令同样需要谨慎执行,会清除表结构和所有数据:
DROP TABLE 表名; -- 如果存在才删除 DROP TABLE IF EXISTS 表名;
四、数据增删改查操作
1. 插入数据
向表中插入新数据使用INSERT命令,格式如下:
-- 插入单条数据 INSERT INTO 表名 (字段1, 字段2, ...) VALUES (值1, 值2, ...); -- 插入多条数据 INSERT INTO 表名 (字段1, 字段2, ...) VALUES (值1, 值2, ...), (值1, 值2, ...);
示例:向user表插入数据:
INSERT INTO user (username, age) VALUES ('张三', 25);
INSERT INTO user (username, age) VALUES ('李四', 22), ('王五', 30);
2. 查询数据
查询数据使用SELECT命令,基础查询格式:
-- 查询所有字段 SELECT * FROM 表名; -- 查询指定字段 SELECT 字段1, 字段2 FROM 表名; -- 带条件查询 SELECT * FROM 表名 WHERE 条件; -- 排序 SELECT * FROM 表名 ORDER BY 字段 ASC|DESC; -- 分页 SELECT * FROM 表名 LIMIT 起始偏移量, 查询条数;
示例:查询年龄大于23岁的用户,按年龄降序排列,取前10条:
SELECT id, username, age FROM user WHERE age > 23 ORDER BY age DESC LIMIT 0, 10;
3. 更新数据
更新表中已有数据使用UPDATE命令,必须带WHERE条件,否则会更新整张表的数据:
UPDATE 表名 SET 字段1=值1, 字段2=值2 WHERE 条件;
示例:将用户名为张三的年龄更新为26:
UPDATE user SET age=26 WHERE username='张三';
4. 删除数据
删除表中数据使用DELETE命令,同样必须带WHERE条件,否则会删除整张表的数据:
DELETE FROM 表名 WHERE 条件;
示例:删除用户名为李四的用户数据:
DELETE FROM user WHERE username='李四';
五、权限管理相关操作
mysql的权限管理可以通过命令行完成,常见操作如下:
1. 创建用户
CREATE USER '用户名'@'主机范围' IDENTIFIED BY '密码';
示例:创建只能从本地登录的用户test_user,密码为123456:
CREATE USER 'test_user'@'localhost' IDENTIFIED BY '123456';
2. 授权
给用户授予权限使用GRANT命令,格式如下:
GRANT 权限类型 ON 数据库.表 TO '用户名'@'主机范围'; -- 授予所有权限 GRANT ALL PRIVILEGES ON 数据库.表 TO '用户名'@'主机范围'; -- 刷新权限使配置生效 FLUSH PRIVILEGES;
示例:给test_user用户授予test_db数据库下所有表的查询和插入权限:
GRANT SELECT, INSERT ON test_db.* TO 'test_user'@'localhost'; FLUSH PRIVILEGES;
3. 撤销权限
REVOKE 权限类型 ON 数据库.表 FROM '用户名'@'主机范围'; FLUSH PRIVILEGES;
4. 删除用户
DROP USER '用户名'@'主机范围';
六、常见问题与解决方法
- 连接时提示Access denied for user:检查用户名和密码是否正确,以及该用户是否允许从当前主机登录。
- 执行命令提示语法错误:检查sql语句的语法,尤其是关键字拼写、引号匹配、分号结尾等细节。
- 中文数据乱码:检查数据库、表、字段的字符集是否设置为utf8mb4,终端的字符集是否支持中文。
- 忘记root密码:可以停止mysql服务,以跳过权限验证的方式启动,之后重置root密码。