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

第一篇:MySQL安装部署全攻略

MySQL安装部署全攻略

一、安装前的准备工作

1.1 检查你的Linux系统

在开始安装之前,我们先来确认一下你的系统环境。打开终端,输入以下命令:

# 查看系统版本
cat /etc/os-release# 查看内核版本
uname -a# 查看系统架构(32位还是64位)
uname -m

为什么需要检查这些?

  • 不同的Linux发行版使用不同的包管理器
  • 确保你的系统支持MySQL 8.0+
  • 64位系统性能更好,推荐使用

1.2 卸载已有的MySQL(如果存在)

如果你之前安装过MySQL,建议先卸载干净,避免冲突:

# 检查是否已安装MySQL
rpm -qa | grep mysql    # CentOS/RHEL系统
dpkg -l | grep mysql    # Ubuntu/Debian系统# 停止MySQL服务(如果正在运行)
sudo systemctl stop mysql
sudo systemctl disable mysql# 卸载MySQL相关包
# CentOS/RHEL系统
sudo yum remove mysql-server mysql-client mysql-common
sudo rm -rf /var/lib/mysql
sudo rm -rf /etc/my.cnf# Ubuntu/Debian系统
sudo apt-get remove --purge mysql-server mysql-client mysql-common
sudo rm -rf /var/lib/mysql
sudo rm -rf /etc/mysql

1.3 更新系统包

安装前先更新一下系统包,这是个好习惯:

# Ubuntu/Debian系统
sudo apt update
sudo apt upgrade -y# CentOS/RHEL系统
sudo yum update -y
# 或者使用dnf(CentOS 8+)
sudo dnf update -y

1.4 安装必要的依赖

MySQL需要一些基础依赖包,我们先安装它们:

# Ubuntu/Debian系统
sudo apt install -y wget curl vim net-tools# CentOS/RHEL系统
sudo yum install -y wget curl vim net-tools

二、使用包管理器安装MySQL(推荐新手)

2.1 Ubuntu/Debian系统使用APT安装

这是最简单、最推荐的方式,特别适合新手朋友!

2.1.1 添加MySQL官方仓库
# 下载MySQL APT配置包
wget https://dev.mysql.com/get/mysql-apt-config_0.8.29-1_all.deb# 安装配置包
sudo dpkg -i mysql-apt-config_0.8.29-1_all.deb

在安装过程中,你会看到一个配置界面:

  • 选择"OK"继续
  • 选择"MySQL Server & Cluster"
  • 选择"mysql-8.4"(或最新版本)
  • 选择"OK"完成配置
2.1.2 更新包列表并安装
# 更新包列表
sudo apt update# 安装MySQL服务器
sudo apt install -y mysql-server# 安装MySQL客户端(可选)
sudo apt install -y mysql-client
2.1.3 启动MySQL服务
# 启动MySQL服务
sudo systemctl start mysql# 设置开机自启
sudo systemctl enable mysql# 查看MySQL状态
sudo systemctl status mysql

如果看到绿色的"active (running)",恭喜你,MySQL已经成功启动了!

2.2 CentOS/RHEL系统使用YUM安装

2.2.1 添加MySQL官方YUM仓库
# 下载MySQL YUM仓库配置包
wget https://dev.mysql.com/get/mysql84-community-release-el7-11.noarch.rpm# 安装仓库配置包
sudo rpm -ivh mysql84-community-release-el7-11.noarch.rpm
2.2.2 安装MySQL服务器
# 安装MySQL服务器
sudo yum install -y mysql-community-server# 启动MySQL服务
sudo systemctl start mysqld# 设置开机自启
sudo systemctl enable mysqld# 查看MySQL状态
sudo systemctl status mysqld

2.3 初始安全配置

无论你用哪种方式安装,都需要进行安全配置:

# 运行安全配置脚本
sudo mysql_secure_installation

按照提示进行配置:

  1. 设置密码验证策略:建议选择中等强度(1)
  2. 设置root密码:输入一个强密码并记住
  3. 移除匿名用户:选择Y
  4. 禁止root远程登录:选择Y(安全考虑)
  5. 移除测试数据库:选择Y
  6. 重新加载权限表:选择Y

2.4 验证安装

让我们验证一下MySQL是否安装成功:

# 登录MySQL
sudo mysql -u root -p# 输入你设置的密码# 查看MySQL版本
SELECT VERSION();# 查看所有数据库
SHOW DATABASES;# 退出MySQL
EXIT;

如果一切正常,你会看到MySQL版本信息和数据库列表!

三、手动编译安装MySQL(适合进阶用户)

如果你想要更多控制权,或者需要特定版本的MySQL,可以尝试手动编译安装。这个方法稍微复杂一些,但能让你更深入理解MySQL的组成。

