当前位置: 首页 > news >正文

CentOS7下MySQL8.0的安装到基本操作

一、CentOS 7 安装 MySQL 8.0 全流程

1. 环境准备与依赖检查

CentOS 7 默认软件源中 MySQL 版本较低,需先配置官方 Yum 仓库:

# 安装必要依赖
sudo yum install -y wget vim net-tools# 下载并安装 MySQL 官方 Yum 仓库配置
sudo wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm# 安装仓库配置包
sudo rpm -ivh mysql80-community-release-el7-3.noarch.rpm# 刷新 Yum 缓存
sudo yum makecache

2. 安装 MySQL 8.0 服务器

bash

# 安装 MySQL 服务器(默认安装最新稳定版)
sudo yum install -y mysql-community-server# 启动 MySQL 服务
sudo systemctl start mysqld# 查看服务状态
sudo systemctl status mysqld# 设置开机自启动
sudo systemctl enable mysqld

3. 初始化配置与安全设置

MySQL 8.0 首次启动会生成临时密码,需通过以下步骤获取并修改:

bash

# 查看初始化密码(注意复制时不要包含空格)
sudo grep 'temporary password' /var/log/mysqld.log# 登录 MySQL(使用生成的临时密码)
mysql -u root -p# 修改 root 密码(需符合复杂度要求,至少8位含大小写、数字、符号)
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourStrongPassword!';# 刷新权限
FLUSH PRIVILEGES;# 退出 MySQL
EXIT;

4. 配置防火墙与远程访问

bash

# 开放 MySQL 端口(3306)
sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --reload# 允许远程登录(生产环境建议仅开放特定IP)
mysql -u root -p
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'YourStrongPassword!' REQUIRE SSL;
FLUSH PRIVILEGES;
EXIT;

二、CentOS 下 MySQL 核心操作指南

1. 数据库与表的基本操作(DDL)

(1)数据库管理

sql

-- 查看所有数据库
SHOW DATABASES;-- 创建数据库(指定UTF-8编码)
CREATE DATABASE IF NOT EXISTS mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;-- 切换数据库
USE mydb;-- 删除数据库
DROP DATABASE IF EXISTS mydb;
(2)表结构管理

sql

