在Linux系统中,MySQL是一款广泛使用的关系型数据库管理系统,通过命令行运行MySQL命令是数据库管理员和开发者的基本技能,本文将详细介绍在Linux环境下如何使用命令行运行MySQL,包括安装、连接、基本操作、高级命令及常见问题处理等内容。

确保系统已安装MySQL,在基于Debian或Ubuntu的系统上,可以使用sudo apt-get update
更新包列表,然后通过sudo apt-get install mysql-server
安装MySQL服务器,对于CentOS或RHEL系统,则使用sudo yum install mysql-server
,安装完成后,使用sudo systemctl start mysql
启动服务,并通过sudo systemctl enable mysql
设置开机自启,为了安全起见,建议运行sudo mysql_secure_installation
脚本,设置root密码、移除匿名用户、禁止root远程登录等。
连接到MySQL服务器是使用命令的第一步,在终端中输入mysql -u root -p
,然后输入密码即可进入MySQL命令行界面,如果连接远程服务器,可使用mysql -h [主机名] -u [用户名] -p
,例如mysql -h 192.168.1.100 -u admin -p
,连接成功后,会显示mysql>
提示符,等待输入SQL命令。
在MySQL命令行中,基本的数据库操作包括创建、删除和选择数据库,使用CREATE DATABASE [数据库名];
创建新数据库,例如CREATE DATABASE mydb;
,删除数据库使用DROP DATABASE [数据库名];
,但需注意此操作不可逆,通过USE [数据库名];
切换到指定数据库,后续操作将在此数据库下执行,输入USE mydb;
后,创建的表将属于mydb
。
数据表的操作是MySQL的核心功能之一,创建表时需定义列名、数据类型和约束,创建一个用户表users
,可执行以下命令:

CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL, email VARCHAR(100) UNIQUE, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
此命令创建了一个包含id、username、email和created_at四列的表,其中id为主键且自增,email列需唯一,插入数据使用INSERT INTO [表名] (列1, 列2) VALUES (值1, 值2);
,例如INSERT INTO users (username, email) VALUES ('john', 'john@example.com');
,查询数据使用SELECT * FROM [表名];
获取所有列,或SELECT 列1, 列2 FROM [表名];
指定列,更新数据通过UPDATE [表名] SET 列1=新值 WHERE 条件;
,例如UPDATE users SET email='new@example.com' WHERE id=1;
,删除数据使用DELETE FROM [表名] WHERE 条件;
,需谨慎使用,避免无条件删除导致数据丢失。
MySQL还支持高级命令和功能,备份和恢复数据库是常见需求,使用mysqldump
工具可轻松实现,备份数据库执行mysqldump -u [用户名] -p [数据库名] > backup.sql
,例如mysqldump -u root -p mydb > mydb_backup.sql
,恢复数据库则使用mysql -u [用户名] -p [数据库名] < backup.sql
,权限管理方面,使用GRANT
命令分配用户权限,例如GRANT SELECT, INSERT ON mydb.* TO 'newuser'@'localhost';
允许用户在本地对mydb
库进行查询和插入操作,撤销权限使用REVOKE
命令,例如REVOKE DELETE ON mydb.* FROM 'newuser'@'localhost';
。
在Linux命令行中,还可以结合管道和重定向操作MySQL输出,将查询结果导出到CSV文件:mysql -u root -p mydb -e "SELECT * FROM users;" > users.csv
,或使用管道将结果通过awk
处理:mysql -u root -p mydb -e "SELECT * FROM users;" | awk -F '\t' '{print $1}'
,使用source
命令可执行SQL脚本文件,例如source /path/to/script.sql
。
MySQL命令行还提供了一些实用功能,使用\G
代替分号作为语句结束符,可使查询结果以垂直格式显示,便于阅读长行数据,通过mysql -u root -p -e "SELECT * FROM mydb.users;"
可直接在终端执行查询并退出,适合脚本自动化,查看当前数据库状态可使用SHOW DATABASES;
、SHOW TABLES;
或DESCRIBE [表名];
。
以下是MySQL常用命令的速查表:
功能 | 命令示例 |
---|---|
连接MySQL | mysql -u root -p |
创建数据库 | CREATE DATABASE mydb; |
切换数据库 | USE mydb; |
创建表 | CREATE TABLE users (id INT, name VARCHAR(50)); |
插入数据 | INSERT INTO users VALUES (1, 'Alice'); |
查询数据 | SELECT * FROM users; |
更新数据 | UPDATE users SET name='Bob' WHERE id=1; |
删除数据 | DELETE FROM users WHERE id=1; |
备份数据库 | mysqldump -u root -p mydb > backup.sql |
恢复数据库 | mysql -u root -p mydb < backup.sql |
在使用MySQL命令时,可能会遇到一些常见问题,忘记root密码时,可通过跳过权限表启动MySQL来重置密码:首先停止服务sudo systemctl stop mysql
,然后以安全模式启动sudo mysqld_safe --skip-grant-tables &
,无密码登录后执行UPDATE mysql.user SET authentication_string=PASSWORD('newpassword') WHERE User='root';
,最后重启服务,连接被拒绝可能是因为服务未启动或防火墙阻止,需检查sudo systemctl status mysql
及防火墙规则。
相关问答FAQs:
-
问:如何在Linux下查看MySQL的版本信息?
答:可以通过以下几种方式查看MySQL版本:- 在MySQL命令行中执行
SELECT VERSION();
- 在终端中使用
mysql --version
或mysqladmin --version
- 登录MySQL后执行
STATUS;
命令,显示详细信息。
- 在MySQL命令行中执行
-
问:MySQL命令行中如何执行多行SQL语句?
答:在MySQL命令行中,默认以分号作为语句结束符,输入多行语句时,只需在最后一行输入分号即可执行。INSERT INTO users (username, email) VALUES ('user1', 'user1@example.com'), ('user2', 'user2@example.com');
如果输入错误导致语句未完成,可通过
c
命令取消当前输入,例如出现'>
提示符时输入c
返回mysql>
。