3.1 安装编译依赖

# Ubuntu/Debian系统
sudo apt install -y build-essential cmake bison libncurses5-dev libssl-dev# CentOS/RHEL系统
sudo yum install -y gcc gcc-c++ cmake bison ncurses-devel openssl-devel

3.2 下载MySQL源码

# 创建工作目录
mkdir -p ~/mysql-build
cd ~/mysql-build# 下载MySQL源码(以8.4.0为例)
wget https://dev.mysql.com/get/Downloads/MySQL-8.4/mysql-8.4.0.tar.gz# 解压源码
tar -zxvf mysql-8.4.0.tar.gz
cd mysql-8.4.0

3.3 创建MySQL用户和组

# 创建MySQL用户组
sudo groupadd mysql# 创建MySQL用户
sudo useradd -r -g mysql -s /bin/false mysql

3.4 编译安装MySQL

3.4.1 配置编译选项
# 创建编译目录
mkdir build && cd build# 运行cmake配置
cmake .. \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DSYSCONFDIR=/etc \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DWITH_BOOST=/usr/local/boost \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_unicode_ci \
-DENABLED_LOCAL_INFILE=1 \
-DENABLE_DTRACE=0 \
-DFORCE_INSOURCE_BUILD=1

配置选项说明:

  • DCMAKE_INSTALL_PREFIX:安装目录
  • DMYSQL_DATADIR:数据目录
  • DSYSCONFDIR:配置文件目录
  • DWITH_INNOBASE_STORAGE_ENGINE:启用InnoDB引擎
  • DDEFAULT_CHARSET:默认字符集
3.4.2 编译和安装
# 编译(这个过程会比较长,耐心等待)
make -j$(nproc)# 安装
sudo make install

注意:编译过程可能需要30分钟到2小时,取决于你的电脑性能。可以喝杯咖啡休息一下!

3.5 初始化MySQL

# 创建数据目录
sudo mkdir -p /usr/local/mysql/data
sudo chown -R mysql:mysql /usr/local/mysql# 初始化MySQL
cd /usr/local/mysql
sudo bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

重要:初始化完成后,会生成一个临时root密码,请记下这个密码!

3.6 配置MySQL

3.6.1 创建配置文件
# 创建MySQL配置文件
sudo vim /etc/my.cnf

添加以下内容:

