杰瑞科技汇

Linux MySQL教程怎么学?入门到实战怎么掌握?

Linux MySQL 完整教程

本教程将引导您在 Linux 系统上完成 MySQL 的安装、配置、使用和管理,我们将以目前最流行的 Ubuntu/DebianCentOS/RHEL 两大发行版为例进行讲解。


第一部分:安装 MySQL

1 在 Ubuntu/Debian 系统上安装

Ubuntu 和 Debian 使用 apt 包管理器。

步骤 1:更新软件包列表

sudo apt update

步骤 2:安装 MySQL 服务器

sudo apt install mysql-server

安装过程中,系统会自动启动 MySQL 服务。

步骤 3:安全配置(非常重要!) 安装完成后,运行安全脚本会帮助你:

  • 设置 root 密码
  • 移除匿名用户
  • 禁止 root 远程登录
  • 移除测试数据库
  • 重新加载权限表,使更改生效
sudo mysql_secure_installation

按照屏幕提示一步步操作即可,对于新安装,建议对 VALIDATE PASSWORD COMPONENT 选择 Y (是) 并设置一个强密码策略。


2 在 CentOS/RHEL 系统上安装

CentOS 和 RHEL 使用 yumdnf 包管理器(较新版本使用 dnf)。

步骤 1:下载并添加 MySQL 官方 Yum 仓库 MySQL 官方提供了 Yum 仓库,可以确保安装到最新最稳定的版本。

# 下载并添加 MySQL 官方仓库的 RPM 包
sudo yum localinstall https://dev.mysql.com/get/mysql80-community-release-el8-7.noarch.rpm -y
# 验证仓库是否已成功添加
sudo yum repolist enabled | grep ".*" | grep ".*.*"

步骤 2:安装 MySQL 服务器

sudo yum install mysql-community-server -y

步骤 3:启动并启用 MySQL 服务

# 启动 MySQL
sudo systemctl start mysqld
# 设置开机自启
sudo systemctl enable mysqld

步骤 4:安全配置 与 Ubuntu 类似,CentOS/RHEL 也提供安全配置脚本。 首次启动后,会在日志文件中生成一个临时 root 密码。

# 查看临时密码
sudo grep 'temporary password' /var/log/mysqld.log

然后运行安全配置脚本:

sudo mysql_secure_installation

输入你刚刚查到的临时密码,然后按照提示设置新密码、移除匿名用户等。


第二部分:连接与基本操作

1 连接到 MySQL 服务器

使用 mysql 客户端(推荐) 在终端中输入以下命令,如果安装在本机且用户是 root,可以直接登录。

# 本机登录,-p 表示需要密码
mysql -u root -p

然后输入你设置的 root 密码。

使用 MySQL Shell(更现代) MySQL Shell 是一个功能更强大的交互式客户端。

# 安装 MySQL Shell (Ubuntu/Debian)
sudo apt install mysql-shell
# 安装 MySQL Shell (CentOS/RHEL)
sudo yum install mysql-shell
# 连接
mysqlsh -u root -p

2 基本 SQL 命令

连接成功后,你会看到 mysql>JS> 提示符。

显示所有数据库

SHOW DATABASES;

创建一个新数据库

CREATE DATABASE myapp_db;

选择要操作的数据库

USE myapp_db;

创建一个新表

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100) NOT NULL UNIQUE,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

向表中插入数据

INSERT INTO users (username, email) VALUES ('alice', 'alice@example.com');
INSERT INTO users (username, email) VALUES ('bob', 'bob@example.com');

查询数据

SELECT * FROM users;
+----+----------+------------------+---------------------+
| id | username | email            | created_at          |
+----+----------+------------------+---------------------+
|  1 | alice    | alice@example.com | 2025-10-27 10:30:00 |
|  2 | bob      | bob@example.com  | 2025-10-27 10:31:00 |
+----+----------+------------------+---------------------+

更新数据

UPDATE users SET email = 'alice.new@example.com' WHERE username = 'alice';

删除数据

DELETE FROM users WHERE username = 'bob';

退出 MySQL

EXIT;

第三部分:用户与权限管理

安全的关键在于为不同的应用分配不同的用户和权限。

1 创建新用户

在 MySQL 中,最好为每个应用创建一个独立的用户,而不是直接使用 root

-- 连接到 MySQL
mysql -u root -p
-- 创建一个用户 'app_user',密码是 'StrongPassword123!',该用户只能从本机连接
CREATE USER 'app_user'@'localhost' IDENTIFIED BY 'StrongPassword123!';

2 授予权限

权限授予遵循“最小权限原则”。

-- 授予 'app_user' 对 'myapp_db' 数据库的所有权限
GRANT ALL PRIVILEGES ON myapp_db.* TO 'app_user'@'localhost';
-- 授予 'app_user' 对所有数据库的特定权限(例如只读)
GRANT SELECT ON *.* TO 'app_user'@'localhost';
-- 使权限更改立即生效
FLUSH PRIVILEGES;

