设置mysql允许外网访问

设置mysql允许外网访问


mysql的root账户,我在连接时通常用的是localhost或127.0.0.1,公司的测试服务器上的mysql也是localhost所以我想访问无法访问,测试暂停.


解决方法如下:


1,修改表,登录mysql数据库,切换到mysql数据库,使用sql语句查看"select host,user from user ;"


mysql -u root -pvmwaremysql>use mysql;
mysql>update user set host = '%' where user ='root';
mysql>select host, user from user;
mysql>flush privileges;


注意:最后一句很重要,目的是使修改生效.如果没有写,则还是不能进行远程连接.


2,授权用户,你想root使用密码从任何主机连接到mysql服务器


GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'  IDENTIFIED BY 'admin123'  WITH GRANT OPTION;
flush privileges;




如果你想允许用户root从ip为192.168.1.104的主机连接到mysql服务器


GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.104'   IDENTIFIED BY 'pwdnolan'  WITH GRANT OPTION; 
flush privileges;
### 配置 MySQL 允许外网访问 #### 修改防火墙设置 为了使外部设备能够连接到本地运行的 MySQL 服务,需确保防火墙配置允许外部流量进入 MySQL 默认使用的端口(通常是3306)。对于 macOS 用户来说,如果使用的是 `ufw` 这样的防火墙工具,则可以通过执行如下命令来开放该端口: ```bash sudo ufw allow mysql ``` 此命令会创建一条规则让防火墙接受针对 MySQL 的入站请求[^1]。 #### 调整 MySQL 用户权限 默认情况下,MySQL 安装后的 root 用户仅限于 localhost 登录。为了让其他机器上的客户端能成功建立连接,需要修改对应用户的主机字段。具体做法是在目标服务器上登录 MySQL 控制台并执行 SQL 命令更新 user 表中的 host 列值为 `%` ,这表示任何 IP 地址都可以作为来源地址尝试连接数据库实例: ```sql USE mysql; UPDATE user SET Host='%' WHERE User='root'; FLUSH PRIVILEGES; -- 应用更改 EXIT; ``` 上述操作使得指定账户可以从任意位置发起连接请求[^2]。 #### 处理 Docker 中的 MySQL 实例 当 MySQL 是在一个 Docker 容器内运行时,除了调整容器内部的安全性和网络参数之外,还需要考虑宿主机层面的因素。通常,在启动容器的时候就要指明映射关系以便暴露必要的端口号给外界,并且可能还要编辑 `/etc/mysql/my.cnf` 或者相应配置文件内的 bind-address 参数使其监听所有可用接口而不是仅仅绑定至 loopback 接口(即127.0.0.1)[^3]。 请注意安全风险:开启远程访问可能会增加潜在攻击面;因此建议采取适当措施保护敏感数据和服务免受未授权访问的影响。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值