MySQL 部署安装与核心板块

MySQL 部署安装与核心板块

一、MySQL 部署安装

(一)Windows 系统安装

1. MSI 安装包方式(8.4.6 LTS 版本)
  • 下载:访问 MySQL 官网下载 Windows [x86, 64-bit] MSI Installer,点击 "No thanks, just start my download." 开始下载。

  • 安装步骤

    1. 双击 mysql-8.4.6-winx64.msi,同意许可协议,选择 "Typical" 典型安装。
    2. 完成后运行 MySQL Configurator,设置无中文字符的数据路径(默认 C:\ProgramData\MySQL\MySQL Server 8.4)。
    3. 选择 "Development Computer" 配置类型,默认端口 3306,设置 root 密码并保存。
    4. 配置 Windows 服务名(默认 MySQL84),勾选开机自启,选择标准系统账号。
    5. 授予文件权限,可选安装 Sakila/World 示例数据库,点击 "Execute" 完成初始化。
  • 服务管理

    • 图形化:运行 services.msc,找到 MySQL84 进行启动 / 停止。

      bash 复制代码
      # 启动服务
      net start MySQL84
      # 停止服务
      net stop MySQL84
  • 环境变量配置

    1. 新建 MYSQL_HOME 变量,值为 C:\Program Files\MySQL\MySQL Server 8.4
    2. 编辑 Path 变量,添加 %MYSQL_HOME%\bin(或直接添加 C:\Program Files\MySQL\MySQL Server 8.4\bin)。
    3. 测试:命令行输入 mysql -uroot -p密码,成功进入 MySQL 终端即配置完成。
2. ZIP 压缩包方式(8.4.6 版本)
  • 解压 :将 mysql-8.4.6-winx64.zip 解压至 C:\Program Files,根目录为 C:\Program Files\mysql-8.4.6-winx64

  • 环境变量 :将 C:\Program Files\mysql-8.4.6-winx64\bin 添加到 Path 变量。

  • 初始化与安装

    bash 复制代码
    # 管理员身份打开命令行,切换到 bin 目录
    cd C:\Program Files\mysql-8.4.6-winx64\bin
    # 初始化 data 目录(生成随机 root 密码,需保存)
    mysqld --initialize --console
    # 安装 MySQL 服务
    mysqld -install
    # 启动服务
    net start MySQL
  • 登录与改密

    bash 复制代码

用随机密码登录

mysql -uroot -p随机密码

修改 root 密码

ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';

新密码登录

mysql -uroot -p新密码

复制代码
### (二)Linux 系统安装(CentOS Stream 8)

- 查看可用版本

  ```bash
dnf list mysql-server*
  • 安装与启动

    bash 复制代码
    # 安装 8.0.26 版本
    dnf install -y mysql-server-8.0.26
    # 启动服务并设置开机自启
    systemctl enable mysqld --now
    # 查看 3306 端口监听状态
    ss -nlp | grep 3306
  • 登录与初始化

    bash 复制代码

8.0.x 版本默认无密码登录

mysql

设置 root 密码

ALTER USER root@'localhost' IDENTIFIED BY 'Huawei@123';

退出后用新密码登录

mysql -uroot -p'Huawei@123'

复制代码
### (三)源码安装(MySQL 5.7)

- 环境准备

  ```bash
  # 安装依赖包
  yum -y install ncurses ncurses-devel bison cmake gcc gcc-c++
  # 创建 mysql 系统用户(禁止终端登录)
  useradd -s /sbin/nologin mysql
  • 解压与配置

    bash 复制代码
    # 解压 mysql 和 boost 包
    tar zxvf mysql-5.7.17.tar.gz -C /opt/
    tar zxvf boost_1_59_0.tar.gz -C /usr/local/
    mv /usr/local/boost_1_59_0 /usr/local/boost
    # 配置安装参数
    cd /opt/mysql-5.7.17/
    cmake \
    -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
    -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
    -DSYSCONFDIR=/etc \
    -DDEFAULT_CHARSET=utf8 \
    -DWITH_BOOST=/usr/local/boost
  • 编译安装与初始化

    bash 复制代码

编译安装(耗时较长)

make && make install

配置目录权限

chown -R mysql.mysql /usr/local/mysql/

初始化数据库

cd /usr/local/mysql/

bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

启动服务并设置密码

systemctl start mysqld

mysqladmin -uroot -p password "huawei"

