在Linux系统中,MySQL命令是管理和操作MySQL数据库的核心工具,涵盖了从服务管理到数据操作、用户权限控制等多个方面,以下将详细介绍常用的MySQL命令及其使用场景,帮助用户高效完成数据库相关任务。

MySQL服务的启动、停止和重启是基础操作,在大多数Linux发行版中,可以通过系统服务命令管理MySQL,例如使用systemctl start mysql
启动服务,systemctl stop mysql
停止服务,systemctl restart mysql
重启服务,以及systemctl status mysql
查看服务状态,若需要MySQL开机自启,可执行systemctl enable mysql
;取消自启则使用systemctl disable mysql
,对于部分旧版本系统,可能仍需使用service mysql start/stop/restart
命令。
连接MySQL数据库是执行其他操作的前提,在命令行中,通过mysql -u 用户名 -p
命令连接,系统会提示输入密码。mysql -u root -p
用于以root用户登录,若连接远程数据库,可添加-h
参数指定主机地址,如mysql -u root -p -h 192.168.1.100
,登录成功后,可通过mysql -u 用户名 -p 数据库名
直接连接到指定数据库,或使用mysql -u 用户名 -p -e "SQL语句"
直接执行SQL命令并退出,适合脚本自动化操作。
数据库的管理包括创建、查看、删除和选择,创建数据库使用CREATE DATABASE 数据库名;
,例如CREATE DATABASE mydb;
,查看所有数据库可通过SHOW DATABASES;
,若需判断数据库是否存在后再创建,可使用CREATE DATABASE IF NOT EXISTS 数据库名;
,删除数据库则通过DROP DATABASE 数据库名;
,需谨慎操作,因为此操作会删除数据库中的所有数据,使用数据库前需通过USE 数据库名;
切换到目标数据库,例如USE mydb;
。
数据表的操作是数据库管理的核心,创建表时需定义表结构,包括字段名、数据类型和约束条件,

CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL, email VARCHAR(100) UNIQUE, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
查看当前数据库中的所有表使用SHOW TABLES;
,查看表结构可通过DESCRIBE 表名;
或SHOW COLUMNS FROM 表名;
,修改表结构(如添加字段)使用ALTER TABLE 表名 ADD 字段名 数据类型;
,删除字段则用ALTER TABLE 表名 DROP 字段名;
,删除表通过DROP TABLE 表名;
,若需判断表是否存在,可添加IF EXISTS
选项。
数据的增删改查(CRUD)是最常用的操作,插入数据使用INSERT INTO 表名 (字段1, 字段2) VALUES (值1, 值2);
,例如INSERT INTO users (username, email) VALUES ('john', 'john@example.com');
,若需插入多条数据,可在VALUES后用逗号分隔多组值,查询数据通过SELECT 字段名 FROM 表名 WHERE 条件;
,例如SELECT * FROM users WHERE id = 1;
查询id为1的用户信息,更新数据使用UPDATE 表名 SET 字段1 = 新值 WHERE 条件;
,例如UPDATE users SET email = 'new@example.com' WHERE id = 1;
,删除数据则通过DELETE FROM 表名 WHERE 条件;
,例如DELETE FROM users WHERE id = 1;
,需注意不加WHERE条件会删除所有数据。
用户权限管理是数据库安全的关键,创建用户使用CREATE USER '用户名'@'主机' IDENTIFIED BY '密码';
,例如CREATE USER 'admin'@'localhost' IDENTIFIED BY 'password123';
,授权通过GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机';
实现,例如GRANT SELECT, INSERT ON mydb.* TO 'admin'@'localhost';
表示授予用户对mydb数据库所有表的查询和插入权限,撤销权限使用REVOKE 权限 ON 数据库名.表名 FROM '用户名'@'主机';
,刷新权限使授权生效需执行FLUSH PRIVILEGES;
,查看用户权限可通过SHOW GRANTS FOR '用户名'@'主机';
。
数据备份与恢复是保障数据安全的重要手段,备份数据库使用mysqldump -u 用户名 -p 数据库名 > 备份文件.sql;
,例如mysqldump -u root -p mydb > mydb_backup.sql
,备份所有数据库则添加--all-databases
参数,恢复数据库时,需先创建空数据库,然后通过mysql -u 用户名 -p 数据库名 < 备份文件.sql
导入数据,例如mysql -u root -p mydb < mydb_backup.sql
。

MySQL日志管理有助于排查问题,错误日志默认位于/var/log/mysql/error.log
,可通过SHOW VARIABLES LIKE 'log_error';
查看路径,查询日志记录所有SQL语句,启用方式为在配置文件中添加general_log = 1
和general_log_file = /var/log/mysql/mysql.log
,慢查询日志记录执行时间超过阈值的SQL,通过slow_query_log = 1
和long_query_time = 2
(单位秒)配置。
以下是MySQL常用命令的速查表:
操作分类 | 命令示例 |
---|---|
服务管理 | systemctl start mysql ,systemctl stop mysql |
连接数据库 | mysql -u root -p ,mysql -u root -p -h 192.168.1.100 |
数据库操作 | CREATE DATABASE mydb; ,SHOW DATABASES; ,DROP DATABASE mydb; |
表操作 | CREATE TABLE users (...); ,SHOW TABLES; ,DESCRIBE users; |
数据CRUD | INSERT INTO users VALUES (...); ,SELECT * FROM users; |
用户权限 | CREATE USER 'admin'@'localhost' IDENTIFIED BY 'pass'; |
备份与恢复 | mysqldump -u root -p mydb > backup.sql ,mysql -u root -p mydb < backup.sql |
相关问答FAQs
-
Q: 忘记MySQL root密码时如何重置?
A: 重置root密码需停止MySQL服务,然后以安全模式启动并跳过权限表,具体步骤:- 停止服务:
systemctl stop mysql
- 跳过权限表启动:
mysqld_safe --skip-grant-tables &
- 无密码登录MySQL:
mysql -u root
- 执行以下命令重置密码(MySQL 5.7+):
UPDATE mysql.user SET authentication_string=PASSWORD('新密码') WHERE User='root'; FLUSH PRIVILEGES;
- 重启MySQL服务:
systemctl restart mysql
- 停止服务:
-
Q: 如何优化MySQL查询性能?
A: 优化查询性能可从以下方面入手:- 索引优化:为常用查询条件的字段添加索引,例如
CREATE INDEX idx_email ON users(email);
。 - SQL语句优化:避免使用
SELECT *
,只查询必要字段;减少子查询,使用JOIN替代;避免在WHERE子句中对字段进行函数操作。 - 配置优化:调整
innodb_buffer_pool_size
(通常设为物理内存的50%-70%)、max_connections
等参数。 - 定期维护:执行
ANALYZE TABLE 表名;
更新表统计信息,使用OPTIMIZE TABLE 表名;
清理碎片。
- 索引优化:为常用查询条件的字段添加索引,例如