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

CentOS 7 环境下 MySQL 5.7 深度指南:从安装、配置到基础 SQL 操作

1. 基础工具安装与 Yum 仓库配置

1.1 安装 Wget 并更新 Yum

首先安装 wget 工具并更新系统 Yum 缓存。

# 安装 wget
yum install -y wget# 更新 yum
yum update -y

1.2 解决 Yum 无法使用的问题(若遇到)

如果 Yum 无法正常工作(例如,因为 CentOS 7 官方停止维护),可以尝试以下任一方法修复:

方法一:更换 Yum 源

wget -O /etc/yum.repos.d/CentOS-Base.repo http://file.kangle.cccyun.cn/repo/Centos-7.repo
yum clean all
yum makecache

方法二:切换到 Vault 存档库

# 步骤1:注释掉现有的 mirrorlist 配置
sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*# 步骤2:启用 baseurl 指向 CentOS Vault
sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*# 步骤3:重建 yum 缓存
yum clean all
yum makecache

1.3 添加 MySQL Yum 仓库

下载并安装 MySQL 官方 Yum 仓库文件。

# 1. 使用 wget 下载 MySQL 8.0 的 Yum 源配置文件
# 注意:该文件包含所有 MySQL 版本的配置
wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm# 2. 添加 MySQL Yum 源
yum localinstall -y mysql80-community-release-el7-3.noarch.rpm

2. 启用 MySQL 5.7 版本

默认情况下,MySQL 8.0 仓库是启用的。我们需要安装 yum-utils 工具,然后禁用 8.0 并启用 5.7。

2.1 安装 Yum-Utils

yum install -y yum-utils

2.2 禁用 8.0 并启用 5.7

# 1. 禁用 MySQL 8.0 社区版
yum-config-manager --disable mysql80-community# 2. 启用 MySQL 5.7 社区版
yum-config-manager --enable mysql57-community# 3. 检查 MySQL 5.7 是否已启用
# 确保输出中显示 "mysql57-community/x86_64" 处于启用状态
yum repolist enabled | grep mysql

3. 安装 MySQL 服务

3.1 正式安装

执行安装命令。安装过程中如果遇到 GPG 密钥检查问题,可使用 --nogpgcheck 选项跳过。

# 导入 GPG 密钥以避免警告(可选但推荐)
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-mysql# 安装 MySQL 社区服务器
yum install -y mysql-community-server

关于 GPG 密钥错误:
如果在安装过程中遇到类似 “公钥尚未安装” 的错误,可能是 GPG 密钥过期。可以尝试导入最新的密钥,然后再次运行安装命令(使用 --nogpgcheck-y):

rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
yum install mysql-community-server --nogpgcheck

3.2 启动并检查服务状态

启动 MySQL 服务并检查其运行状态。

# 启动 MySQL 服务
systemctl start mysqld# 查看服务状态(确保显示 Active: active (running))
systemctl status mysqld

4. 首次登录与密码配置

4.1 获取临时密码(首次安装)

MySQL 5.7 首次启动会生成一个临时密码。

grep "password" /var/log/mysqld.log

mysql登录成功图

如果临时密码无法使用,或者多次尝试均失败,请使用 跳过验证 的方法。

4.2 跳过登录验证(推荐处理临时密码问题)

修改配置文件 /etc/my.cnf 跳过密码验证,以便强制修改 root 密码。

  1. 编辑配置文件:

    vim /etc/my.cnf
    
  2. [mysqld] 配置段下添加以下行,并设置默认字符集:

    [mysqld]
    # 添加以下行,跳过登陆验证
    skip-grant-tables 
    # 设置默认字符集 UTF-8
    character_set_server=utf8 
    init_connect='SET NAMES utf8' 
    
  3. 重启 MySQL 服务使配置生效:

    systemctl restart mysqld
    