[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
user=mysql# 字符集设置
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci# 存储引擎
default-storage-engine=InnoDB# 端口
port=3306# 日志设置
log-error=/usr/local/mysql/data/error.log
pid-file=/usr/local/mysql/data/mysql.pid# 其他设置
max_connections=200
innodb_buffer_pool_size=1G[client]
socket=/tmp/mysql.sock
default-character-set=utf8mb4[mysql]
default-character-set=utf8mb4
3.6.2 创建系统服务文件
# 创建systemd服务文件
sudo vim /etc/systemd/system/mysql.service

添加以下内容:

[Unit]
Description=MySQL Server
After=network.target[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
PIDFile=/usr/local/mysql/data/mysql.pid
Restart=on-failure
RestartSec=10
PrivateTmp=true[Install]
WantedBy=multi-user.target

3.7 启动MySQL

# 重新加载systemd
sudo systemctl daemon-reload# 启动MySQL
sudo systemctl start mysql# 设置开机自启
sudo systemctl enable mysql# 查看状态
sudo systemctl status mysql

3.8 修改root密码

# 登录MySQL(使用临时密码)
/usr/local/mysql/bin/mysql -u root -p# 修改root密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';# 刷新权限
FLUSH PRIVILEGES;# 退出
EXIT;

四、安装验证和基础测试

4.1 验证MySQL服务

# 检查MySQL进程
ps aux | grep mysql# 检查端口监听
netstat -tlnp | grep 3306# 检查MySQL日志
tail -f /var/log/mysql/error.log    # 包管理安装
tail -f /usr/local/mysql/data/error.log  # 手动编译安装

4.2 创建测试数据库

# 登录MySQL
mysql -u root -p# 创建测试数据库
CREATE DATABASE test_db;# 使用测试数据库
USE test_db;# 创建测试表
CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY,username VARCHAR(50) NOT NULL,email VARCHAR(100),created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);# 插入测试数据
INSERT INTO users (username, email) VALUES ('test_user', 'test@example.com');# 查询数据
SELECT * FROM users;# 退出
EXIT;

4.3 测试远程连接(可选)

如果你需要远程连接MySQL,需要进行额外配置:

# 登录MySQL
mysql -u root -p# 创建远程用户
CREATE USER 'remote_user'@'%' IDENTIFIED BY 'remote_password';# 授权
GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%';# 刷新权限
FLUSH PRIVILEGES;# 退出
EXIT;# 配置防火墙(如果需要)
sudo ufw allow 3306    # Ubuntu
sudo firewall-cmd --permanent --add-port=3306/tcp  # CentOS
sudo firewall-cmd --reload  # CentOS

五、常见问题解决

5.1 安装过程中遇到的问题

5.1.1 依赖包缺失

问题configure: error: No curses/termcap library found

解决

# Ubuntu/Debian
sudo apt install libncurses5-dev# CentOS/RHEL
sudo yum install ncurses-devel
5.1.2 编译错误

问题:编译过程中出现各种错误

解决

  1. 确保所有依赖都已安装
  2. 检查磁盘空间是否充足(至少需要5GB)
  3. 查看编译日志,根据具体错误解决

5.2 启动问题

5.2.1 MySQL无法启动

问题Job for mysql.service failed because the control process exited with error code

解决

# 查看错误日志
sudo journalctl -u mysql -n 50# 或者查看MySQL错误日志
tail -f /var/log/mysql/error.log# 常见原因:
# 1. 权限问题
sudo chown -R mysql:mysql /var/lib/mysql# 2. 端口被占用
sudo netstat -tlnp | grep 3306
sudo kill -9 进程ID# 3. 配置文件错误
sudo mysql --help --verbose | grep "Default options"
5.2.2 内存不足

问题:在内存较小的服务器上,MySQL可能无法启动

解决
修改配置文件,减少内存使用:

[mysqld]
innodb_buffer_pool_size = 256M  # 减少到256M或更小
max_connections = 50

5.3 连接问题

5.3.1 Access denied

问题ERROR 1045 (28000): Access denied for user 'root'@'localhost'

解决

# 停止MySQL服务
sudo systemctl stop mysql# 跳过权限表启动
sudo mysqld_safe --skip-grant-tables &# 新终端登录
mysql -u root# 重置密码
UPDATE mysql.user SET authentication_string=PASSWORD('新密码') WHERE User='root';
FLUSH PRIVILEGES;
EXIT;# 重启MySQL
sudo systemctl restart mysql
5.3.2 Can’t connect to MySQL server

问题ERROR 2002 (HY000): Can't connect to local MySQL server

解决

# 检查MySQL服务状态
sudo systemctl status mysql# 检查socket文件
ls -la /var/run/mysqld/mysqld.sock
ls -la /tmp/mysql.sock# 如果socket文件不存在,启动MySQL
sudo systemctl start mysql
http://www.dtcms.com/a/351675.html

相关文章:

  • 计算机毕业设计 java 养老院管理系统 基于 Java 的养老院管理平台 Java 开发的养老服务系统
  • Linux云计算运维简明教程02 应用运维
  • 视频合成素材视频-多合一功能-青柠剪吧
  • 智能手机使用(2015-2019)
  • 基于MATLAB的运动模糊图像修复方法研究(LW+源码+讲解+部署)
  • vue2+elementui 表格单元格增加背景色,根据每列数据的大小 颜色依次变浅显示
  • 科研笔记:SCI论文中的功能性图表
  • 【技术教程】如何将文档编辑器集成到用 .Net 编写的网络应用程序中
  • VScode,设置自动保存
  • 支持向量机学习
  • Ubuntu22.04 安装和使用标注工具labelImg
  • GZ-CTF平台pwn题目部署
  • GitHub 热榜项目 - 日榜(2025-08-26)
  • word批量修改交叉引用颜色
  • 【RAGFlow代码详解-28】部署和基础设施
  • 国标28181 国标视频平台
  • 四、Python 脚本常用模块(续)
  • Linux虚拟机ansible部署
  • 机器视觉学习-day04-形态学变换
  • Spring Boot 与传统 Spring:从 WAR 到可执行 JAR,颠覆性的部署哲学
  • MEMS陀螺定向短节与传统陀螺工具的区别?
  • 永磁同步电机无速度算法--传统脉振方波注入法(1)
  • 图片生成视频软件深度评测:浅谈视频音频提取技术
  • Boris FX Samplitude Suite 2025.0.0 音频录制/编辑和母带处理
  • 不增加 GPU,首 Token 延迟下降 50%|LLM 服务负载均衡的新实践
  • 如何基于阿里云OpenSearch LLM搭建智能客服平台
  • ssc37x平台的音频应用demo
  • 160.在 Vue3 中用 OpenLayers 解决国内 OpenStreetMap 地图加载不出来的问题
  • Mamba-HoME:面向3D医学影像分割的层次化专家混合新框架
  • 蓝思科技半年净利超11亿,蓝思成绩单怎么分析?