开放mysql远程连接 不使用localhost

本文介绍如何配置MySQL数据库,以允许从任何主机进行远程SQL连接。首先通过SQL命令授予root用户全局访问权限,然后刷新权限使其立即生效。

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

客户端与服务端的sql连接

1、赋予任何主机访问数据的权限

GRANT   ALL   PRIVILEGES   ON   *.*   TO   'root'@'%'   WITH   GRANT   OPTION;

2、修改生效

FLUSH   PRIVILEGES

 

### 解决 MySQL 远程连接失败的方法 #### 修改 MySQL 配置文件 对于 MySQL 默认只允许本地主机访问的情况,在配置文件 `my.cnf` 或者 `/etc/mysql/mysql.conf.d/mysqld.cnf` 文件中存在绑定地址设置 bind-address = 127.0.0.1,这使得 MySQL 只监听来自 localhost 的请求。为了使 MySQL 能够接受远程连接,可以尝试注释掉该行或将 IP 地址更改为服务器的实际公网IP或0.0.0.0表示接受任何来源的连接[^3]。 ```bash # 注释此行以允许外部连接 # bind-address = 127.0.0.1 ``` #### 开放防火墙端口 如果目标机器位于云环境中(如阿里云),还需要确认安全组规则已开放必要的 MySQL 端口号,默认情况下为3306。可以通过控制台界面添加入站规则来允许特定源IP地址范围内的流量到达指定端口[^4]。 #### 用户权限管理 当遇到类似于 "ERROR 1130 (HY000): Host 'xxx' is not allowed to connect..." 错误提示时,意味着当前用户缺乏足够的权限来进行远程访问。此时应该登录到具有管理员权限的账户下执行如下命令授予新用户的相应权限: ```sql GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' IDENTIFIED BY 'password'; FLUSH PRIVILEGES; ``` 上述 SQL 语句中的 `%` 表示匹配任意客户端主机名;也可以替换为具体的 IP 地址或者域名以便更加精确地控制哪些设备能够建立连接[^1]。 #### 关闭名称解析功能 有时由于 DNS 查找过程缓慢或者其他网络因素的影响可能会导致连接超时等问题发生。可以在 mysqld 部分追加参数 `skip-name-resolve` 来禁用基于主机名的身份验证机制从而加快响应速度并减少潜在错误的发生几率[^2]。 ```ini [mysqld] skip-name-resolve ``` 完成以上更改之后记得保存修改过的配置文档并且重启 MySQL 服务让改动生效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值