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

在Debian上安装MySQL

先参考白白白给大魔王的Debian12安装mysql-server(超级详细版本)_debian12 安装mysql-CSDN博客

如果不行再试试我的方法

下面是我遇到的情况

先安装wget,dpkg,gunpg。

然后进入MySQL官网下载主页https://www.mysql.com/cn/downloads/

社区版下载https://dev.mysql.com/downloads/

再是https://dev.mysql.com/downloads/repo/apt/

如图

我是懒得改,直接抄的前面博主的指令

wget https://dev.mysql.com/get/mysql-apt-config_0.8.33-1_all.deb 
#mysql-apt-config_0.8.33-1_all.deb为要下载的版本
wget https://dev.mysql.com/get/mysql-apt-config_0.8.33-1_all.deb
--2025-08-10 23:17:38--  https://dev.mysql.com/get/mysql-apt-config_0.8.33-1_all.deb
Resolving dev.mysql.com (dev.mysql.com)... 184.87.103.166, 2600:140e:6:397::2e31, 2600:140e:6:393::2e31
Connecting to dev.mysql.com (dev.mysql.com)|184.87.103.166|:443... connected.
HTTP request sent, awaiting response... 302 Moved Temporarily
Location: https://repo.mysql.com//mysql-apt-config_0.8.33-1_all.deb [following]
--2025-08-10 23:17:38--  https://repo.mysql.com//mysql-apt-config_0.8.33-1_all.deb
Resolving repo.mysql.com (repo.mysql.com)... 23.202.138.125, 2600:140b:2:18f::1d68, 2600:140b:2:187::1d68
Connecting to repo.mysql.com (repo.mysql.com)|23.202.138.125|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 18072 (18K) [application/x-debian-package]
Saving to: ‘mysql-apt-config_0.8.33-1_all.deb’mysql-apt-config_0.8.33-1_all 100%[=================================================>]  17.65K  --.-KB/s    in 0.002s2025-08-10 23:17:39 (11.2 MB/s) - ‘mysql-apt-config_0.8.33-1_all.deb’ saved [18072/18072]

接下来继续安装mysql服务器

sudo dpkg -i mysql-apt-config_0.8.33-1_all.deb

这是我遇到的问题

sudo dpkg -i mysql-apt-config_0.8.33-1_all.deb
dpkg: regarding mysql-apt-config_0.8.33-1_all.deb containing mysql-apt-config, pre-dependency problem:mysql-apt-config pre-depends on lsb-releaselsb-release is not installed.dpkg: error processing archive mysql-apt-config_0.8.33-1_all.deb (--install):pre-dependency problem - not installing mysql-apt-config
Errors were encountered while processing:mysql-apt-config_0.8.33-1_all.deb

我问AI回答说

这个错误提示lsb-release is not installed说明安装mysql-apt-config需要依赖lsb-release包,但当前系统中没有安装。解决方法很简单,先安装lsb-release即可

# 安装依赖包 lsb-release
sudo apt update
sudo apt install -y lsb-release# 重新安装 mysql-apt-config 配置包
sudo dpkg -i mysql-apt-config_0.8.33-1_all.deb

等待一段时间mysql安装,然后会弹出这样的界面

AI回答

这是配置 mysql-apt-config 时选择 MySQL 服务器版本的界面,不同版本有不同特点,以下是各版本说明和选择建议:

版本说明

  • mysql-8.0:是 MySQL 较为稳定的通用版本,功能全面,社区支持广泛,适合大多数常规的开发、测试和生产环境,对新特性需求不是特别激进的场景选它很稳妥。
  • mysql-innovation:属于创新版本,会包含最新的实验性特性,但稳定性相对弱一些,一般不建议生产环境使用,适合想尝鲜、测试新功能的技术探索场景。
  • mysql-8.4-ltsLTS 代表长期支持(Long - Term Support ),该版本在稳定性、兼容性和 bug 修复方面有持续保障,适合对稳定性要求极高、需要长期运维的生产环境,比如企业级核心业务系统。
  • mysql-cluster-8.0 等集群相关版本:如果你要搭建 MySQL 集群环境(如 MySQL NDB Cluster ),才需要选这类集群专属版本;普通单机或常规主从架构,不用考虑这些。
  • None:不指定特定版本,一般也不建议选,会让后续安装逻辑变复杂。

