虚拟机Ubuntu下Mysql外网访问注意事项

本文指导如何在Ubuntu虚拟机上配置MySQL以实现对外网的访问,包括关闭防火墙、分配访问权限、检查端口状态、配置my.cnf文件、分配远程用户权限等步骤。

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

虚拟机Ubuntu上Mysql外网访问注意事项

1.安装完mysql后,若想其他机器访问虚拟机上mysql首先应关闭Ubuntu防火墙

    sudo ufw disable
在redhat中使用service iptables stop关闭防火墙
2.需要给mysql用户分配访问权限
   > grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
   > flush privileges;
1.首先保证mysql在192.168.1.11上监听,lsof -i:3306
2.防火墙允许访问3306端口
3.授权访问,比如从windows下以testuser访问所有数据库,密码也是testuser 现在linux的mysql授权
GRANT ALL PRIVILEGES ON *.* TO 'testuser'@'192.168.1.%' IDENTIFIED BY 'testuser';
FLUSH PRIVILEGES;
防火墙的设置可以访问以下网址
http://www.cnblogs.com/jiangyao/archive/2010/05/19/1738909.html
3.如果以上方法还不行,我们就要改这个配置了

1). 3306端口是不是没有打开?

使用nestat命令查看3306端口状态:

~# netstat -an | grep 3306

tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN

从结果可以看出3306端口只是在IP 127.0.0.1上监听,所以拒绝了其他IP的访问。

解决方法:修改/etc/mysql/my.cnf文件。打开文件,找到下面内容:

# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address  = 127.0.0.1

把上面这一行注释掉或者把127.0.0.1换成合适的IP,建议注释掉。

重新启动后,重新使用netstat检测:

~# netstat -an | grep 3306
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN

2). 问题解决了吗?

现在使用下面命令测试:

 ~# mysql -h 10.1.1.2 -u root -p
Enter password:
ERROR 1130 (00000): Host 'B0324-Desktop.local' is not allowed to connect to this MySQL server

结果出乎意料,还是不行。

解决方法:原来还需要把用户权限分配各远程用户。

登录到mysql服务器,使用grant命令分配权限

mysql> grant all on database_name.* to user_name@'%' identified by 'user_password';

其中database_name、user_name和user_password根据实际情况设置。

完成后使用mysql命令连接,提示成功,为了确保正确可以再远程登陆测试一下。

### 虚拟机上使用 Navicat 进行数据库查找操作 要在虚拟机环境中通过 Navicat 执行数据库查找操作,需先完成以下配置: #### 1. 确认网络连通性 确保宿主机与虚拟机之间的网络通信正常。如果遇到 `Can't connect to MySQL server (10060)` 的错误,则可能是由于防火墙阻止了连接请求或目标 IP 地址未被授权访问数据库服务[^1]。 - **检查防火墙设置** 在 Ubuntu 虚拟机中运行命令以允许特定端口(如自定义的 5006 或默认的 3306)流量: ```bash sudo ufw allow 5006/tcp ``` - **确认 MySQL 配置文件** 编辑 `/etc/mysql/my.cnf` 文件,找到并修改绑定地址为 `bind-address = 0.0.0.0`,从而让 MySQL 接受来自任何外部 IP 的连接请求[^4]。 #### 2. 创建远程用户权限 MySQL 数据库需要显式授予远程用户的访问权限。执行如下 SQL 命令来创建新用户或将现有用户赋予远程访问权: ```sql CREATE USER 'your_user'@'%' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON *.* TO 'your_user'@'%'; FLUSH PRIVILEGES; ``` 上述语句中的 `'%'` 表示该用户可以从任意 IP 访问数据库;实际应用中建议替换为具体的客户端 IP 地址以提高安全性。 #### 3. 设置 Navicat 参数 按照引用描述,在 Navicat 中新建连接时指定正确的参数组合[^2]: - 主机名/IP 地址应填写虚拟机的实际外网可达地址(例如 `192.168.2.102`) - 使用之前设定好的用户名及其对应的密码登录 - 如果更改过默认端口号,请记得同步调整至新的数值(此处设为了 5006) #### 4. 测试查询功能 成功建立链接之后就可以利用 Navicat 提供的各种工具来进行数据检索工作了。打开查询编辑器窗口输入标准 SELECT 语法即可实现基本的数据读取需求。 ```sql SELECT column_name FROM table_name WHERE condition; ``` ### 注意事项 对于 MongoDB 数据库的情况,虽然也支持通过 Navicat 来管理文档型存储结构,但是其具体部署流程略有差异,涉及到 Docker 容器技术的应用等内容则参照其他相关资料处理[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值