Linux下常用的MySQL 命令详解
戳底部名片,体验知识变现的乐趣
1. 安装与启动 MySQL
安装 MySQL
根据你的 Linux 发行版选择合适的包管理器来安装 MySQL:
-
基于 Debian 的系统(如 Ubuntu)
sudo apt update sudo apt install mysql-server
-
基于 Red Hat 的系统(如 CentOS 或 Fedora)
sudo yum install mysql-server # 对于 CentOS 7 及更早版本 # 或者 sudo dnf install mysql-server # 对于 Fedora 和 CentOS 8 及更高版本
启动 MySQL 服务
安装完成后,启动 MySQL 服务,并设置为开机自启:
sudo systemctl start mysql
sudo systemctl enable mysql
安全配置
首次启动后运行 mysql_secure_installation
来提高安全性:
sudo mysql_secure_installation
这将引导你完成一系列的安全选项配置,包括移除匿名用户、禁止远程 root 登录等。
2. 连接到 MySQL
连接到本地 MySQL 服务器:
mysql -u root -p
系统会提示你输入密码。成功登录后,你会进入 MySQL shell 环境。
3. 创建和管理数据库
创建数据库
在 MySQL shell 中创建一个新的数据库:
CREATE DATABASE database_name;
列出所有数据库
查看当前 MySQL 实例中的所有数据库:
SHOW DATABASES;
选择数据库
切换到特定的数据库以执行后续操作:
USE database_name;
删除数据库
删除不再需要的数据库:
DROP DATABASE database_name;
4. 创建和管理表
创建表
定义并创建一个新的表结构:
CREATE TABLE table_name (
column1 datatype constraints,
column2 datatype constraints,
...
);
例如,创建一个名为 users
的表:
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL,
password VARCHAR(255) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
查看表结构
检查现有表的列信息:
DESCRIBE table_name;
或者使用 SHOW COLUMNS FROM table_name;
修改表
添加新列或更改现有列:
ALTER TABLE table_name ADD COLUMN new_column datatype constraints;
ALTER TABLE table_name MODIFY COLUMN existing_column datatype new_constraints;
删除表
彻底删除一个表及其所有数据:
DROP TABLE table_name;
5. 插入、更新和删除数据
插入数据
向表中添加新的记录:
INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);
例如,向 users
表中插入一行:
INSERT INTO users (username, password) VALUES ('john_doe', 'hashed_password');
更新数据
修改已有的记录:
UPDATE table_name SET column1=value1, column2=value2, ... WHERE condition;
例如,更新用户名为 john_doe
的用户密码:
UPDATE users SET password='new_hashed_password' WHERE username='john_doe';
删除数据
从表中移除特定记录:
DELETE FROM table_name WHERE condition;
例如,删除用户名为 john_doe
的用户:
DELETE FROM users WHERE username='john_doe';
6. 查询数据
基本查询
从表中检索数据:
SELECT column1, column2, ... FROM table_name WHERE condition;
例如,获取所有用户的用户名和创建时间:
SELECT username, created_at FROM users;
条件查询
使用 WHERE
子句过滤结果集:
SELECT * FROM table_name WHERE column = value;
例如,查找所有姓氏为 Smith
的用户:
SELECT * FROM users WHERE last_name = 'Smith';
排序查询
按指定列对结果进行排序:
SELECT * FROM table_name ORDER BY column [ASC|DESC];
例如,按创建时间降序排列用户列表:
SELECT * FROM users ORDER BY created_at DESC;
分页查询
限制返回的结果数量,并支持分页:
SELECT * FROM table_name LIMIT offset, count;
例如,分页显示每页 10 条记录:
SELECT * FROM users LIMIT 0, 10; -- 第一页
SELECT * FROM users LIMIT 10, 10; -- 第二页
聚合函数
计算总数、平均值、最大值、最小值等统计信息:
SELECT COUNT(*), AVG(column), MAX(column), MIN(column) FROM table_name;
例如,计算用户的总数和平均年龄:
SELECT COUNT(*), AVG(age) FROM users;
7. 用户权限管理
创建用户
创建一个新的 MySQL 用户:
CREATE USER 'user_name'@'host' IDENTIFIED BY 'password';
例如,创建一个名为 app_user
的用户,允许其从任何主机连接:
CREATE USER 'app_user'@'%' IDENTIFIED BY 'secure_password';
授予权限
授予用户对特定数据库或表的操作权限:
GRANT ALL PRIVILEGES ON database_name.* TO 'user_name'@'host';
例如,授予 app_user
对 my_database
的所有权限:
GRANT ALL PRIVILEGES ON my_database.* TO 'app_user'@'%';
撤销权限
收回之前授予的权限:
REVOKE ALL PRIVILEGES ON database_name.* FROM 'user_name'@'host';
删除用户
删除不再需要的用户:
DROP USER 'user_name'@'host';
8. 备份与恢复
备份数据库
使用 mysqldump
工具导出整个数据库或单个表:
mysqldump -u user_name -p database_name > backup.sql
恢复数据库
将 SQL 文件导入现有数据库中:
mysql -u user_name -p database_name < backup.sql
或者创建一个新的数据库并将数据导入其中:
mysql -u user_name -p -e "CREATE DATABASE new_database;"
mysql -u user_name -p new_database < backup.sql
9. 其他有用命令
退出 MySQL Shell
离开 MySQL shell 并返回到终端:
EXIT;
或者使用 QUIT;
或直接按 Ctrl+D
。
显示当前使用的数据库
确认当前正在使用的数据库:
SELECT DATABASE();
显示表中的所有数据
查看表中的所有记录:
SELECT * FROM table_name;
显示 MySQL 版本
获取 MySQL 的版本信息:
SELECT VERSION();