选择建议

  • 常规使用(开发 / 测试 / 生产):优先选 mysql-8.0 ,稳定且功能覆盖广,遇到问题容易找解决方案。
  • 生产环境追求长期稳定:选 mysql-8.4-lts ,能获得更长久的官方技术支持,减少因版本迭代带来的维护风险。
  • 技术探索、测试新功能:可尝试 mysql-innovation ,但别直接用于生产。
  • 搭建集群:根据实际集群方案选对应的 mysql-cluster-xxx 版本,不过要注意,MySQL 集群部署相对复杂,要提前了解好架构和运维要点。
 

选好后,按回车确认(界面下方 <Ok> 位置,通常按回车或 Tab 切到 Ok 再回车 ),继续后续 MySQL 安装流程即可。

当前界面是 mysql-apt-config 的产品配置选择环节,以下是各选项说明和选择建议:

选项说明

  • MySQL Server & Cluster
    会配置官方仓库中 MySQL 服务器和集群相关的软件源,涵盖单机数据库、集群(如 NDB Cluster )等产品,是最常用的选项,适合要安装 MySQL 数据库服务的场景。
  • MySQL Connectors
    主要配置 MySQL 连接器(如 MySQL - Python、MySQL - Java 等语言驱动)的软件源,如果你只是想装数据库服务,一般不用单独选这个;但如果后续要通过多种语言连接 MySQL ,且想从官方源获取最新驱动,可考虑。
  • OK:确认当前配置,保存并退出配置界面,让选择生效。

选择建议

如果你核心需求是安装 MySQL 数据库服务器(不管单机还是后续可能搭建集群 ),直接选 MySQL Server & Cluster(当前已默认选中,界面也显示 Currently selected: mysql-8.0 ,配置是匹配常规需求的 ),然后按回车(或用 Tab 键切到 <Ok> 再回车 )确认即可。

 

确认后,继续执行后续步骤(sudo apt update 更新软件源、sudo apt install mysql-server 安装服务器等 ),就能完成 MySQL 在 Debian 系统的部署啦。

然后我就遇到这个问题

done!
update-alternatives: using /var/lib/mecab/dic/ipadic-utf8 to provide /var/lib/mecab/dic/debian (mecab-dictionary) in auto mode
Setting up libperl5.36:amd64 (5.36.0-7+deb12u2) ...
Setting up mysql-community-client (8.0.43-1debian12) ...
Setting up mysql-client (8.0.43-1debian12) ...
Setting up perl (5.36.0-7+deb12u2) ...
Setting up mysql-community-server (8.0.43-1debian12) ...
update-alternatives: using /etc/mysql/mysql.cnf to provide /etc/mysql/my.cnf (my.cnf) in auto mode
dpkg: error processing package mysql-community-server (--configure):installed mysql-community-server package post-installation script subprocess returned error exit status 1
dpkg: dependency problems prevent configuration of mysql-server:mysql-server depends on mysql-community-server (= 8.0.43-1debian12); however:Package mysql-community-server is not configured yet.dpkg: error processing package mysql-server (--configure):dependency problems - leaving unconfigured
Processing triggers for libc-bin (2.36-9+deb12u9) ...
Errors were encountered while processing:mysql-community-servermysql-server
E: Sub-process /usr/bin/dpkg returned an error code (1)

这个错误表明在安装 mysql-community-server 以及依赖它的 mysql-server 包时出现了问题,是需要处理的。具体原因和解决方法如下:

错误原因

dpkg 报错 installed mysql-community-server package post-installation script subprocess returned error exit status 1 ,这意味着 mysql-community-server 安装后的配置脚本执行出错了,导致 mysql-community-server 没有正确配置完成。而 mysql-server 依赖于 mysql-community-server ,因此 mysql-server 也无法完成配置。

 