-- 创建用户表
CREATE TABLE IF NOT EXISTS users (id INT PRIMARY KEY AUTO_INCREMENT,username VARCHAR(50) NOT NULL UNIQUE,password VARCHAR(100) NOT NULL,email VARCHAR(100) DEFAULT '',create_time DATETIME DEFAULT CURRENT_TIMESTAMP,status TINYINT DEFAULT 1 COMMENT '1:启用 0:禁用'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;-- 查看表结构
DESC users;-- 修改表结构(添加字段)
ALTER TABLE users ADD COLUMN last_login DATETIME AFTER password;-- 修改表结构(删除字段)
ALTER TABLE users DROP COLUMN last_login;-- 重命名表
RENAME TABLE users TO user_accounts;

2. 数据操作语言(DML)实战

(1)数据插入

sql

-- 插入单条记录(指定字段)
INSERT INTO user_accounts (username, password, email) 
VALUES ('admin', 'admin123', 'admin@example.com');-- 插入单条记录(全字段)
INSERT INTO user_accounts VALUES (NULL, 'user001', 'user123', 'user@example.com', NOW(), 1);-- 批量插入
INSERT INTO user_accounts (username, password, email) VALUES
('user002', 'user123', 'user2@example.com'),
('user003', 'user123', 'user3@example.com');
(2)数据更新与删除

sql

-- 更新单条记录
UPDATE user_accounts SET password = 'newpassword' WHERE username = 'admin';-- 批量更新(将所有用户状态设为禁用)
UPDATE user_accounts SET status = 0;-- 删除单条记录
DELETE FROM user_accounts WHERE username = 'user003';-- 清空表(不可恢复,比DELETE更快)
TRUNCATE TABLE user_accounts;

三、MySQL 约束与索引优化

1. 数据完整性约束

sql

-- 创建带约束的表
CREATE TABLE products (id INT PRIMARY KEY AUTO_INCREMENT,        -- 主键约束name VARCHAR(100) NOT NULL,              -- 非空约束price DECIMAL(10,2) NOT NULL DEFAULT 0,   -- 默认约束stock INT UNSIGNED ZEROFILL,             -- 零填充约束barcode VARCHAR(30) UNIQUE,              -- 唯一约束category_id INT,-- 外键约束(关联分类表)FOREIGN KEY (category_id) REFERENCES categories(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;-- 添加外键约束(修改表)
ALTER TABLE products ADD FOREIGN KEY (category_id) REFERENCES categories(id);-- 删除约束
ALTER TABLE products DROP PRIMARY KEY;
ALTER TABLE products DROP FOREIGN KEY products_ibfk_1;

2. 索引设计与优化

sql

-- 创建普通索引
CREATE INDEX idx_product_name ON products(name);-- 创建组合索引(最左前缀原则)
CREATE INDEX idx_product_price_category ON products(price, category_id);-- 查看表索引
SHOW INDEX FROM products;-- 删除索引
DROP INDEX idx_product_name ON products;-- 查看查询执行计划(优化关键)
EXPLAIN SELECT * FROM products WHERE name LIKE '手机%' AND price > 2000;

四、高级查询与性能优化

1. 复杂查询实战

sql

-- 分页查询(第2页,每页10条)
SELECT * FROM user_accounts ORDER BY id LIMIT 10, 10;-- 聚合查询(统计各状态用户数)
SELECT status, COUNT(*) AS user_count FROM user_accounts GROUP BY status;-- 分组后筛选(只显示用户数>5的状态)
SELECT status, COUNT(*) AS user_count 
FROM user_accounts 
GROUP BY status 
HAVING user_count > 5;-- 多表JOIN查询(用户与订单关联)
SELECT u.username, o.order_id, o.order_amount
FROM user_accounts u
JOIN orders o ON u.id = o.user_id
WHERE o.order_amount > 1000;

2. 性能优化基础

sql

-- 查看慢查询日志(需先配置my.cnf)
SHOW VARIABLES LIKE 'slow_query_log';-- 设置慢查询阈值(超过1秒的查询记录)
SET GLOBAL long_query_time = 1;-- 分析SQL执行时间
SELECT SQL_NO_CACHE *, FORMAT((TO_DAYS(NOW())-TO_DAYS(create_time)),0) AS days_old 
FROM user_accounts 
WHERE status = 1 ORDER BY id DESC LIMIT 10;-- 优化表结构(碎片整理)
OPTIMIZE TABLE user_accounts;

五、CentOS 下 MySQL 管理技巧

1. 配置文件优化

CentOS 7 下 MySQL 配置文件路径:/etc/my.cnf,常见优化配置:

ini

[mysqld]
# 基础配置
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid# 性能优化(根据服务器内存调整)
innodb_buffer_pool_size = 8G       # 建议设为物理内存的50%-70%
innodb_log_file_size = 256M
max_connections = 1000
table_open_cache = 2048# 日志与安全
slow_query_log = ON
slow_query_log_file = /var/log/mysql-slow.log
long_query_time = 1
log_bin = /var/log/mysql-bin
server_id = 1

2. 备份与恢复

bash

# 全库备份(推荐使用mysqldump)
sudo mysqldump -u root -p --all-databases > all_dbs_backup.sql# 单库备份
sudo mysqldump -u root -p mydb > mydb_backup.sql# 备份指定表
sudo mysqldump -u root -p mydb users orders > mydb_tables_backup.sql# 恢复数据库(先创建空库)
mysql -u root -p mydb < mydb_backup.sql# 定时备份脚本(crontab配置)
0 2 * * * /usr/bin/mysqldump -u root -p --all-databases > /backup/mysql/all_$(date +\%Y\%m\%d).sql

3. 监控与维护

bash

# 查看MySQL状态
mysqladmin -u root -p status# 查看进程
mysqladmin -u root -p processlist# 查看数据库大小
mysql -u root -p -e "SELECT table_schema, SUM(data_length+index_length)/1024/1024 AS size_mb FROM information_schema.tables GROUP BY table_schema ORDER BY size_mb DESC;"# 重启MySQL服务(谨慎操作)
sudo systemctl restart mysqld

六、CentOS 下 MySQL 图形化工具使用

虽然 CentOS 作为服务器系统通常使用命令行管理,但通过远程连接工具可提升管理效率:

1. Navicat 远程连接配置

  1. 在 Windows/Mac 端安装 Navicat
  2. 新建连接,填写:
    • 主机:CentOS 服务器 IP
    • 端口:3306
    • 用户名:root
    • 密码:设置的密码
  3. 测试连接并保存

2. MySQL Workbench(Linux 版)

bash

# 下载Linux版Workbench(64位)
wget https://dev.mysql.com/get/Downloads/MySQLGUITools/mysql-workbench-community-8.0.28-1.el7.x86_64.rpm# 安装
sudo yum install -y mysql-workbench-community-8.0.28-1.el7.x86_64.rpm# 启动(图形界面环境)
mysql-workbench

七、总结与资源推荐

在 CentOS 7 环境中学习 MySQL,不仅能掌握数据库核心技能,更能理解 Linux 服务器环境下的系统级优化思路。MySQL 8.0 带来了 CTE、窗口函数、JSON 增强等新特性,结合 CentOS 的稳定性,足以支撑中小型企业的核心业务。

相关文章:

  • ubuntu网络连接失败 + mobaxterm拖拽文件出错等问题解决方法
  • 42 C 语言随机数生成:rand() 与 srand() 深度解析、生成指定范围随机数、应用实战
  • vue通过路由传参时布尔类型问题
  • 力扣-198.打家劫舍
  • Excel大厂自动化报表实战(互联网金融-数据分析周报制作上)
  • 2.倒排索引
  • 补充讲解perfetto/systrace的CPU Trace信息详解和抓取方法
  • 博图SCL语言教程:灵活加、减计数制作自己的增减计数器(CTUD)
  • VUE - AxiosError-ERR_BAD_REQUEST
  • ZooKeeper详解以及应用部署(AI)
  • 日语学习-日语知识点小记-构建基础-JLPT-N4阶段(34):ようですそうですばかりのに
  • C#学习第30天: 匹配模式
  • 多模态AI爬虫:文本+图像智能抓取实战
  • opencv opencv_contrib vs2020 源码安装
  • 【2025】深度学习环境搭建记录
  • Spring Boot Actuator 健康信息
  • C++学习-入门到精通【19】杂项汇总
  • 强化学习:DQN学习总结
  • 【完整源码+数据集+部署教程】太阳能板灰尘检测系统源码和数据集:改进yolo11-LVMB
  • Vue3+TypeScript实现迭代器模式
  • 怎么把自己做的网站放到百度上/网络销售的方法和技巧
  • 做网站网页的工作怎么样/在线代理浏览网址
  • 织梦网站默认密码/hs网站推广
  • 做传销网站的程序员犯法吗/网络营销案例分析ppt
  • 企业建站公司推荐/培训总结心得体会
  • 建盏公司最新消息/杭州seo靠谱