mysql本地訪问linuxserver,出现SQLSTATE[HY000] [1130] Host '127.0.0.1' is not allowed to connect to ...

本文介绍了如何通过修改MySQL的user表来解决远程访问的问题。具体步骤是在MySQL中运行GRANT命令,为指定用户赋予所有权限,使得该用户可以从任何主机连接到MySQL服务器。

解决方式:网上看了说。更改mysql库的user表,加入一条host为%的数据就能够。可是还是不行。

后来,直接登录mysql。给訪问加权限就能够了。

运行

[root@iZ25p77kem7Z ~]# GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' IDENTIFIED BY 'userpwd' WITH GRANT OPTION;


就能够了

<think>我们正在解决MySQL连接问题:错误1130-Host&#39;192.168.60.200&#39;isnotallowedtoconnecttothisMySQLserver原因分析:MySQL默认只允许localhost连接,远程主机需要单独授权。解决步骤:1.MySQL服务器上登录MySQL(确保在服务器本地)2.192.168.60.200主机创建用户并授权(或修改现有用户的host范围)3.刷新权限注意:如果用户已存在但只允许localhost,则需要修改该用户的host字段或新建用户。具体操作如下:步骤1:使用root用户登录MySQL服务器```bashmysql-uroot-p```步骤2:查看当前用户权限情况```sqlSELECTuser,hostFROMmysql.user;```步骤3:根据情况选择以下方案之一:方案A(推荐):创建新用户并授权(如果192.168.60.200需要连接)```sql--创建用户&#39;admin&#39;@&#39;192.168.60.200&#39;,并设置密码为&#39;password&#39;CREATEUSER&#39;admin&#39;@&#39;192.168.60.200&#39;IDENTIFIEDBY&#39;password&#39;;--授予该用户所需的权限(例如所有数据库的所有权限)GRANTALLPRIVILEGESON*.*TO&#39;admin&#39;@&#39;192.168.60.200&#39;;--刷新权限FLUSHPRIVILEGES;```方案B:修改已有用户的host(如果已有用户,但host不是192.168.60.200或%)```sql--例如将&#39;admin&#39;@&#39;localhost&#39;改为&#39;admin&#39;@&#39;192.168.60.200&#39;UPDATEmysql.userSEThost=&#39;192.168.60.200&#39;WHEREuser=&#39;admin&#39;ANDhost=&#39;localhost&#39;;--或改为允许任何主机(不推荐,存在安全风险)--UPDATEmysql.userSEThost=&#39;%&#39;WHEREuser=&#39;admin&#39;;--刷新权限FLUSHPRIVILEGES;```方案C:直接授权任意主机(如果安全要求不高,可以允许所有IP,使用%)```sqlCREATEUSER&#39;admin&#39;@&#39;%&#39;IDENTIFIEDBY&#39;password&#39;;GRANTALLPRIVILEGESON*.*TO&#39;admin&#39;@&#39;%&#39;;FLUSHPRIVILEGES;```步骤4:退出MySQL```sqlEXIT;```步骤5:检查MySQL服务器绑定的地址(确保监听在0.0.0.0192.168.60.200所在网段)编辑MySQL配置文件(通常为/etc/mysql/my.cnf或/etc/mysql/mysql.conf.d/mysqld.cnf)确保有:```bind-address=0.0.0.0```或者注释掉bind-address(默认监听所有接口)然后重启MySQL服务:```bashsudosystemctlrestartmysql```步骤6:防火墙检查(如果服务器有防火墙)开放3306端口:```bashsudoufwallow3306```完成上述步骤后,应该可以从192.168.60.200连接MySQL服务器。注意:如果使用云服务器,可能还需要在安全组中开放3306端口。引用说明:上述操作中修改用户权限和配置文件的步骤是解决该问题的标准方法[^1]。###常见问题排查:1.如果仍然无法连接,检查错误日志(通常在/var/log/mysql/error.log)获取详细信息。2.使用`netstat-tulnp|grepmysql`检查MySQL是否监听在正确的地址和端口。§§相关问题§§1.如何创建只读权限的MySQL用户?2.MySQL如何限制特定IP访问?3.如何修改MySQL用户的密码?4.MySQL配置文件常用参数有哪些?5.如何备份和恢复MySQL数据库?</think> 针对 MySQL 错误 `Host &#39;192.168.60.200&#39; is not allowed to connect`,本质是该 IP 未被授权访问数据库服务器。以下是完整解决方案: --- ### 解决步骤(在 MySQL 服务器操作) 1. **登录 MySQL 本地终端** 在数据库服务器执行(需 root 权限): ```bash mysql -u root -p ``` 2. **创建远程访问用户并授权** ```sql -- 创建新用户(推荐) CREATE USER &#39;admin&#39;@&#39;192.168.60.200&#39; IDENTIFIED BY &#39;your_password&#39;; -- 授权所有权限(按需调整) GRANT ALL PRIVILEGES ON *.* TO &#39;admin&#39;@&#39;192.168.60.200&#39;; -- 或授权特定数据库(更安全) -- GRANT ALL PRIVILEGES ON your_database.* TO &#39;admin&#39;@&#39;192.168.60.200&#39;; -- 刷新权限 FLUSH PRIVILEGES; ``` 3. **修改绑定地址(关键步骤)** 编辑 MySQL 配置文件: ```bash sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf ``` 修改为: ```ini bind-address = 0.0.0.0 # 允许所有IP连接 # 或 bind-address = 192.168.60.0/24 # 允许整个网段 ``` 保存后重启服务: ```bash sudo systemctl restart mysql ``` 4. **防火墙开放端口** 允许 3306 端口: ```bash sudo ufw allow 3306 sudo ufw reload ``` 5. **从 192.168.60.200 测试连接** ```bash mysql -h [服务器IP] -u admin -p ``` --- ### 排查技巧 1. **验证用户权限** ```sql SELECT user, host FROM mysql.user; SHOW GRANTS FOR &#39;admin&#39;@&#39;192.168.60.200&#39;; ``` 2. **检查网络连通性** ```bash # 在客户端执行 telnet [服务器IP] 3306 ``` 3. **查看错误日志定位问题** ```bash sudo tail -f /var/log/mysql/error.log ``` --- ### 安全建议 1. 使用强密码(12位以上含特殊字符) 2. 限制访问 IP 范围(避免使用 `&#39;%&#39;`) 3. 定期审计用户权限 ```sql SELECT * FROM mysql.user WHERE host LIKE &#39;192.168.60.%&#39;; ``` > **注意**:云服务器(如 AWS/Aliyun)还需在控制台安全组开放3306端口[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值