"Can't connect to Mysql server on .....(10038)"的解决办法

关于这个问题的解决方法网上还是挺多的,这里只记录下自己的填坑过程,参考其他方法,这里不一一举出了,统一感谢。

今天在远程连接我的小服务器mysql的时候报的错误,开始是懵逼的 因为在之前的服务器上是没有问题的。但是搜索一下关键词后,还是找到了解决方法(一下是我的解决方法,自认为是比较简单的):}

核心就是默认的3306端口没有对外开发,所以首先查看一下:

netstat -an|grep 3306

开始显示的是127.0.0.1:3306
执行:

vi /etc/mysql/mysql.conf.d/mysqld.cnf

其中一行 bind-address = 127.0.0.1
前边加 #注释掉 保存(可能会遇到提示 readonly 请自行修改权限)

执行:

sudo mysql -u root -p

输入 mysql密码

mysql> grant all privileges on . to ‘root’@’%’ identified by ‘上边的密码’;
mysql>flush privileges;

重启下 sudo reboot now

### 解决 MySQL 连接错误 2002 和 10061 的方法 当遇到 `ERROR 2002 (HY000)` 或者 `ERROR 10061` 错误时,这通常意味着客户端无法通过指定的套接字文件或网络端口连接MySQL 数据库服务器。对于本地连接尝试而言,常见的原因可能是 MySQL 服务未启动或者配置不正确。 #### 检查 MySQL 服务状态 确认 MySQL 是否正在运行非常重要。可以通过命令行工具来查看服务的状态,在 Linux 上可以使用如下命令: ```bash sudo systemctl status mysqld.service ``` 如果是在 Windows 平台上,则可以在“服务管理器”中查找名为 “MySQL”的条目并验证其是否处于活动(已启动)状态[^1]。 #### 验证监听地址和端口号设置 确保 MySQL 正确地绑定了预期的 IP 地址以及端口,默认情况下应该是 localhost:3306。打开 MySQL 的配置文件(通常是 `/etc/mysql/my.cnf` 或 `%PROGRAMDATA%\MySQL\MySQL Server X.Y\my.ini`),找到 `[mysqld]` 下面有关 bind-address 及 port 参数的部分,并做适当调整以匹配实际需求[^2]。 #### 修改防火墙规则允许访问 有时操作系统自带的安全软件可能会阻止外部请求到达数据库实例。因此需要检查是否有任何安全策略阻挡了对目标主机上相应端口的数据流。例如,在 CentOS 中可利用 firewalld 添加一条新规则开放特定范围内的 TCP 流量给 MySQL: ```bash firewall-cmd --zone=public --add-port=3306/tcp --permanent firewall-cmd --reload ``` #### 处理套接字路径问题 针对 `ERROR 2002` 特定情况提到的找不到套接字文件的情况,应该核实所提供的路径确实存在并且权限合适。如果不是默认位置的话,记得更新环境变量或是修改应用程序中的连接字符串使之指向正确的 .sock 文件所在之处。 #### 尝试重启相关组件和服务 最后一步建议重新启动所有涉及的服务,包括但不限于 Apache、PHP-FPM 等 web 应用程序依赖项,因为它们之间可能存在相互影响的关系。特别是当你使用像 XAMPP 这样的集成开发包时更是如此。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值