在Linux系统中执行MySQL命令是数据库管理和开发中的常见操作,涵盖了从基本连接、数据查询到高级权限管理等多个场景,以下是详细的操作指南和注意事项,帮助用户高效、安全地完成MySQL相关任务。

MySQL命令行连接基础
在Linux终端执行MySQL命令前,需确保系统已安装MySQL客户端,通过mysql --version可检查安装情况,连接MySQL服务器的基本语法为:
mysql -h主机名 -u用户名 -p密码
参数说明:
-h:指定MySQL服务器地址,本地连接可省略或使用localhost-u:登录用户名,默认为root-p:提示输入密码,更安全的方式是直接在命令后不加空格输入密码(如-p123456),但可能被历史命令记录
连接本地MySQL的常用命令为:
mysql -u root -p
执行后会提示输入密码,输入正确后即可进入MySQL命令行界面。

常用MySQL操作命令
进入MySQL后,可通过以下命令进行数据库操作:
数据库管理
- 查看所有数据库:
SHOW DATABASES;
- 创建数据库:
CREATE DATABASE 数据库名 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- 切换数据库:
USE 数据库名;
- 删除数据库:
DROP DATABASE 数据库名;
表格操作
- 查看当前数据库的所有表:
SHOW TABLES;
- 创建表(以用户表为例):
CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL, email VARCHAR(100) UNIQUE, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); - 查看表结构:
DESCRIBE users;
- 删除表:
DROP TABLE users;
数据操作(CRUD)
- 插入数据:
INSERT INTO users (username, email) VALUES ('user1', 'user1@example.com'); - 查询数据:
SELECT * FROM users WHERE username = 'user1';
- 更新数据:
UPDATE users SET email = 'new_email@example.com' WHERE id = 1;
- 删除数据:
DELETE FROM users WHERE id = 1;
高级操作技巧
执行SQL脚本文件
若需批量执行SQL脚本(如backup.sql),可通过以下方式:
mysql -u root -p 数据库名 < backup.sql
或进入MySQL后使用:
SOURCE /path/to/backup.sql;
导出数据库
使用mysqldump工具可导出数据库结构或数据:

# 导出整个数据库(结构和数据) mysqldump -u root -p 数据库名 > backup.sql # 仅导出结构 mysqldump -u root -p -d 数据库名 > structure.sql # 导出特定表 mysqldump -u root -p 数据库名 表名1 表名2 > tables_backup.sql
用户与权限管理
- 创建用户并授权:
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON 数据库名.* TO 'newuser'@'localhost'; FLUSH PRIVILEGES;
- 查看用户权限:
SHOW GRANTS FOR 'newuser'@'localhost';
- 撤销权限:
REVOKE ALL PRIVILEGES ON 数据库名.* FROM 'newuser'@'localhost';
常见问题与解决方案
-
连接被拒绝错误(Access denied)
- 检查用户名、密码是否正确
- 确认用户主机权限(如
'user'@'%'允许所有主机,'user'@'localhost'仅允许本地) - 检查MySQL服务是否运行(
systemctl status mysql)
-
中文乱码问题
- 创建数据库时指定字符集(如
utf8mb4) - 检查MySQL配置文件
my.cnf中的字符集设置:[client] default-character-set=utf8mb4 [mysql] default-character-set=utf8mb4 [mysqld] character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci
- 创建数据库时指定字符集(如
相关操作速查表
| 操作类型 | 命令示例 |
|---|---|
| 连接MySQL | mysql -u root -p |
| 查看数据库 | SHOW DATABASES; |
| 创建数据库 | CREATE DATABASE db_name CHARACTER SET utf8mb4; |
| 选择数据库 | USE db_name; |
| 创建表 | CREATE TABLE table_name (id INT PRIMARY KEY, name VARCHAR(50)); |
| 插入数据 | INSERT INTO table_name (name) VALUES ('value'); |
| 查询数据 | SELECT * FROM table_name WHERE condition; |
| 更新数据 | UPDATE table_name SET column='value' WHERE id=1; |
| 删除数据 | DELETE FROM table_name WHERE id=1; |
| 导出数据库 | mysqldump -u root -p db_name > backup.sql |
| 执行SQL脚本 | mysql -u root -p db_name < script.sql |
FAQs
问题1:如何在Linux下不输入密码直接连接MySQL?
解答:可通过配置MySQL用户配置文件(~/.my.cnf)实现,添加以下内容:
[client] user = root password = your_password
并设置文件权限为600(chmod 600 ~/.my.cnf),这样执行mysql命令时会自动读取配置文件中的凭据。
问题2:如何查看MySQL的慢查询日志?
解答:首先确保MySQL配置中开启了慢查询日志(在my.cnf中添加):
slow_query_log = 1 slow_query_log_file = /var/log/mysql/mysql-slow.log long_query_time = 2
然后使用以下命令查看日志内容:
tail -f /var/log/mysql/mysql-slow.log
或通过mysqldumpslow工具分析慢查询:
mysqldumpslow -s t /var/log/mysql/mysql-slow.log
参数-s t表示按查询时间排序。
