外部工具/外网无法连接mysql本地数据库

本文详细介绍了当外部工具无法连接本地MySQL数据库时的解决步骤,包括检查IPv4地址、更新user表中的host字段、为不同host授权及刷新权限等方法。

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

问题: 外部工具无法连接mysql 本地数据库?

第一步:win+r : cmd   输入ipconfig  查看本地电脑上的ipv4地址

第二步:打开navicate.  将地址改为本地ip(ip为ipv4地址),

 第三步:点击“连接测试”,显示测试成功即可。

下面重点解决:外部工具无法访问本地myslq数据库

第一步: cmd ——》mysql -u root -p   ——》输入密码:******   进入到mysql

进入mysql之后千万不要盲目的去根据网上说的授权,改host为%等一顿猛操作,没用,这个问题我解决了半天,经验分享如下:

《主要操作mysql里面的user表》

第一步:先查看user表:select host,user from user;

方法一: 改user的host为%

第二步:把user用户对应的host改为%

update user set host=‘%’ where user =‘root’; 

第三步:为改过的%授权:

grant all privileges on *.* to 'root'@'%' with grant option;

第四步:刷新权限:(必须执行)

flush privileges;

测试看外网是否可以连接你本地的数据库,方法一不好使继续第二种方法:

方法二:新增一个你本地ipv4地址:

第一步:新增一个ipv4账号

create user ‘root’@'172.33.44.666' identified by '******'

注:172.33.44.666为cmd——》ipconfig出来的ipv4地址     ******为你设置的密码

第二步:查看新增的用户

select host,user from user;

( 红框出为新增成功的用户)

第三步:为新增的用户赋权

grant all privileges on *.* to 'root'@'19.22.34.343' with grant option;

第四步:刷新权限

flush privileges;

方法三:如果还是不行:静下心来仔细观察:我当时就卡在了这里:

第一步:查询user表

 select host,user from user;

问题所在如图所示:  user表中存在了2个root用户,一个用户的host为%;一个用户的host为localhost

(所以无论我们怎么授权怎么新增账户,怎么刷新权限都没用。必须把红框处的root的host改掉,然后问题就解决了)

解决办法: 把user为root,并且host为localhost的这个改掉,保留一个root账户的host为%就可以

第一步:先改user:

update user set user =‘User’ where host='localhost' and user='root';

(保证root用户名下只有一个host为%就可以了)

第二步:重新再为root和本地ip授权:

》为root授权

     grant all privileges on *.* to 'root'@'%' with grant option;

      刷新权限:flush privileges;

》为本地ip授权:

      grant all privileges on *.* to 'root'@'ip地址' with grant option;

      刷新权限:flush privileges 

 

到此为止:恭喜你,问题就彻底解决了,你又成长了一步,继续加油

 

### 宝塔面板连接本地 MySQL 数据库的配置方法 #### 1. 安装 MySQL 服务 在宝塔面板中,可以通过其内置的软件商店来安装 MySQL。具体步骤如下: - 登录宝塔面板,在左侧菜单栏选择 **“软件商店”**。 - 使用搜索功能输入 `MySQL`,找到对应版本(如 5.6 或其他版本),点击 **“安装”** 即可[^2]。 #### 2. 修改 Root 密码 为了安全性和后续管理方便,建议重置 MySQL 的 Root 用户密码。 - 打开终端或者 SSH 工具,执行以下命令登录 MySQL: ```bash mysql -u root -p ``` - 输入之前设置好的密码后,切换至 MySQL 库并更新 Host 权限: ```sql use mysql; update user set host = '%' where user='root'; flush privileges; ``` 上述操作允许 Root 用户从任意 IP 地址访问数据库[^2]。 #### 3. 新建数据库及导入数据 如果需要创建一个新的数据库用于存储项目数据,可以直接通过宝塔面板完成此过程。 - 在宝塔面板首页导航到 **“数据库”** 菜单。 - 点击右上角的 **“添加数据库”** 按钮,填写相关信息(名称、字符集等)提交即可[^3]。 - 若已有备份文件需恢复,则可在该新数据库的操作界面下选择 **“导入 SQL 文件”** 功能上传所需文件。 #### 4. 配置外网访问权限 为了让外部设备能够成功访问本地运行的 MySQL 实例,还需要进一步调整防火墙规则以及绑定监听地址为 `0.0.0.0`。 - 编辑 `/etc/mysql/my.cnf` (对于 CentOS 可能位于 `/etc/my.cnf`),定位到 `[mysqld]` 下面的部分,确认存在以下内容: ```ini bind-address=0.0.0.0 ``` - 如果未发现上述行,请手动添加;保存退出后再重启 MySQL 服务使其生效: ```bash service mysqld restart ``` #### 5. 测试连接 最后一步便是验证整个流程是否正常工作。推荐使用 Navicat 等图形化客户端尝试建立链接测试。 - 主机名/IP 设置为目标机器的实际公网IP; - 端口号一般保持默认值 `3306` 不变; - 用户名为刚才设定过的 `root` 或者其它具有相应权限的角色; - 密码即前面提到的新设密钥[^2]。 --- ### 注意事项 尽管以上步骤可以让 MySQL 开启对外暴露模式,但从安全性角度出发并不提倡长期开放重要生产环境下的此类接口。如有必要的话,考虑采用 SSL 加密传输或者其他更稳妥的技术手段比如反向代理等方式间接达成目标效果。 ```python import pymysql connection = pymysql.connect( host="your_server_ip", port=3306, user="root", password="your_password", database="test_db" ) try: with connection.cursor() as cursor: sql_query = "SELECT * FROM users LIMIT 1;" cursor.execute(sql_query) result = cursor.fetchone() finally: connection.close() print(result) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值