4.3 登录并修改 Root 密码

  1. 免密登录 MySQL:

    mysql -u root -h localhost -P 3306
    # 如果出现需要输入密码,直接回车即可
    
  2. 在 MySQL 命令行内执行以下操作:

    • 设置新密码: MySQL 5.7 默认要求密码必须包含大小写字母、数字和特殊字符,且长度至少为 8 位。
      -- 将 'yourPassword1234!' 替换为您自己的高强度密码
      ALTER USER 'root'@'localhost' IDENTIFIED BY 'yourPassword1234!';
      
    • 刷新权限: 立即生效。
      FLUSH PRIVILEGES; 
      
    • 退出:
      exit
      
  3. 恢复配置文件: 重新编辑 /etc/my.cnf注释或删除 skip-grant-tables 这一行,然后重启 MySQL 服务。

    # 重新编辑 /etc/my.cnf 并注释或删除 skip-grant-tables
    # systemctl restart mysqld
    

5. 开启远程访问权限

使用新密码重新登录,并开启 root 用户的远程访问权限。

  1. 使用新密码登录:

    mysql -u root -p
    # 提示时输入您的新密码 'yourPassword1234!'
    
  2. 在 MySQL 命令行内执行以下命令,允许 root 用户从任何主机 (%) 访问:

    -- 注意:IDENTIFIED BY 后面的密码必须与您刚才设置的新密码一致
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'yourPassword1234!' WITH GRANT OPTION;-- 立即生效
    FLUSH PRIVILEGES;exit
    

6. 附录:MySQL 5.7 密码策略

MySQL 5.7 默认启用了密码验证插件 (validate_password)。在设置密码时,您可以通过以下命令查看当前的密码策略要求:

SHOW VARIABLES LIKE 'validate_password%';

MySQL5.7密码策略

变量名默认值含义
validate_password_length8密码的最小长度。
validate_password_policyMEDIUM密码检查的强度,MEDIUM 至少要求大小写字母、数字和特殊字符。
validate_password_mixed_case_count1密码中大小写字母的最小个数。
validate_password_number_count1密码中数字的最小个数。
validate_password_special_char_count1密码中特殊字符的最小个数。

如果需要,您可以降低策略要求,例如将策略改为 LOW

-- 降低密码安全策略(不推荐用于生产环境)
SET GLOBAL validate_password_policy=0;
-- 或
SET GLOBAL validate_password_policy=LOW; -- 刷新权限
FLUSH PRIVILEGES;

7. 数据库(Database)操作

目的SQL 语句示例
显示所有数据库SHOW DATABASES;SHOW DATABASES;
创建新数据库CREATE DATABASE 数据库名;CREATE DATABASE school_db;
删除数据库DROP DATABASE 数据库名;DROP DATABASE school_db;
切换/使用数据库USE 数据库名;USE school_db;

8. 表格(Table)操作

在操作表之前,您必须先使用 USE 数据库名; 命令切换到目标数据库。

目的SQL 语句示例
显示当前数据库所有表SHOW TABLES;SHOW TABLES;
创建新表CREATE TABLE 表名 (列名 数据类型, ...);CREATE TABLE students (id INT PRIMARY KEY, name VARCHAR(100), age INT);
查看表结构DESC 表名;DESC students;
删除表DROP TABLE 表名;DROP TABLE students;

9. 数据(Data)操作:CRUD (增、查、改、删)

9.1 增加数据 (Insert)

将新记录添加到表中。

目的SQL 语句示例
插入完整行INSERT INTO 表名 VALUES (值1, 值2, ...);INSERT INTO students VALUES (101, '张三', 20);
插入指定列INSERT INTO 表名 (列1, 列2) VALUES (值1, 值2);INSERT INTO students (id, name) VALUES (102, '李四');

9.2 查询数据 (Select)

这是最常用也是最复杂的语句,用于从数据库中检索数据。