常见导致这个问题的原因有:

 
  • 端口占用:MySQL 默认使用 3306 端口,如果该端口被其他进程占用,MySQL 服务启动配置时就会失败。
  • 文件权限问题:MySQL 在初始化数据目录、写入配置文件等操作时,若没有相应的权限,也会导致配置脚本执行失败。
  • 配置冲突:系统中可能存在与 MySQL 默认配置冲突的设置,例如某些系统参数设置、其他数据库残留配置等。

后面我用AI给我的提示

1. 检查端口占用情况

使用 netstat 或 ss 命令查看 3306 端口是否被占用:

sudo netstat -tlnp | grep 3306
# 或者
sudo ss -tlnp | grep 3306

一开始不知道是什么原因,试着启动MySQL服务看看,结果发现是端口被占用

sudo systemctl start mysql
Job for mysql.service failed because the control process exited with error code.
See "systemctl status mysql.service" and "journalctl -xeu mysql.service" for details.
ducker@LAPTOP-R74E5ETB:~$ sudo systemctl status mysql.service
Failed to dump process list for 'mysql.service', ignoring: Input/output error
× mysql.service - MySQL Community ServerLoaded: loaded (/lib/systemd/system/mysql.service; disabled; preset: enabled)Active: failed (Result: exit-code) since Sun 2025-08-10 23:42:55 CST; 1min 7s agoDocs: man:mysqld(8)http://dev.mysql.com/doc/refman/en/using-systemd.htmlProcess: 5491 ExecStartPre=/usr/share/mysql-8.0/mysql-systemd-start pre (code=exited, status=0/SUCCESS)Process: 5526 ExecStart=/usr/sbin/mysqld (code=exited, status=1/FAILURE)Main PID: 5526 (code=exited, status=1/FAILURE)Status: "Server shutdown complete"Error: 98 (Address already in use)Tasks: 37 (limit: 9349)Memory: 476.5MCGroup: /system.slice/mysql.serviceAug 10 23:42:52 LAPTOP-R74E5ETB systemd[1]: Starting mysql.service - MySQL Community Server...
Aug 10 23:42:55 LAPTOP-R74E5ETB systemd[1]: mysql.service: Main process exited, code=exited, status=1/FAILURE
Aug 10 23:42:55 LAPTOP-R74E5ETB systemd[1]: mysql.service: Failed to kill control group /system.slice/mysql.service, ig>
Aug 10 23:42:55 LAPTOP-R74E5ETB systemd[1]: mysql.service: Failed to kill control group /system.slice/mysql.service, ig>
Aug 10 23:42:55 LAPTOP-RE5ETB systemd[1]: mysql.service: Failed to kill control group /system.slice/mysql.service, ig>
Aug 10 23:42:55 LAPTOP-RE5ETB systemd[1]: mysql.service: Failed to kill control group /system.slice/mysql.service, ig>
Aug 10 23:42:55 LAPTOP-RE5ETB systemd[1]: mysql.service: Failed with result 'exit-code'.
Aug 10 23:42:55 LAPTOP-RE5ETB systemd[1]: Failed to start mysql.service - MySQL Community Server.

从报错信息 Error: 98 (Address already in use) 可知,MySQL 服务启动失败是因为默认端口(3306)被其他进程占用了。以下是详细解决步骤:

1. 找出占用端口的进程

执行以下命令,查看哪个进程占用了 3306 端口:

bash

sudo netstat -tlnp | grep 3306
# 或用 ss 命令(更推荐,netstat 部分系统可能默认未安装)
sudo ss -tlnp | grep 3306

输出类似如下格式(以 ss 为例):

plaintext

LISTEN 0      128        127.0.0.1:3306      0.0.0.0:*    users:(("mysqld",pid=1234,fd=12))

  • pid=1234 就是占用端口的进程 ID,"mysqld" 表示进程名(如果是其他程序,比如 mariadb 或其他应用,也会显示对应名称 )。

2. 处理占用进程

情况 1:占用进程是其他 MySQL/MariaDB 实例

如果看到进程名是 mysqld(另一个 MySQL 实例)或 mariadbd(MariaDB 进程),说明系统里可能残留了旧版本数据库,或误装了多个数据库服务。

  • 停止并卸载多余的服务(以 MariaDB 为例):

