配置mysql使其允许外部ip进行登录

本文介绍如何配置MySQL数据库以允许从外部IP进行远程访问。主要内容包括使用命令行工具修改权限设置,确保可以从任何IP地址访问数据库。

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

这两天在做一个数据库的项目,用到了mysql,需要通过外部的ip远程访问mysql,发现默认的mysql是不允许远程访问的,需要做简单的配置。

如下:

1. 打开一个终端(cmd)输入

 mysql -u用户名 -p密码

#(如果说没有mysql命令的话,你就到到mysql的bin目录下去执行)  

2. 分配权限:  

grant all  privileges on *.* to '登录名'@'%' identified by  '登录名密码';

#说明 这里只是简单的讲所有权限分配给所有外部ip访问,其实这是不符合安全原则的,但是能解决问题。

#'登录名'@'%'  是指登录这个mysql的用户名,%是指任意ip,如果只是指定某个特定ip直接写ip即可。如 192.168.1.111

3.刷新一下权限  

flush privileges;

转载于:https://www.cnblogs.com/wangleiblog/p/5347128.html

<think>好的,用户想配置MySQL允许本地IP进行远程连接。首先,我需要回忆一下相关的配置步骤。根据之前看过的引用资料,通常需要修改MySQL配置文件,调整绑定地址和网络设置。然后,还要在数据库中为用户授权远程访问的权限。 首先,配置文件的位置可能在/etc/mysql/mysql.conf.d/mysqld.cnf或者/etc/my.cnf,用户需要找到bind-address这个参数。默认情况下,它可能设置为127.0.0.1,只允许本地连接。要允许本地IP远程连接,应该把它改成0.0.0.0或者注释掉这一行。不过,用户可能担心这样会开放所有IP,但结合后面的授权步骤,应该没问题。同时要检查skip-networking是否被启用,如果开启的话会禁用网络连接,必须确保它是关闭的。 接下来是数据库权限部分。根据引用3和4,需要通过GRANT语句给用户授权,允许从特定IP连接。比如使用GRANT ALL PRIVILEGES ON *.* TO 'user'@'ip' IDENTIFIED BY 'password'; 这里需要注意MySQL8之后的版本加密方式不同,可能需要先创建用户再授权,或者更改加密插件。如果用户用的是旧版本客户端,可能需要调整密码加密方式,比如使用mysql_native_password。 另外,引用5提到MySQL8的加密规则变化,如果用户遇到连接问题,可能需要修改用户的密码插件或者更新客户端工具。比如在创建用户时指定使用mysql_native_password,或者更新Navicat等工具到支持新加密规则的版本。 用户的问题是关于本地IP的远程连接,可能是指同一网络内的其他机器,或者本地其他服务通过IP访问。需要明确的是,即使在同一台机器上,如果使用本地IP(如192.168.x.x)而非127.0.0.1,也需要授权。所以步骤应该是先改bind-address允许监听外部连接,然后创建或修改用户的主机为特定IP或%,并刷新权限。 最后,防火墙设置也可能影响连接,需要检查iptables或firewalld是否放行了3306端口。但用户的问题可能已经排除了防火墙因素,或者需要另外处理。不过根据引用内容,用户可能更关注MySQL本身的配置,所以可能不需要深入讨论防火墙部分,但可以提及作为补充。 总结步骤:修改配置文件允许监听所有IP,确保网络连接启用,创建或修改用户权限,处理可能的加密问题,最后重启服务并测试连接。</think>### 如何配置 MySQL 允许本地 IP 地址进行远程连接? #### 步骤 1:修改 MySQL 配置文件 1. 找到 MySQL 配置文件,通常位于以下路径之一: - `/etc/mysql/mysql.conf.d/mysqld.cnf` - `/etc/mysql/my.cnf` - `/etc/my.cnf` [^1] 2. 修改 `bind-address` 参数: - 将 `bind-address = 127.0.0.1` 改为 `bind-address = 0.0.0.0`(允许所有 IP 连接)或注释此行(`#bind-address = 127.0.0.1`)。 - 若仅允许本地 IP(如 `192.168.1.100`),需结合防火墙规则限制。 3. 检查 `skip-networking` 参数: - 确保该参数未被启用(若存在则注释掉 `#skip-networking`)[^1]。 #### 步骤 2:授予远程访问权限 1. 登录 MySQL 服务器: ```bash mysql -u root -p ``` 2. 创建或修改用户权限: - **允许特定 IP(例如 `192.168.1.100`)连接**: ```sql -- MySQL 8.0 以下版本 GRANT ALL PRIVILEGES ON *.* TO '用户名'@'192.168.1.100' IDENTIFIED BY '密码' WITH GRANT OPTION; -- MySQL 8.0 及以上版本(需分开创建用户和授权) CREATE USER '用户名'@'192.168.1.100' IDENTIFIED WITH mysql_native_password BY '密码'; GRANT ALL PRIVILEGES ON *.* TO '用户名'@'192.168.1.100'; ``` - **允许所有 IP 连接**(生产环境不推荐): ```sql UPDATE mysql.user SET Host='%' WHERE Host='localhost' AND User='用户名'; FLUSH PRIVILEGES; ``` [^2][^4] 3. 刷新权限: ```sql FLUSH PRIVILEGES; ``` #### 步骤 3:处理加密规则(仅限 MySQL 8.0+) 若客户端工具(如旧版 Navicat)不支持 `caching_sha2_password`,需修改用户加密方式: ```sql ALTER USER '用户名'@'192.168.1.100' IDENTIFIED WITH mysql_native_password BY '密码'; ``` [^5] #### 步骤 4:重启 MySQL 服务 ```bash systemctl restart mysql # 或 service mysql restart ``` #### 步骤 5:验证连接 使用以下命令从本地 IP 测试连接: ```bash mysql -h 服务器IP -u 用户名 -p ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值