常用权限说明:

  • ALL PRIVILEGES: 所有权限。
  • SELECT: 只读权限。
  • INSERT: 插入权限。
  • UPDATE: 更新权限。
  • DELETE: 删除权限。
  • CREATE: 创建数据库、表、索引的权限。
  • DROP: 删除数据库、表的权限。

3 撤销权限

REVOKE ALL PRIVILEGES ON myapp_db.* FROM 'app_user'@'localhost';
FLUSH PRIVILEGES;

第四部分:配置与优化

MySQL 的主要配置文件是 my.cnf(或 my.ini)。

1 找到配置文件

  • Ubuntu/Debian: /etc/mysql/mysql.conf.d/mysqld.cnf
  • CentOS/RHEL: /etc/my.cnf/etc/my.cnf.d/mysql-server.cnf

重要: 修改配置文件前,务必先备份

sudo cp /etc/mysql/mysql.conf.d/mysqld.cnf /etc/mysql/mysql.conf.d/mysqld.cnf.bak

2 常用配置项

编辑配置文件(使用 sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf),找到 [mysqld] 部分。

  • 修改字符集(防止中文乱码)

    [mysqld]
    character-set-server = utf8mb4
    collation-server = utf8mb4_unicode_ci
    [client]
    default-character-set = utf8mb4
  • 调整内存缓冲区大小(根据服务器内存调整)

    [mysqld]
    # InnoDB 缓冲池大小,建议设置为系统内存的 50%-70%
    innodb_buffer_pool_size = 1G
    # 查询缓存(MySQL 8.0 已移除,旧版本可用)
    query_cache_size = 64M

3 应用配置更改

修改配置文件后,需要重启 MySQL 服务使更改生效。

# Ubuntu/Debian
sudo systemctl restart mysql
# CentOS/RHEL
sudo systemctl restart mysqld

第五部分:备份与恢复

1 使用 mysqldump 备份数据库

mysqldump 是最常用的逻辑备份工具。

备份数据库

# 备份单个数据库
mysqldump -u root -p myapp_db > myapp_db_backup.sql
# 备份所有数据库
mysqldump -u root -p --all-databases > all_databases_backup.sql
# 备份并压缩(推荐)
mysqldump -u root -p myapp_db | gzip > myapp_db_backup.sql.gz

恢复数据库

# 首先创建一个空数据库(如果不存在)
mysql -u root -p -e "CREATE DATABASE myapp_db_restore;"
# 从备份文件恢复
mysql -u root -p myapp_db_restore < myapp_db_backup.sql

2 使用二进制日志进行时间点恢复

这是更高级的恢复方式,需要先在配置文件中启用二进制日志。

[mysqld]
log-bin=mysql-bin
binlog_format=ROW

启用后,mysqldump 备份会包含二进制日志的位置信息,结合 mysqlbinlog 工具可以实现精确到秒的恢复。


第六部分:常见问题排查

1 如何查看 MySQL 是否正在运行?

# Ubuntu/Debian
sudo systemctl status mysql
# CentOS/RHEL
sudo systemctl status mysqld

2 如何查看 MySQL 错误日志?

错误日志是排查问题的关键。

  • Ubuntu/Debian: /var/log/mysql/error.log
  • CentOS/RHEL: /var/log/mysqld.log
# 实时查看错误日志
sudo tail -f /var/log/mysql/error.log

3 如何远程连接 MySQL 被拒绝?

  1. 检查防火墙:确保 3306 端口已开放。

    # Ubuntu/Debian (使用 UFW)
    sudo ufw allow 3306/tcp
    # CentOS/RHEL (使用 firewalld)
    sudo firewall-cmd --permanent --add-port=3306/tcp
    sudo firewall-cmd --reload
  2. 检查用户权限:确认用户有从远程主机连接的权限。

    -- 允许 'app_user' 从任何 IP 连接
    CREATE USER 'app_user'@'%' IDENTIFIED BY 'password';
    GRANT ALL PRIVILEGES ON myapp_db.* TO 'app_user'@'%';
    FLUSH PRIVILEGES;

    注意: 代表任何主机,在生产环境中存在安全风险,应指定具体的 IP 地址。


总结与进阶

本教程涵盖了 Linux 下 MySQL 的核心操作,要成为一名 MySQL 高手,建议您进一步学习:

  • 索引优化:学习如何创建和使用索引来提升查询速度。
  • 事务与锁:理解 ACID 特性、事务隔离级别和锁机制。
  • 主从复制:实现 MySQL 的高可用和读写分离。
  • 性能分析:使用 EXPLAIN 命令分析查询计划,找出性能瓶颈。
  • 分库分表:当单库数据量过大时,考虑进行水平或垂直拆分。

希望这份教程对您有帮助!祝您使用愉快!

分享:
扫描分享到社交APP
上一篇
下一篇