解决远程连接AlpineLinux Mysql/MariaDB 无法连接的问题

在这里插入图片描述

🔥博客介绍`: EvLast

🎥系列专栏:
<< C++项目>>
<<数据结构与算法>>
<< 算法入门>>

🎥 当前专栏:<< C++项目>>

专题 : 解决开发中的日常Bug
👍👍👍👍👍👍👍👍👍👍👍👍
☆*: .。. o(≧▽≦)o .。.:*☆

❤️感谢大家点赞👍收藏⭐评论✍️

在这里插入图片描述

问题描述

远程连接AlpineLinux 中的Mysql出现 无法连接的情况, 从报错可以看出密码问题其实是无法连通的问题.

在这里插入图片描述

原因解释

从参考的资料来看是 AlpineLinux 没有mysql 其实是使用的 MariaDB 的框架 那么MySQL 与 MariaDB 可以参考文章 : MariaDB 和 MySQL 全面对比:选择数据库需要考虑这几点

在这里插入图片描述

既然数据库为 MariaDB 那么我便去找 相关文章发现 需要这么几步解决

  1. 更改配置文件
  2. 打开MySQL/MariaDB用户权限连接
  3. 配置MySQL/MariaDB防火墙的监听

解决步骤

找到配置文件并更改

MariaDB 与普通的MySQL数据库的一个不同在于它的配置文件不止一个,它将不同的数据放入到不同的配置文件中。
根据官方的说法, MariaDB为了提高安全性,默认只监听127.0.0.1中的3306端口并且禁止了远程的TCP链接,我们可以通过下面两步来开启MySQL的远程服务

  1. 注释掉skip-networking选项来开启远程访问.
  2. 注释bind-address项,该项表示运行哪些IP地址的机器连接,允许所有远程的机器连接

  1. 使用一下命令查看配置文件
mysqld --help --verbose

在这里插入图片描述
2. 注释配置文件

这时候只要找到某一配置文件中的 bind-address = 127.0.0.1 进行注释 或者改为 bind-address = 0.0.0.0 这时候即可 , bind-address = 0.0.0.0可以无需注释, 但是 bind-address = 127.0.0.1 必须注释,
在这里插入图片描述
3. 将 skip-networking 变为 0 即 skip-networking=0 如果没有 skip-bind-address 然后添加 skip-bind-address , 有者无需添加

注: 可能无法将全部配置文件找全,或者本来就没有那么多配置文件 请在找到的配置文件中添加 skip-networking=0 skip-bind-address , 如果没有 skip-networking=0skip-bind-address 请手动添加 达到覆盖的目的

打开MySQL/MariaDB用户权限连接

无法进行远程连接其中一个原因便是用户没有开启远程连接的权限

1、使用root登陆mysql (知道密码直接登入)

当你不知道root密码,登陆不了,请修改/etc/my.cnf文件, 在Mysqld 配置段下添加:

skip-grant-tables

可以跳过mysql登陆时密码验证,改好后重启mysql服务:

service mariadb restart

用这个登陆:mysql -u root -p 需要密码直接回车

  1. 更新root账号密码(知道密码可以跳过)
  • 使用mysql数据库:use mysql;
  • 更改root密码:
update user set authentication_string = password(‘root’), password_expired = ‘N’, password_last_changed = now() where user = ‘root’;

注:我的mysql版本未5.7,密码字段为【authentication_string】,不同版本mysql字段不一样,可以使用【select * from user;】查看密码字段

  1. 开启root账号远程登陆权限

1、使用mysql数据库:

use mysql;

2、查看root账号权限:

select user,host from user;

在这里插入图片描述

如果root不是【%】,使用语句更新:

update user set host = ‘%’ where user = ‘root’;

或者
root账户中的host项是localhost表示该账号只能进行本地登录,我们需要修改权限,输入命令:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;

修改权限。%表示针对所有IP,password表示将用这个密码登录root用户,如果想只让某个IP段的主机连接,可以修改为

GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.100.%' IDENTIFIED BY 'my-new-password' WITH GRANT OPTION;

注意:此时远程连接的密码可能与你在本地登录时的密码不同了,主要看你在IDENTIFIED BY后面给了什么密码,具体的请参考GRANT命令

最后

FLUSH PRIVILEGES;

打开防火墙

在 Alpine Linux 中,firewall-cmd 并不是用于管理防火墙的工具,因为 Alpine 使用的是 iptables,并且有一个名为 awall (Alpine Wall) 的前端界面来帮助管理 iptables 规则
。如果想要检查防火墙状态或者管理防火墙规则,应该使用 iptables 相关的命令。

如果出现

ash: iptables: not found
  1. 安装 iptables:
apk add iptables
  1. 添加MySQL连接端口
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT

在这里插入图片描述

  1. 保存你的规则,以便它们在系统重启后依然有效:
iptables-save > /etc/iptables/rules.v4
  1. 确保 iptables 在系统启动时自动启动:
rc-update add iptables
  1. 如果你想要查看当前的 iptables 规则,可以使用以下命令:
iptables -L

防火墙重复情况

如果你发现有重复的防火墙规则,你可以通过 iptables 命令来删除特定的规则。使用以下步骤来删除重复的防火墙规则:

  1. 列出当前的 iptables 规则
    列出所有的 iptables 规则,以确定哪些规则是重复的:

    iptables -L --line-numbers
    

    这将列出所有的规则,包括规则编号、协议、选项、源地址、目标地址和端口。
    这将显示每条规则的编号,格式如下:

    Chain INPUT (policy ACCEPT)
    num  target     prot opt source               destination
    1    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:3306
    2    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:3306
  2. 删除重复的规则
    其中num 为编号 一旦确定了要删除的规则的编号,就使用 iptables -D 命令来删除特定的规则。例如,如果你想要删除第一个 ACCEPT 规则,你可以使用:

    iptables -D INPUT 1
    

    这里 INPUT 是链的名称,1 是规则的编号。请确保使用正确的链名称和规则编号。

  3. 保存新的 iptables 配置
    删除规则后,你需要保存新的配置,以确保在系统重启后更改生效。在 Alpine Linux 中,你可以使用 iptables-save 命令来保存规则:

    iptables-save > /etc/iptables/rules.v4
    

    或者,如果你的系统使用 rc-update 来管理启动脚本,你可以确保 iptables 规则在启动时应用:

    rc-update add iptables
    
  4. 重启 iptables 服务
    为了确保更改立即生效,你可以重启 iptables 服务:

    iptables-save
    iptables-restore < /etc/iptables/rules.v4
    

    或者,如果你的系统使用 s6openrc,你可以使用:

    rc-service iptables restart
    

    或者

    s6-rc unsupervisor iptables
    s6-rc supervisor iptables
    
  5. 检查防火墙状态
    最后,检查防火墙规则确保重复的规则已被删除:

    iptables -L -n -v
    

以上便是我对于这次问题的眼界与解决方案

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/434728.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

问题记录:end value has mixed support, consider using flex-end instead

一、问题记录 二、解决问题 根据提示改为flex-end 三、理解问题 ‌这个警告信息表明&#xff0c;在Flex布局中使用“end”属性时存在兼容性问题&#xff0c;建议使用“flex-end”代替。 当在Flex布局中使用“justify-content: end;”时&#xff0c;浏览器可能对“end”值的支…

【STM32开发笔记】移植AI框架TensorFlow到STM32单片机【下篇】

【STM32开发笔记】移植AI框架TensorFlow到STM32单片机【下篇】 一、上篇回顾二、项目准备2.1 准备模板项目2.2 支持计时功能2.3 配置UART4引脚2.4 支持printf重定向到UART42.5 支持printf输出浮点数2.6 支持printf不带\r的换行2.7 支持ccache编译缓存 三、TFLM集成3.1 添加tfli…

Linux之实战命令18:col应用实例(五十二)

简介&#xff1a; CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布&#xff1a;《Android系统多媒体进阶实战》&#x1f680; 优质专栏&#xff1a; Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a; 多媒体系统工程师系列【…

深刻理解Redis集群(下):Redis 哨兵(Sentinel)模式

背景 现在对3个节点的sentinel进行配置。sentinel的配置文件在redis的安装目录中已经存在&#xff0c;只需要复制到指定的位置即可。 sentinel是独立进程&#xff0c;有对应的脚本来执行。 基于之前的redis 一主二从的架构&#xff0c;我们继续启动3个sentinel进程。 哨兵模式的…

Servlet——springMvc底层原理

我们也先了解一下什么的动态资源&#xff0c;什么是静态资源。 静态资源&#xff1a;无需程序运行就可以获取的资源&#xff08;照片、html、css、js等&#xff09; 动态资源&#xff1a;需要通关程序运行才可以获得的资源。 &#xff08;其实动态、静态的资源都与Servlet有…

手机软件何时统一——桥接模式

文章目录 手机软件何时统一——桥接模式凭什么你的游戏我不能玩紧耦合的程序演化合成&#xff0f;聚合复用原则松耦合的程序桥接模式桥接模式基本代码 手机软件何时统一——桥接模式 凭什么你的游戏我不能玩 时间&#xff1a;5月31日20点  地点&#xff1a;大鸟房间  人物…

游戏账号系统小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;卖家管理&#xff0c;游戏类别管理&#xff0c;游戏账号管理&#xff0c;站内联系管理&#xff0c;交易订单管理&#xff0c;帐号退货管理 微信端账号功能包括&#xff1a;系统首…

一个家越来越有钱,是因为女人身上有这3个好习惯!

在一个家庭中&#xff0c;女人往往扮演着举足轻重的角色。 她们不仅是家庭的支柱&#xff0c;也是家庭和谐与繁荣的重要因素。 正所谓“家和万事兴”&#xff0c;一个家庭是否能够兴旺发达&#xff0c;与家中女人的习惯和态度息息相关。 实际上&#xff0c;一个家越来越有钱…

2024年双十一值得入手好物?2024年双十一必买清单!

双十一的号角已经吹响&#xff0c;你是否还在为买什么而纠结&#xff1f;快来看看这份2024年双十一必买清单&#xff01;这里汇聚了各类令人惊喜的好物&#xff0c;从科技新宠到生活必备&#xff0c;总有一款能打动你的心&#xff01; 一、真1000w配置——西圣find可视挖耳勺 …

基于php的幸运舞蹈课程工作室管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏&#xff1a;Java精选实战项目…

uni-app - - - - -vue3使用i18n配置国际化语言

uni-app - - - - -使用i18n配置国际化语言 1. 安装vue-i18n2. 配置文件2.1 创建如下文件2.2 文件配置2.3 main文件导入i18n 3. 页面内使用3.1 template内直接使用3.2 变量接收使用 1. 安装vue-i18n npm install vue-i18n --save2. 配置文件 2.1 创建如下文件 locales文件夹里…

基于Java开发的(控制台)模拟的多用户多级目录的文件系统

多级文件系统 1 设计目的 为了加深对文件系统内部功能和实现过程的理解&#xff0c;设计一个模拟的多用户多级目录的文件系统&#xff0c;并实现具体的文件物理结构、目录结构以及较为完善的文件操作命令集。 2 设计内容 2.1系统操作 操作命令风格&#xff1a;本文件系统的…

unreal engine5制作动作类游戏时,我们使用刀剑等武器攻击怪物或敌方单位时,发现攻击特效、伤害等没有触发

UE5系列文章目录 文章目录 UE5系列文章目录前言一、问题分析二、解决方法1. 添加项目设置碰撞检测通道2.玩家角色碰撞设置3.怪物角色碰撞预设 最终效果 前言 在使用unreal engine5制作动作类游戏时&#xff0c;我们使用刀剑等武器攻击怪物或敌方单位时&#xff0c;发现攻击特效…

Lesson08---string(4)类

Lesson08—string类&#xff08;4&#xff09; c第八章string类的实现 文章目录 Lesson08---string类&#xff08;4&#xff09;前言一、计算机是怎么储存文字的1. 在此之前先思考一个问题2.编码表2.1 ascll码2.2unicode码2.3UTF码2.4gbk码 二、实现一个简单的string1.构造函数…

解锁免费数据恢复工具的潜力,找回珍贵数据记忆

数据的分享与存储普遍倾向于电子化形式&#xff0c;这一转变无疑极大地提升了便捷性。然而&#xff0c;电子化存储也伴随着风险&#xff0c;诸如系统崩溃、误删除或外部因素干扰等意外情况&#xff0c;都可能导致宝贵数据的突然丢失。为了预防这一潜在问题&#xff0c;今天我们…

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-09-29

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-09-29 在这一期中&#xff0c;我们对大语言模型在软件开发中的跨学科应用的几个工作做简要的介绍。相关内容涵盖软件测试时的问题报告&#xff0c;问题分类&#xff0c;测试生成&#xff0c;和软件测试中的AI应用: …

97、配置 VXLAN 不同子网互访 (分布式网关)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、基础配置SW1SW2IGP IS-IS 二、VXLAN1.引入库 总结 前言 一、基础配置 SW1 vlan 10 vlan 20interface GigabitEthernet0/0/1port link-type accessport de…

【一篇文章理解Java中多级缓存的设计与实现】

文章目录 一.什么是多级缓存&#xff1f;1.本地缓存2.远程缓存3.缓存层级4.加载策略 二.适合/不适合的业务场景1.适合的业务场景2.不适合的业务场景 三.Redis与Caffine的对比1. 序列化2. 进程关系 四.各本地缓存性能测试对比报告(官方)五.本地缓存Caffine如何使用1. 引入maven依…

【Python】PyJWT:轻松实现 JSON Web Token (JWT) 网络令牌的生成与验证

PyJWT 是一个用 Python 实现的轻量级库&#xff0c;用于处理 JSON Web Token (JWT)。JWT 是一种安全的方式&#xff0c;用来表示双方之间经过签名的令牌&#xff0c;通常用于认证和授权场景。PyJWT 简化了 JWT 的生成和验证过程&#xff0c;使得开发者能够轻松地在 Python 项目…

Python | Leetcode Python题解之第443题压缩字符串

题目&#xff1a; 题解&#xff1a; class Solution:def compress(self, chars: List[str]) -> int:def reverse(left: int, right: int) -> None:while left < right:chars[left], chars[right] chars[right], chars[left]left 1right - 1n len(chars)write lef…