bash

sudo systemctl stop mariadb
sudo apt remove --purge mariadb-server mariadb-client

  • 清理残留配置后,再重启当前要使用的 MySQL 服务:

bash

sudo systemctl start mysql
情况 2:占用进程是其他无关程序

如果看到是其他程序(比如某个自定义应用、调试工具等)占用了 3306 端口,直接停止该进程即可:

bash

# 假设进程 ID 是 1234,替换成实际查到的 PID
sudo kill -9 1234
# 若进程是系统服务,用 systemctl 停止(如某服务叫 custom-app)
sudo systemctl stop custom-app

停止后,重新启动 MySQL 服务:

bash

sudo systemctl start mysql

3. 改 MySQL 端口(备用方案)

如果不想停止占用进程,也可以修改 MySQL 自身的端口(比如改成 3307 ):

  1. 编辑 MySQL 配置文件:

bash

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

  1. 找到 port = 3306 这一行,修改为:

plaintext

port = 3307

  1. 保存退出后,重启 MySQL 服务:

bash

sudo systemctl restart mysql

之后连接 MySQL 时,需要指定新端口(如 mysql -u root -p -P 3307 ),或在客户端配置里同步修改端口。

4. 验证启动结果

完成上述操作后,再次检查 MySQL 状态:

bash

sudo systemctl status mysql.service

如果输出 Active: active (running) ,说明启动成功;若仍失败,继续看日志 /var/log/mysql/error.log 找其他报错(比如权限、数据目录问题等)。

按这个流程,基本能解决端口冲突导致的启动失败问题,优先推荐停止 / 卸载冲突进程,保持 3306 端口给主要的 MySQL 服务使用~

我又尝试着看看是哪些进程占据这些端口

sudo ss -tlnp | grep 3306
LISTEN 0      151           0.0.0.0:3306       0.0.0.0:*
LISTEN 0      70          127.0.0.1:33060      0.0.0.0:*

我Linux学的不是很好,也没有找到是哪两个进程,最后选择重启Debian系统,重进就成功了,

也是谢天谢地。

小意外

sudo systemctl start mysql
[sudo] password for ducker:
Sorry, try again.
[sudo] password for ducker:
Sorry, try again.
[sudo] password for ducker:
sudo: 3 incorrect password attempts
ducker@LAPTOP-R94E5ETB:~$ sudo systemctl start mysql
[sudo] password for ducker:
Sorry, try again.
[sudo] password for ducker:
sudo: 1 incorrect password attempt

这里我应该输入sudo的密码,结果一直输成mysql的root密码了😂😂😂

也是希望对大家有所帮助。

后面补充

我后又登入debian,又出现端口被占用,查看mysql的error.log错误日志

于是决定改mysql的端口

在 Linux 系统中修改 MySQL 的端口号(默认端口为 3306),需要修改 MySQL 的配置文件并重启服务,具体步骤如下:

一、找到 MySQL 配置文件

MySQL 的配置文件通常位于以下路径之一(不同 Linux 发行版可能不同):

 
  • Ubuntu/Debian/etc/mysql/mysql.conf.d/mysqld.cnf
  • CentOS/RHEL/etc/my.cnf 或 /etc/my.cnf.d/mysql-server.cnf
  • 通用路径/etc/mysql/my.cnf
 

可以通过 find / -name "mysqld.cnf" 2>/dev/null 命令搜索配置文件位置。

二、修改端口号配置

  1. 用文本编辑器(如 nano 或 vim)打开配置文件,例如:

    bash

    sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf  # Ubuntu/Debian 示例
    
  2. 在 [mysqld] 段落中找到或添加 port 参数,设置为目标端口(如 3307):

    ini

    [mysqld]
    port = 3307  # 修改为新端口(1-65535 之间,避免与其他服务冲突)
    # 其他配置...
    
  3. 保存并退出编辑器(nano 按 Ctrl+O 保存,Ctrl+X 退出;vim 按 :wq 保存退出)。

三、验证端口是否冲突(可选)

确保新端口未被其他服务占用,避免启动失败:

 

