mysql8.0远程访问配置

本文详细介绍了如何配置MySQL8.0以实现远程访问,包括修改bind-address配置、授予远程访问权限及检查端口和防火墙设置。

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

最近在ubuntu上配置MySQL的数据库,配置过程非常简单,但是配置之后却发现无法通过Navicat进行访问,查阅了很多博客,但是基本都是针对Mysql8.0以前的版本进行介绍,即使个别介绍的是MySQL8.0的配置,在实际操作过程中,也发现无法解决问题,特写此博客防止大家踩坑。

一、修改bind-address

参考很多博客,都表示访问配置文件/etc/mysql/my.conf,但在8.0中,其已经不在my.conf中,具体修改方式为

cd /etc/mysql
vim mysql.conf.d

进入之后可以看到如下内容
在这里插入图片描述
移动光标到mysqld.cnf,单机回车,可以看到

bind-address          = 127.0.0.1

在前面加 # 注释掉即可
使用service mysql restart或者systemctl restart mysql.service重启MySQL服务

二、授予远程访问权限

在Console输入

mysql -uroot -p

之后输入密码再运行

use mysql
select user,host,plugin from user;

可以发现 root 的 host 为localhost,这意味着只能通过本地访问,而无法通过远程对数据库进行访问
使用下面两种进行配置

GRANT ALL ON *.* TO 'root'@'%' IDENTIFIED BY 'yourpassword';
FLUSH PRIVILEGES;

update user set host = '%' where user = 'root';
FLUSH PRIVILEGES;

之后再次查询,可以看到
在这里插入图片描述
意味着权限已经修改成功。
如果出于安全考虑,不想授予 root 对外访问权限,可以先创建新的账户,再参照 root 的方法执行,在此不赘述

三、检查端口和防火墙

netstat -an | grep 3306

若显示下图,则端口已经开启
在这里插入图片描述
如果使用 firewalld 防火墙,则输入

firewall-cmd --zone=public --list-ports

查看是否包含3306端口,如果不包含,则输入

firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload

必须包含 --permanent 才能永久生效

如果使用 iptables 防火墙,则输入下列命令来开启端口

iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
### 配置 MySQL 8.0 实现远程连接 为了使 MySQL 8.0 支持远程连接,需按照特定流程调整服务器配置并赋予相应用户的适当权限。 #### 修改用户权限 进入 MySQL 控制台后,切换至 `mysql` 数据库: ```sql USE mysql; ``` 更新目标用户的主机字段以便接受来自任何 IP 地址的请求: ```sql UPDATE user SET host = '%' WHERE user = 'root'; ``` 刷新权限以应用更改: ```sql FLUSH PRIVILEGES; ``` 授予指定用户全局范围内的全部操作权限,并启用授予权限功能: ```sql GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; ``` 再次刷新权限确保最新设置生效[^5]。 #### 编辑 my.cnf 文件 找到 MySQL配置文件 `my.cnf` 或者 `my.ini`(视操作系统而定),通常位于 `/etc/mysql/` 或 `/etc/my.cnf.d/server.cnf` 下。编辑此文件中的 `[mysqld]` 节点部分,取消绑定地址限制或将其更改为服务器的实际公网 IP: ```ini bind-address=0.0.0.0 ``` 保存修改后的配置文件并退出编辑器[^1]。 #### 设置防火墙规则 确认系统的防火墙已开放 MySQL 默认端口 (3306) ,对于 Linux 系统可利用命令行工具如 ufw 添加新规则: ```bash sudo ufw allow 3306/tcp ``` 对于 Windows Server,则通过高级安全Windows Defender防火墙界面新增入站规则来放通TCP协议下的3306端口号[^2]。 #### 重启 MySQL 服务 最后一步是重新启动 MySQL 服务使得上述所有改动能够立即起效,在Linux上可以通过以下命令完成这项工作: ```bash sudo systemctl restart mysqld.service ``` 而在 Windows 上则应该前往“服务”管理器里右键点击 MySQL 对应的服务项选择“重启”。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值