Host is not allowed to connect to this MySQL server解决方法

本文介绍了解决MySQL远程登录失败的方法,通过更新MySQL配置允许root用户从任何主机连接,并提供了具体的SQL语句实现步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先说说这个错误,其实就是我们的MySQL不允许远程登录,所以远程登录失败了,解决方法如下:

  1. 在装有MySQL的机器上登录MySQL mysql -u root -p密码
  2. 执行use mysql;
  3. 执行update user set host = '%' where user = 'root';这一句执行完可能会报错,不用管它。
  4. 执行FLUSH PRIVILEGES;

    经过上面4步,就可以解决这个问题了。 

    注: 第四步是刷新MySQL的权限相关表,一定不要忘了,我第一次的时候没有执行第四步,结果一直不成功,最后才找到这个原因。

这个方法虽然好,但是也有弊端,会导致远程连接可以正常使用,但是本地连接数据库,会出现问题,原先的密码不能使用,只能无密码登陆并且mysql库也会消失。所以最好的解决办法是再插入一行新的数据。

INSERT INTO `user`(`Host`,`User`,`Password`,`Select_priv`,`Insert_priv`,`Update_priv`,`Delete_priv`,`Create_priv`,`Drop_priv`,`Reload_priv`,`Shutdown_priv`,`Process_priv`,`File_priv`,`Grant_priv`,`References_priv`,`Index_priv`,`Alter_priv`,`Show_db_priv`,`Super_priv`,`Create_tmp_table_priv`,`Lock_tables_priv`,`Execute_priv`,`Repl_slave_priv`,`Repl_client_priv`,`Create_view_priv`,`Show_view_priv`,`Create_routine_priv`,`Alter_routine_priv`,`Create_user_priv`,`Event_priv`,`Trigger_priv`,`Create_tablespace_priv`,`ssl_type`,`ssl_cipher`,`x509_issuer`,`x509_subject`,`max_questions`,`max_updates`,`max_connections`,`max_user_connections`,`plugin`,`authentication_string`,`password_expired`) VALUES ('%','root','*8C48DD8205BBCB00A411027FA700CD9F550FE876','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0,'','','N');

### 解决 'Host is not allowed to connect to this MySQL server' 错误 当尝试通过远程客户端访问MySQL服务器时,可能会遇到“Host is not allowed to connect to this MySQL server”的错误提示。这通常是因为MySQL服务器配置限制了特定IP地址或主机名的连接权限。 #### 配置用户权限 为了允许来自指定主机的连接,需确保已创建具有适当权限的MySQL用户账户,并授予其从所需位置连接的权利: 1. 登录到MySQL数据库作为管理员: ```sql mysql -p ``` 2. 创建新用户并授予权限: ```sql CREATE USER 'username'@'%' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON *.* TO 'username'@'%'; FLUSH PRIVILEGES; ``` 上述命令中的`%`表示任何地方都可以连接;如果仅希望某些特定IP能够连接,则应替换为具体的IP地址[^1]。 #### 修改防火墙设置 还需确认操作系统层面的安全策略不会阻止外部请求到达MySQL端口(默认3306)。对于Linux系统而言,可能需要调整iptables规则来开放该端口: ```bash sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT ``` 另外,部分云服务提供商也会有额外的安全组规则需要相应修改以放通入站流量[^4]。 #### 更新my.cnf文件绑定地址 有时,默认情况下mysqld只监听localhost接口。编辑/etc/mysql/my.cnf (Debian/Ubuntu) 或 /etc/my.cnf(RedHat/CentOS),找到如下行并将bind-address更改为实际外网IP或是0.0.0.0代表接受所有网络接口上的连接请求: ```ini [mysqld] ... bind-address = 0.0.0.0 ``` 完成更改后重启MySQL服务使改动生效[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值