MySQL 可以用localhost 连接,但不能用IP连接的问题,局域网192.168.*.* 无法连接mysql...

 

进入Mysql终端输入这个命令

1.打开cmd窗口,进入MySql安装的bin目录

2.执行命令登录数据库,之后会出现一行要你输入密码的

  mysql -u root -p

3.执行以下命令分配新用户:

  grant all privileges on *.* to '用户名'@'IP地址' identified by '密码';

4.执行完上述命令后用下面的命令刷新权限

  flush privileges;

5.之后关闭mysql服务,然后启动mysql服务,大功告成

===================================================================================

这是一中快速配置方法:

帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改称"%" 或添加一个用户为“%”  。    

想让局域网中的所有机器都能连接MySQL数据库,首先要给MySQL开启远程连接的功能,在MySQL服务器控制台上执行MySQL命令:

grant all privileges on *.* to root@"%" identified by 'abc' with grant option;  
flush privileges;

其中上面两行代码的意思是给从任意ip地址连接的用户名为root,密码为abc的用户赋予所有的权限。其中的"%"为任意的ip地址,如果想设为特定的值也可以设定为特定的值(以通配符%的内容增加主机/IP地址,也可以直接增加IP地址)。

做完这些之后,局域网内的mysql服务器可以访问了。

<think>好的,用户现在遇到了一个MySQL连接错误:ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.11.13' (10061)。我需要先理解这个错误的原因,然后根据之前的对话内容提供解决方案。 首先,回忆一下,用户之前询问过Windows连接Ubuntu上的MySQL出现连接错误,我之前给出的解决步骤包括检查MySQL远程连接配置、用户权限、防火墙设置、网络连通性等。现在用户遇到了具体的错误代码,可能需要更针对性的分析。 错误代码10061通常表示无法建立连接,可能的原因包括: 1. MySQL服务未运行在目标机器上。 2. 防火墙阻止了3306端口的连接。 3. MySQL配置绑定了错误的地址(比如只允许本地连接)。 4. 网络问题,如IP地址正确或网络通。 接下来需要按照这些可能性逐一排查。首先,需要确认Ubuntu上的MySQL服务是否正在运行。用户可能需要检查服务状态,如果没运行就启动它。 然后,检查MySQL的配置文件,确保bind-address设置为0.0.0.0或者注释掉,以允许远程连接。如果之前已经做过这一步,用户可能没有重启MySQL服务,导致配置未生效,需要提醒用户重启服务。 接着,查看Ubuntu的防火墙设置,确保3306端口是开放的。用户可能没有正确配置UFW或者iptables规则,导致端口被阻止。需要指导用户使用ufw allow命令或者调整iptables。 网络连通性也是一个重要因素。用户需要确认Windows和Ubuntu在同一局域网内,并且可以互相ping通。如果无法ping通,可能存在网络配置问题,比如错误的IP地址、子网掩码或网关设置。 此外,用户可能在使用错误的IP地址连接MySQL,需要确认Ubuntu机器的正确IP地址。使用ip addr或ifconfig命令查看IP是否正确,是否有变动。 另外,可能MySQL的端口是默认的3306,如果用户修改过端口,连接时需要指定正确的端口号。或者,Windows的防火墙可能阻止了出站连接,需要检查Windows的防火墙设置。 如果用户之前按照步骤操作过但仍有问题,可能需要检查是否有遗漏的步骤,比如用户权限是否正确授权,是否执行了FLUSH PRIVILEGES,或者是否MySQL 8.0以上版本的身份验证插件问题。可能需要修改用户的认证方式为mysql_native_password。 最后,如果所有步骤都正确,可能需要更深入的网络诊断,比如使用telnet或nc测试端口是否可达,或者使用tcpdump查看是否有流量到达Ubuntu的3306端口。 用户可能需要具体的命令行示例来执行这些检查,比如如何检查服务状态,如何修改配置文件,如何开放端口等。需要将这些步骤详细列出,并给出常见的错误示例和解决方案,方便用户逐步排查。</think>当你在 Windows 上尝试连接 Ubuntu 中的 MySQL 服务时遇到 **`ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.11.13' (10061)`**,通常表示客户端无法通过 TCP/IP 连接MySQL 服务器。以下是详细的排查步骤和解决方案: --- ### **1. 确认 MySQL 服务是否正在运行** 首先确保 Ubuntu 上的 MySQL 服务已启动并正在监听端口 `3306`。 #### **步骤:** - **检查 MySQL 服务状态** ```bash sudo systemctl status mysql ``` - 如果显示 `inactive`,启动服务: ```bash sudo systemctl start mysql ``` - **确认 MySQL 是否在监听 `3306` 端口** ```bash sudo netstat -tuln | grep 3306 ``` - 正常输出应为: ```bash tcp6 0 0 :::3306 :::* LISTEN # 或 tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN ``` - 如果未显示 `0.0.0.0:3306`,说明 MySQL 未正确绑定到网络接口(见下一步)。 --- ### **2. 检查 MySQL 的绑定地址** MySQL 默认可能只允许本地连接(`localhost`),需修改配置文件以允许远程访问。 #### **步骤:** 1. **编辑 MySQL 配置文件** ```bash sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf ``` - 找到 `bind-address` 项,修改为: ```ini bind-address = 0.0.0.0 # 允许所有 IP 访问 ``` - 保存文件并退出。 2. **重启 MySQL 服务** ```bash sudo systemctl restart mysql ``` --- ### **3. 检查 Ubuntu 防火墙设置** Ubuntu 的防火墙(UFW 或 iptables)可能阻止了 `3306` 端口的入站连接。 #### **步骤:** - **开放 `3306` 端口** ```bash sudo ufw allow 3306/tcp sudo ufw reload ``` - **如果使用 iptables** 添加规则允许 `3306` 端口: ```bash sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT sudo netfilter-persistent save # 保存规则(如已安装) ``` --- ### **4. 检查 MySQL 用户权限** 确保 MySQL 用户允许从远程 IP(如 Windows 的 IP)登录。 #### **步骤:** 1. **登录 MySQL** ```bash mysql -u root -p ``` 2. **授权用户远程访问** ```sql -- 允许用户 'your_user' 从任意 IP 登录(替换为实际用户名和密码) CREATE USER 'your_user'@'%' IDENTIFIED BY 'your_password'; GRANT ALL PRIVILEGES ON *.* TO 'your_user'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES; ``` - 如果用户已存在,直接授权: ```sql GRANT ALL PRIVILEGES ON *.* TO 'your_user'@'%'; FLUSH PRIVILEGES; ``` --- ### **5. 检查网络连通性** 确认 Windows 和 Ubuntu 之间网络互通。 #### **步骤:** - **在 Windows 上 ping Ubuntu 的 IP** ```cmd ping 192.168.11.13 ``` - 如果无法 ping 通,检查以下问题: - Ubuntu 和 Windows 是否在同一局域网。 - Ubuntu 的 IP 是否已更改(使用 `ip addr` 确认)。 - 路由器或交换机是否限制了跨设备通信。 - **在 Windows 上测试 `3306` 端口** 使用 `telnet` 或 `PowerShell` 检查端口是否开放: ```cmd telnet 192.168.11.13 3306 ``` - 如果显示连接失败,说明端口被防火墙或 MySQL 配置阻止。 - 如果未安装 telnet,使用 PowerShell 替代: ```powershell Test-NetConnection 192.168.11.13 -Port 3306 ``` --- ### **6. 其他可能原因** #### **(1) Windows 防火墙阻止出站连接** - 检查 Windows 防火墙是否允许出站到 `3306` 端口。 #### **(2) MySQL 身份认证插件问题MySQL 8.0+)** - MySQL 8.0 默认使用 `caching_sha2_password` 插件,部分旧客户端可能兼容。 修改用户认证方式: ```sql ALTER USER 'your_user'@'%' IDENTIFIED WITH mysql_native_password BY 'your_password'; FLUSH PRIVILEGES; ``` #### **(3) 使用 SSH 隧道(备用方法)** 如果直接连接困难,可通过 SSH 隧道转发端口: ```powershell # 在 Windows 上执行(替换 username 和 192.168.11.13) ssh -L 3306:localhost:3306 username@192.168.11.13 ``` 连接时使用 `localhost:3306` 代替 `192.168.11.13:3306`。 --- ### **错误总结与解决方案** | **现象** | **可能原因** | **解决方法** | |----------|--------------|--------------| | `ERROR 2003 (10061)` | MySQL 服务未运行 | 启动 MySQL 服务(`sudo systemctl start mysql`) | | 同上 | `bind-address` 限制 | 修改配置文件为 `bind-address = 0.0.0.0` | | 同上 | 防火墙阻止端口 | 开放 Ubuntu 的 `3306` 端口 | | 同上 | 用户无远程权限 | 授权用户 `'user'@'%'` | | 同上 | 网络通 | 检查 IP 地址、子网掩码、路由设置 | --- ### **快速验证流程** 1. **Ubuntu 端** ```bash # 1. 检查服务状态 sudo systemctl status mysql # 2. 检查端口监听 sudo netstat -tuln | grep 3306 # 3. 检查防火墙规则 sudo ufw status ``` 2. **Windows 端** ```cmd :: 1. 测试网络连通性 ping 192.168.11.13 :: 2. 测试端口连通性 telnet 192.168.11.13 3306 ``` --- 按照以上步骤逐一排查,通常可以解决 `ERROR 2003 (10061)` 问题。如果仍无法连接,请提供具体操作后的错误反馈,以便进一步分析!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

微笑点燃希望

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值