***MySQL错误:Can't connect to MySQL server (10060)

当远程连接MySQL数据库的时候显示Can't connect to MySQL server (10060),我们从以下几个方面入手,找出错误的原因:

1.网络不通。

检查能不能ping通。

2.防火墙设置。这个可能性也很大,优先排查这个

防火墙是否放过mysql的进程,是否屏蔽了mysql的3306端口。

方法:

防火墙开放3306端口

1、打开防火墙配置文件

?
1
vi  /etc/sysconfig/iptables

2、增加下面一行

?
1
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT

3、重启防火墙

?
1
service  iptables restart

3.mysql的账户设置。

mysql账户是否不允许远程连接。如果无法连接可以尝试以下方法:

  1. mysql -u root -p    //登录MySQL  
  2.  
  3. mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'WITH GRANT OPTION;     //任何远程主机都可以访问数据库  
  4.  
  5. mysql> FLUSH PRIVILEGES;    //需要输入次命令使修改生效  
  6.  
  7. mysql> EXIT    //退出 

也可以通过修改表来实现远程:

  1. mysql -u root -p  
  2.  
  3. mysql> use mysql;  
  4.  
  5. mysql> update user set host = '%' where user = 'root';  
  6.  
  7. mysql> select host, user from user; 

其实错误的原因也不外乎以上几个方面,相信按照上面的思路找出原因,定能将问题解决掉

 


 

linux下mysql开启远程访问权限及防火墙开放3306端口

报错:1130-host ... is not allowed to connect to this MySql server

解决方法:

1。 改表法。

可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改称"%"

mysql -u root -pvmwaremysql>use mysql;

mysql>update user set host = '%' where user = 'root';

mysql>select host, user from user;

2. 授权法。

例如,你想myuser使用mypassword从任何主机连接到mysql服务器的话。

GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

FLUSH   PRIVILEGES;

如果你想允许用户myuser从ip为192.168.1.6的主机连接到mysql服务器,并使用mypassword作为密码

GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.3' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

FLUSH   PRIVILEGES;

如果你想允许用户myuser从ip为192.168.1.6的主机连接到mysql服务器的dk数据库,并使用mypassword作为密码

GRANT ALL PRIVILEGES ON dk.* TO 'myuser'@'192.168.1.3' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

FLUSH   PRIVILEGES;

我用的第一个方法,刚开始发现不行,在网上查了一下,少执行一个语句 mysql>FLUSH RIVILEGES 使修改生效.就可以了

另外一种方法,不过我没有亲自试过的,在youkuaiyun.com上找的,可以看一下.

在安装mysql的机器上运行:

1、d:\mysql\bin\>mysql   -h   localhost   -u   root //这样应该可以进入MySQL服务器

2、mysql>GRANT   ALL   PRIVILEGES   ON   *.*   TO   'root'@'%' IDENTIFIED BY 'root's password'  WITH   GRANT   OPTION //赋予任何主机访问数据的权限

3、mysql>FLUSH   PRIVILEGES //修改生效

4、mysql>EXIT //退出MySQL服务器

这样就可以在其它任何的主机上以root身份登录啦!

 

报错:2003-can't connect to mysql server on ' ' (10038)

出现这个错误的原因是:远程3306端口未对外开放

 

防火墙开放3306端口

1、打开防火墙配置文件

?
1
vi  /etc/sysconfig/iptables

2、增加下面一行

?
1
-A INPUT -m state  --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT

3、重启防火墙

?
1
service  iptables restart
<think>我们正在解决ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost:3306' (10061)的问题。这个错误通常表示客户端无法连接到MySQL服务器。根据引用资料,我们可以总结出以下步骤和方法: 1. 确保以管理员身份运行命令提示符(非常重要)[^3]。 2. 检查MySQL服务是否启动:在命令提示符中输入`net start mysql`,如果服务未启动,则尝试启动它。 3. 如果服务未安装,需要先安装MySQL服务:切换到MySQL安装目录的bin文件夹下,运行`mysqld --install`(或`mysqld --install mysql`)[^3][^4]。 4. 对于MySQL 8版本,可能需要初始化数据目录:在bin目录下运行`mysqld --initialize-insecure --user=mysql`(注意:`--initialize-insecure`会创建一个空密码的root账户,适合本地开发环境)[^4]。 5. 再次尝试启动服务:`net start mysql`。 6. 如果之前安装过MySQL,可能存在残留服务,可以尝试移除旧服务:`mysqld -nt-remove`(或`sc delete mysql`)[^3],然后重新安装。 另外,还需要检查: - MySQL服务器是否正在运行(通过任务管理器或服务管理器查看)。 - 是否使用了正确的端口(默认3306)和主机名(localhost)。 - 防火墙是否阻止了连接(暂时关闭防火墙测试)。 如果按照以上步骤仍然无法解决,可能需要检查MySQL的配置文件(my.ini或my.cnf)是否正确,特别是绑定地址(bind-address)和端口设置。 下面将详细步骤整理如下:</think>### 解决ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost:3306' (10061)错误表明MySQL客户端无法连接到本地MySQL服务器,通常由服务未启动或配置问题引起。以下是系统化的解决步骤: #### 1. **检查MySQL服务状态** - 以管理员身份运行命令提示符 - 执行命令: ```bash net start mysql ``` - 若显示"服务正在运行",进入步骤3;若显示"服务未启动",继续下一步 #### 2. **启动MySQL服务** ```bash # 安装MySQL服务(首次安装需执行) mysqld --install mysql # 初始化数据目录(MySQL 8+必需) mysqld --initialize-insecure --user=mysql # 启动服务 net start mysql ``` > 注意:`--initialize-insecure`会创建空密码的root账户,仅限本地开发环境使用[^4] #### 3. **验证端口占用** ```bash netstat -ano | findstr :3306 ``` - 若3306端口无监听记录,需检查MySQL配置文件`my.ini`中的`port`设置 - 若被其他进程占用(PID非MySQL),执行`taskkill /PID <占用进程PID> /F` #### 4. **检查防火墙设置** - 临时关闭防火墙测试: ```bash netsh advfirewall set allprofiles state off ``` - 若连接恢复,需在防火墙添加规则: ```bash netsh advfirewall firewall add rule name="MySQL" dir=in action=allow protocol=TCP localport=3306 ``` #### 5. **处理残留服务冲突** 若曾安装过旧版MySQL: ```bash # 移除旧服务 sc delete mysql mysqld -nt-remove # 清理注册表 reg delete "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\mysql" /f ``` #### 6. **配置文件检查** 在`my.ini`中确认关键配置: ```ini [mysqld] port=3306 bind-address=0.0.0.0 # 允许所有IP连接 skip-grant-tables # 紧急修复时临时添加(修复后需移除) ``` #### 7. **连接测试** 服务启动后执行: ```bash mysql -uroot -p ``` - 若提示密码:按回车(空密码)或输入配置的密码 - 若仍失败:检查`error.log`(通常在data目录) > **注意**:操作全程需管理员权限,MySQL 8+必须执行`--initialize-insecure`初始化[^4]。生产环境务必设置root密码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值