MySQL 部署安装与核心板块
一、MySQL 部署安装
(一)Windows 系统安装
1. MSI 安装包方式(8.4.6 LTS 版本)
-
下载:访问 MySQL 官网下载 Windows [x86, 64-bit] MSI Installer,点击 "No thanks, just start my download." 开始下载。
-
安装步骤
- 双击
mysql-8.4.6-winx64.msi,同意许可协议,选择 "Typical" 典型安装。 - 完成后运行 MySQL Configurator,设置无中文字符的数据路径(默认
C:\ProgramData\MySQL\MySQL Server 8.4)。 - 选择 "Development Computer" 配置类型,默认端口 3306,设置 root 密码并保存。
- 配置 Windows 服务名(默认 MySQL84),勾选开机自启,选择标准系统账号。
- 授予文件权限,可选安装 Sakila/World 示例数据库,点击 "Execute" 完成初始化。
- 双击
-
服务管理
-
图形化:运行
services.msc,找到 MySQL84 进行启动 / 停止。bash# 启动服务 net start MySQL84 # 停止服务 net stop MySQL84
-
-
环境变量配置
- 新建
MYSQL_HOME变量,值为C:\Program Files\MySQL\MySQL Server 8.4。 - 编辑 Path 变量,添加
%MYSQL_HOME%\bin(或直接添加C:\Program Files\MySQL\MySQL Server 8.4\bin)。 - 测试:命令行输入
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)则解决高并发、高可用需求,适用于生产环境。