目的SQL 语句示例
查询所有数据和所有列SELECT * FROM 表名;SELECT * FROM students;
查询指定列SELECT 列1, 列2 FROM 表名;SELECT name, age FROM students;
带条件查询SELECT * FROM 表名 WHERE 条件;SELECT * FROM students WHERE age > 20;
去重查询SELECT DISTINCT 列名 FROM 表名;` SELECT DISTINCT age FROM students;``

9.3 修改数据 (Update)

用于更新表中已有的记录。

目的SQL 语句示例
更新指定记录UPDATE 表名 SET 列1=新值 WHERE 条件;UPDATE students SET age=21 WHERE name='张三';
更新多列UPDATE 表名 SET 列1=值1, 列2=值2 WHERE 条件;UPDATE students SET name='王五', age=22 WHERE id=102;

9.4 删除数据 (Delete)

用于从表中删除记录。

目的SQL 语句示例
删除指定记录DELETE FROM 表名 WHERE 条件;DELETE FROM students WHERE name='李四';
删除所有记录DELETE FROM 表名;DELETE FROM students;

** 关键提示:** DELETEUPDATE 语句必须WHERE 子句,否则会影响表中的所有数据!


9.5示例

-- 1. 创建数据库
CREATE DATABASE test_db;-- 2. 切换到数据库
USE test_db;-- 3. 创建表
CREATE TABLE product (p_id INT PRIMARY KEY,p_name VARCHAR(50),price DECIMAL(10, 2),stock INT
);-- 4. 插入数据
INSERT INTO product VALUES (1, '笔记本电脑', 7999.00, 50);
INSERT INTO product VALUES (2, '机械键盘', 599.00, 120);
INSERT INTO product VALUES (3, '无线鼠标', 199.50, 200);-- 5. 查询所有数据
SELECT * FROM product;-- 6. 更新数据:将笔记本电脑的价格降低
UPDATE product SET price = 7500.00 WHERE p_name = '笔记本电脑';-- 7. 查询价格低于 600 的商品
SELECT p_name, price FROM product WHERE price < 600;-- 8. 删除数据:删除库存为 200 的商品
DELETE FROM product WHERE stock = 200;-- 9. 再次查询所有数据验证
SELECT * FROM product;
http://www.dtcms.com/a/453500.html

相关文章:

  • ⚡ arm 32位嵌入式 Linux 系统移植 NTP 服务
  • 抖音,小红书等自媒体平台多开账号如何操作不违规
  • [Java]PTA: jmu-Java-03面向对象基础-Object
  • 【大模型实战篇】基于xiaohongshu-mcp实现对话模式的小红书笔记操作
  • LangChain详解(一)
  • 门户网站建设需求wordpress云主机
  • 【OpenArm|Control】openarm机械臂ROS2仿真控制
  • 网站开发小组百度网页制作网站建设
  • 中小型项目组织架构和职能说明
  • wordpress发表文章更新失败网站标题优化工具
  • C++网络编程(五)socket编程---从socket()到connect()
  • 23-25年总结:23年因为大模型而转型科技,24年起发力具身,25年长沙具身开始一轮轮突飞猛进
  • AI智能体(Agent)大模型入门【7】--构建传统的RAG应用
  • 淮阴区建设局网站网站备案变更公司名称
  • Bittensor 中国巡回 Meetup|上海站
  • S11e Network 商业模型:AI × Web3 × RWA 驱动的实体经济新范式
  • 人脸跟随 ( Channel 实现(缓存5条数据 + 2度过滤 + 平滑移动))
  • 线性表——数组描述
  • 帮客户做网站 没签合同咋办重视网站阵地建设
  • Raven2
  • 面试陷阱:SQL 子查询 vs JOIN 的性能差异
  • 做蛋糕视频的网站非法网站开发
  • 设备管理平台项目部署文档(含自动化脚本)
  • 毕业设计除了网站还可以做啥外贸网站关键词
  • 前端内存泄漏:从原理到实践的全方位解析
  • app手机网站建设黄消防网站模板
  • 成品网站建设咨询怀化最新消息今天
  • 第八章 FPGA 片内 FIFO 读写测试实验
  • 2025年--Lc170--H289. 生命游戏(矩阵)--Java版
  • FC和SFC的原版说明书(扫描的PDF)