bash

# 检查端口是否被占用(以 3307 为例)
sudo netstat -tulpn | grep 3307
# 或使用 lsof(需先安装:sudo apt install lsof)
sudo lsof -i :3307
 

若输出为空,说明端口未被占用;若有输出,需更换其他端口。

四、重启 MySQL 服务

修改配置后需重启服务使端口生效:

 

bash

# Ubuntu/Debian 系统
sudo systemctl restart mysql# CentOS/RHEL 系统
sudo systemctl restart mysqld

五、验证端口是否生效

  1. 查看 MySQL 服务监听的端口:

    bash

    sudo netstat -tulpn | grep mysql
    
     

    若输出中包含 LISTEN 和新端口(如 3307),说明修改成功:

    plaintext

    tcp        0      0 0.0.0.0:3307            0.0.0.0:*               LISTEN      1234/mysqld
    
  2. 登录 MySQL 验证(需指定新端口):

    bash

    mysql -u root -p -P 3307  # -P 小写是密码,大写 P 是端口
    
     

    能成功登录则表示端口修改生效。

六、注意事项

  1. 防火墙配置:若系统启用了防火墙(如 ufw 或 firewalld),需开放新端口,否则客户端无法连接:

    bash

    # Ubuntu/Debian(ufw)
    sudo ufw allow 3307/tcp
    sudo ufw reload# CentOS/RHEL(firewalld)
    sudo firewall-cmd --add-port=3307/tcp --permanent
    sudo firewall-cmd --reload
    

  2. 客户端连接:后续客户端(如 mysql 命令、Navicat 等)连接时,必须指定新端口(默认端口已失效)。

  3. 主从复制 / 集群:若 MySQL 用于主从复制或集群,需同步修改所有节点的端口配置,并在连接时指定新端口(如从库配置 MASTER_PORT = 3307)。

  4. 安全性:避免使用常见端口(如 3306)可降低被扫描攻击的风险,但更重要的是通过权限控制和防火墙限制访问。

 

通过以上步骤,即可成功修改 Linux 系统中 MySQL 的端口号。

http://www.lryc.cn/news/617325.html

相关文章:

  • Excel 实战:基因表达矩阵前处理中测序符号的快速剥离方法
  • golang 基础案例_02
  • 设计模式笔记_结构型_享元模式
  • 深入解析Prompt缓存机制:原理、优化与最佳实践
  • Agent在供应链管理中的应用:库存优化与需求预测
  • Python FastAPI + React + Nginx 阿里云WINDOWS ECS部署实战:从标准流程到踩坑解决全记录
  • typecho博客设置浏览器标签页图标icon
  • 【工控】线扫相机小结 第六篇
  • uncalled4
  • 麒麟系统使用-PATH设置
  • 【接口自动化】-7- 热加载和日志封装
  • 实战:用 PyTorch 复现一个 3 层全连接网络,训练 MNIST,达到 95%+ 准确率
  • 软件测试关于搜索方面的测试用例
  • DeepCompare文件深度对比软件:权限管理与安全功能全面解析
  • Android Audio实战——获取活跃音频类型(十五)
  • 安全合规4--下一代防火墙组网
  • 企业内外网物理隔离时文件怎么传输更安全
  • ChatML vs Harmony:深度解析OpenAI全新对话结构格式的变化
  • Linux 流编辑器 sed 详解
  • C#使用EPPlus读写Excel
  • Elasticsearch Node.js 客户端的安装
  • 【Node.js从 0 到 1:入门实战与项目驱动】1.3 Node.js 的应用场景(附案例与代码实现)
  • Flutter Dialog、BottomSheet
  • RabbitMQ 消息转换器详解
  • windows上RabbitMQ 启动时报错:发生系统错误 1067。 进程意外终止。
  • 内存问题排查工具ASan初探
  • 嵌入式Linnux学习 -- 软件编程2
  • uart通信中出现乱码,可能的原因是什么 ?
  • 借助 ChatGPT 快速实现 TinyMCE 段落间距与行间距调节
  • Nmap 渗透测试弹药库:精准扫描与隐蔽渗透技术手册