复制代码
## 二、MySQL 核心板块(含命令示例)

### (一)数据库基础理论

- **数据分类**:结构化数据(二维表存储)、半结构化数据(JSON/XML)、非结构化数据(音视频)。
- **核心概念**:数据库(数据仓库)、DBMS(数据库管理系统)、DBA(数据库管理员)。
- **关系型数据库理论**:E-R 模型(实体、属性、联系)、三大范式(1NF 原子性、2NF 主键关联、3NF 直接关联)。

### (二)MySQL 核心特性与组成

- **特性**:开源免费、跨平台、插件式存储引擎、单进程多线程架构。

- 主要组成

  - 服务端:`mysqld`(核心程序)、`mysqld_safe`(安全启动脚本)、`mysqld_multi`(多实例工具)。
- 客户端:`mysql`(CLI 工具)、`mysqldump`(备份工具)、`mysqladmin`(管理工具)。

### (三)MySQL 命令详解(含代码示例)

#### 1. 客户端连接命令

```bash
# 显示客户端版本
mysql -V
# 指定用户名、主机、端口登录
mysql -uroot -h127.0.0.1 -P3306 -pHuawei@123
# 免密登录(需提前设置空密码)
mysql -uroot
# 非交互式执行 SQL 脚本
mysql -e "show databases;"
# 垂直显示查询结果
mysql -e "show databases;" -E
2. 数据库管理命令
sql 复制代码
-- 查看所有数据库
SHOW DATABASES;
-- 创建数据库(指定字符集)
CREATE DATABASE testdb DEFAULT CHARACTER SET utf8mb4;
-- 查看数据库创建语句
SHOW CREATE DATABASE testdb;
-- 修改数据库字符集
ALTER DATABASE testdb CHARACTER SET latin1;
-- 删除数据库
DROP DATABASE IF EXISTS testdb;
-- 使用数据库
USE mysql;
3. 表管理命令(DDL)
sql 复制代码
-- 创建表
CREATE TABLE student (
  id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(20) NOT NULL,
  age TINYINT UNSIGNED,
  gender ENUM('M','F') DEFAULT 'M'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- 查看表结构
DESC student;
-- 查看表创建语句
SHOW CREATE TABLE student;
-- 修改表名
ALTER TABLE student RENAME TO stu;
-- 添加字段
ALTER TABLE stu ADD phone VARCHAR(11) AFTER name;
-- 修改字段类型
ALTER TABLE stu MODIFY phone INT;
-- 删除字段
ALTER TABLE stu DROP COLUMN phone;
-- 删除表
DROP TABLE IF EXISTS stu;
4. 数据操作命令(DML)
sql 复制代码
-- 插入数据(单条/多条)
INSERT INTO student (name, age) VALUES ('xiaoming', 20);
INSERT INTO student (name, age, gender) VALUES ('xiaohong', 18, 'F'), ('xiaoli', 19, 'M');

-- 更新数据(带条件)
UPDATE student SET age=21 WHERE name='xiaoming';
-- 禁止无条件更新(避免误操作)
SET sql_safe_updates = 1;

-- 删除数据(带条件)
DELETE FROM student WHERE id=3;
-- 清空表(DDL 语句,效率更高)
TRUNCATE TABLE student;
5. 数据查询命令(DQL)
sql 复制代码
-- 全表查询
SELECT * FROM student;
-- 指定字段查询并起别名
SELECT id AS 学号, name AS 姓名 FROM student;
-- 条件查询(多条件、模糊查询)
SELECT * FROM student WHERE age > 18 AND gender='M';
SELECT * FROM student WHERE name LIKE 'xiao%'; -- 以 xiao 开头
SELECT * FROM student WHERE name IS NULL; -- 查询空值

-- 排序与分页
SELECT * FROM student ORDER BY age DESC; -- 降序排序
SELECT * FROM student LIMIT 0, 3; -- 分页(跳过 0 条,显示 3 条)

-- 分组与聚合
SELECT gender, COUNT(*) AS 人数 FROM student GROUP BY gender;
SELECT gender, AVG(age) AS 平均年龄 FROM student GROUP BY gender HAVING 平均年龄 > 20;
6. 用户与权限管理命令(DCL)
sql 复制代码
-- 创建用户(允许 192.168.108 网段登录)
CREATE USER 'test'@'192.168.108.%' IDENTIFIED BY '123456';

-- 授权(查询 testdb.student 表)
GRANT SELECT ON testdb.student TO 'test'@'192.168.108.%';
-- 授权所有权限(谨慎使用)
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

-- 查看用户权限
SHOW GRANTS FOR 'test'@'192.168.108.%';
-- 撤销权限
REVOKE SELECT ON testdb.student FROM 'test'@'192.168.108.%';
-- 删除用户
DROP USER 'test'@'192.168.108.%';

-- 修改 root 密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpassword';
7. 备份与恢复命令
bash 复制代码
# 逻辑备份(备份 testdb 数据库)
mysqldump -uroot -p testdb > /backup/testdb.sql
# 备份所有数据库
mysqldump -uroot -p --all-databases > /backup/all.sql

# 恢复数据
mysql -uroot -p testdb < /backup/testdb.sql
# 登录后恢复
mysql -uroot -p
USE testdb;
SOURCE /backup/testdb.sql;

(四)高级应用板块

1. 主从复制
  • 主库配置

    bash 复制代码
    # 修改 my.cnf
    vim /etc/my.cnf
    [mysqld]
    server-id = 1
    log-bin = master-bin
    log-slave-updates = true
    # 重启服务
    systemctl restart mysqld
    # 授权复制用户
    mysql -uroot -p
    GRANT REPLICATION SLAVE ON *.* TO 'myslave'@'192.168.108.%' IDENTIFIED BY '123456';
    SHOW MASTER STATUS; # 记录 File 和 Position 值
  • 从库配置

    bash 复制代码
    # 修改 my.cnf
    vim /etc/my.cnf
    [mysqld]
    server-id = 2
    relay-log = relay-log-bin
    # 重启服务
    systemctl restart mysqld
    # 配置主从同步
    mysql -uroot -p
    CHANGE MASTER TO 
    MASTER_HOST='192.168.108.101',
    MASTER_USER='myslave',
    MASTER_PASSWORD='123456',
    MASTER_LOG_FILE='master-bin.000001',
    MASTER_LOG_POS=604;
    START SLAVE;
    SHOW SLAVE STATUS\G; # 查看 Slave_IO_Running 和 Slave_SQL_Running 是否为 Yes
2. 读写分离(基于 Amoeba)
  • 核心逻辑:主库处理写操作,从库处理读操作,通过 Amoeba 代理分发请求。
  • 关键配置:在 Amoeba 中指定主库(写池)和从库(读池),客户端连接 Amoeba 进行操作。
3. MHA 高可用
  • 作用:主库故障时自动切换到备选从库,保证服务连续性。
  • 核心组件:MHA Manager(管理节点)、MHA Node(数据节点)。
  • 关键操作:配置 SSH 无密码认证、主从复制、MHA 配置文件,启动 Manager 监控。

三、总结

MySQL 作为主流关系型数据库,部署方式支持 Windows/Linux 系统,提供 MSI、ZIP、源码等多种安装方案,满足不同场景需求。核心板块涵盖基础理论、命令操作、高级应用三大部分:基础理论为使用提供底层逻辑支撑;命令操作覆盖数据库、表、数据、用户权限等全场景,是日常使用的核心;高级应用(主从复制、读写分离、MHA)则解决高并发、高可用需求,适用于生产环境。

相关推荐
宠..2 小时前
QButtonGroup
java·服务器·开发语言·前端·数据库·c++·qt
熊文豪2 小时前
时序数据库选型指南:如何为大数据场景选择合适的时序数据库
大数据·数据库·时序数据库·iotdb
Wang's Blog2 小时前
Kafka: Connect 实战之MySQL 数据双向同步集成方案
mysql·kafka
大数据追光猿2 小时前
【大数据生产问题】Flink CDC 同步 MySQL 到 StarRocks 时因字段新增导致任务失败?
大数据·数据库·mysql·flink
大布布将军2 小时前
⚡️ 性能加速器:利用 Redis 实现接口高性能缓存
前端·数据库·经验分享·redis·程序人生·缓存·node.js
青石路2 小时前
用了MySQL的INSERT ON DUPLICATE KEY UPDATE,怎么还报唯一索引冲突错误
后端·sql·mysql
Ahuuua2 小时前
Spring 事务传播行为详解
数据库·sql·spring
2345VOR2 小时前
【ESP32C3接入2025年冬火山大模型教程】
开发语言·数据库·豆包·火山