在Linux系统中执行MySQL命令是数据库管理和开发中的常见操作,涵盖了从连接数据库、执行查询到管理用户等多个方面,以下是详细的操作指南和注意事项。

连接MySQL数据库
在Linux终端执行MySQL命令前,需先建立与MySQL服务器的连接,基本语法为:
mysql -h主机名 -u用户名 -p密码
参数说明:
-h:指定MySQL服务器的主机名或IP地址,本地连接可省略或使用localhost。-u:指定连接的用户名,如root。-p:提示输入密码,若直接在命令中写密码(如-p123456),可能存在安全风险,建议不写密码,在交互界面输入。
示例(本地连接):
mysql -u root -p
输入正确密码后,将进入MySQL命令行界面,提示符为mysql>。

执行SQL查询
连接成功后,可直接输入SQL语句执行查询,需注意SQL语句以分号()
查看数据库列表
SHOW DATABASES;
执行结果将返回MySQL服务器中所有数据库的名称。
选择数据库
USE 数据库名;
选择test_db数据库:
USE test_db;
若切换成功,会提示Database changed。

查看表结构
DESCRIBE 表名;
或简写为:
DESC 表名;
查询表数据
SELECT * FROM 表名 WHERE 条件;
查询users表中年龄大于20的用户:
SELECT * FROM users WHERE age > 20;
使用脚本文件批量执行SQL
若需执行多条SQL语句或复杂脚本,可将SQL语句保存为.sql文件(如backup.sql),通过以下方式执行:
登录后执行
mysql -u root -p < backup.sql
系统会提示输入密码,随后执行文件中的所有SQL语句。
不登录直接执行
mysql -u root -p密码 -h localhost 数据库名 < backup.sql
注意:直接在命令中写密码可能被历史命令记录,建议使用配置文件或环境变量管理密码。
常用管理命令
创建数据库
CREATE DATABASE 数据库名 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
创建用户并授权
CREATE USER '用户名'@'主机' IDENTIFIED BY '密码'; GRANT ALL PRIVILEGES ON 数据库名.* TO '用户名'@'主机'; FLUSH PRIVILEGES;
创建用户dev_user并授予test_db数据库的所有权限:
CREATE USER 'dev_user'@'localhost' IDENTIFIED BY 'DevPass123!'; GRANT ALL PRIVILEGES ON test_db.* TO 'dev_user'@'localhost'; FLUSH PRIVILEGES;
备份数据库
使用mysqldump工具:
mysqldump -u 用户名 -p 数据库名 > 备份文件.sql
备份test_db数据库:
mysqldump -u root -p test_db > test_db_backup.sql
恢复数据库
mysql -u 用户名 -p 数据库名 < 备份文件.sql
常见问题与解决
忘记MySQL root密码
解决步骤:
- 停止MySQL服务:
sudo systemctl stop mysql
- 跳过权限表启动:
sudo mysqld_safe --skip-grant-tables &
- 无密码登录并修改密码:
mysql -u root UPDATE mysql.user SET authentication_string=PASSWORD('新密码') WHERE User='root'; FLUSH PRIVILEGES; - 重启MySQL服务:
sudo systemctl restart mysql
解决中文乱码问题
若查询结果出现中文乱码,需确保:
- 数据库、表、字段字符集为
utf8mb4。 - Linux终端字符集与MySQL一致,可通过以下命令检查:
echo $LANG
若为
en_US.UTF-8,则支持UTF-8;若需修改,可执行:export LANG=zh_CN.UTF-8
相关问答FAQs
Q1: 如何在Linux下查看MySQL的版本信息?
A1: 可通过以下两种方式查看:
- 登录MySQL后执行:
SELECT VERSION();
- 或在终端直接执行:
mysql -V
Q2: 如何定期自动备份MySQL数据库?
A2: 可使用crontab设置定时任务,每天凌晨2点备份test_db数据库:
- 编辑crontab:
crontab -e
- 添加以下内容:
0 2 * * * /usr/bin/mysqldump -u root -p'密码' test_db | gzip > /backup/test_db_$(date +\%Y\%m\%d).sql.gz
注意:密码可能被明文记录,建议使用MySQL配置文件(如
.my.cnf)存储凭据以提高安全性。
