怎样做_网站做seo,促销方法100种,免费代运营,苏州做网站知识的分享一、CentOS 7 安装 MySQL 8.0 全流程
1. 环境准备与依赖检查
CentOS 7 默认软件源中 MySQL 版本较低#xff0c;需先配置官方 Yum 仓库#xff1a; # 安装必要依赖
sudo yum install -y wget vim net-tools# 下载并安装 MySQL 官方 Yum 仓库配置
sudo wget https://dev.mys…一、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 makecache2. 安装 MySQL 8.0 服务器
bash
# 安装 MySQL 服务器默认安装最新稳定版
sudo yum install -y mysql-community-server# 启动 MySQL 服务
sudo systemctl start mysqld# 查看服务状态
sudo systemctl status mysqld# 设置开机自启动
sudo systemctl enable mysqld3. 初始化配置与安全设置
MySQL 8.0 首次启动会生成临时密码需通过以下步骤获取并修改 bash
# 查看初始化密码注意复制时不要包含空格
sudo grep temporary password /var/log/mysqld.log# 登录 MySQL使用生成的临时密码
mysql -u root -p# 修改 root 密码需符合复杂度要求至少8位含大小写、数字、符号
ALTER USER rootlocalhost IDENTIFIED WITH mysql_native_password BY YourStrongPassword!;# 刷新权限
FLUSH PRIVILEGES;# 退出 MySQL
EXIT;4. 配置防火墙与远程访问
bash
# 开放 MySQL 端口3306
sudo firewall-cmd --permanent --add-port3306/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:禁用
) ENGINEInnoDB DEFAULT CHARSETutf8mb4;-- 查看表结构
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, adminexample.com);-- 插入单条记录全字段
INSERT INTO user_accounts VALUES (NULL, user001, user123, userexample.com, NOW(), 1);-- 批量插入
INSERT INTO user_accounts (username, password, email) VALUES
(user002, user123, user2example.com),
(user003, user123, user3example.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)
) ENGINEInnoDB DEFAULT CHARSETutf8mb4;-- 添加外键约束修改表
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 12. 备份与恢复
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).sql3. 监控与维护
bash
# 查看MySQL状态
mysqladmin -u root -p status# 查看进程
mysqladmin -u root -p processlist# 查看数据库大小
mysql -u root -p -e SELECT table_schema, SUM(data_lengthindex_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 远程连接配置
在 Windows/Mac 端安装 Navicat新建连接填写 主机CentOS 服务器 IP端口3306用户名root密码设置的密码 测试连接并保存
2. MySQL WorkbenchLinux 版
bash
# 下载Linux版Workbench64位
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 的稳定性足以支撑中小型企业的核心业务。