当前位置: 首页 > article >正文

本机如何连接虚拟机MYSQL

要让本机(主机)连接到虚拟机上的 MySQL 数据库,你需要确保虚拟机和主机之间的网络连接正常,并且 MySQL 配置允许外部连接。以下是实现本机连接虚拟机 MySQL 的步骤:

步骤 1:确认虚拟机与本机的网络连接

  1. 确认虚拟机和主机在同一网络中

    • 如果虚拟机是使用 桥接模式(Bridge Mode)host-only 网络模式(Host-Only Network),则主机和虚拟机会在同一个网络中,通常可以直接连接。
    • 如果是使用 NAT 模式,可能需要做额外的端口转发,才能让虚拟机能被主机访问。
  2. 获取虚拟机的 IP 地址: 在虚拟机中执行以下命令来获取 IP 地址:

    ip addr show

    或者

    ifconfig

    获取到类似 192.168.x.x10.x.x.x 这样的 IP 地址。

步骤 2:配置 MySQL 允许外部连接

默认情况下,MySQL 只允许 localhost(即本地连接)进行连接。为了允许外部(即本机)连接,需要对 MySQL 配置进行一些修改。

  1. 修改 MySQL 配置文件

    • 打开 MySQL 配置文件 my.cnf(在大多数 Linux 系统中,文件路径通常是 /etc/mysql/my.cnf/etc/my.cnf)。

      sudo vi /etc/my.cnf
  2. 查找并修改 bind-address: 找到 bind-address 配置项,修改为 0.0.0.0,以允许从任意 IP 地址连接:

    bind-address = 0.0.0.0
  3. 允许远程用户连接: 确保 MySQL 用户可以通过远程连接访问数据库。你需要修改 MySQL 用户权限,让用户能够从其他主机连接。

    登录 MySQL:

    mysql -u root -p

    然后授予用户远程连接权限:

    GRANT ALL PRIVILEGES ON *.* TO 'your_username'@'%' IDENTIFIED BY 'your_password'; 
    FLUSH PRIVILEGES;

    这条命令的含义:

    • 'your_username' 是你用来连接 MySQL 的用户名。
    • '%' 表示允许任何 IP 地址连接,如果你想限制特定 IP,可以将 % 替换为具体的 IP 地址,如 '192.168.x.x'
    • 'your_password' 是该用户的密码。
  4. 如果出现 “ERROR 1819 (HY000): Your password does not satisfy the current policy requirements” 错误。这是因为不符合mysql的密码设置规范,原因可能因为密码设置的过于简单报错。如果想要查看MySQL完整的初始密码规则,登陆后执行以下命令: SHOW VARIABLES LIKE ‘validate_password',

    密码的长度是由validate_password_length决定的,但是可以通过以下命令修改

    set global validate_password_length=4;

    validate_password_policy  决定密码的验证策略,默认等级为MEDIUM(中等),可通过以下命令修改为LOW(低)

    set global validate_password_policy=0;

    修改完成后密码就可以设置的很简单,比如1234之类的。

  5. 重启 MySQL 服务: 修改配置后,需要重启 MySQL 服务使配置生效:

    sudo systemctl restart mysqld

步骤 3:检查防火墙设置

如果虚拟机上启用了防火墙,确保 MySQL 的端口(默认是 3306)已经开放。

  1. 检查防火墙规则: 查看是否有规则阻止连接:

    sudo firewall-cmd --list-all

  2. 允许 3306 端口: 如果防火墙阻止了 3306 端口,可以运行以下命令允许该端口通过防火墙:

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

通过以上步骤,你应该能够从本机连接到虚拟机上的 MySQL 数据库。


http://www.kler.cn/a/449687.html

相关文章:

  • 用 gdbserver 调试 arm-linux 上的 AWTK 应用程序
  • C++ OpenGL学习笔记(4、绘制贴图纹理)
  • GitCode 光引计划投稿|JavaVision:引领全能视觉智能识别新纪元
  • lodash常用函数
  • Docker Compose 安装 Harbor
  • java全栈day20--Web后端实战(Mybatis基础2)
  • 深入了解 Kubernetes Pod 的状态
  • StarRocks 生产部署一套集群,存储空间如何规划?
  • 【MySQL初阶】--- 库和表的操作
  • (2024.12)Ubuntu20.04安装openMVS<成功>.colmap<成功>和openMVG<失败>记录
  • gitlab克隆仓库报错fatal: unable to access ‘仓库地址xxxxxxxx‘
  • 【国产NI替代】基于国产FPGA+兆易创新GD32F450的全国产16振动+2转速(24bits)高精度终端采集板卡
  • DeepFaceLab技术浅析(五):面部替换
  • Git(9)之创建新空白分支
  • 【爬虫开发】爬虫开发从0到1全知识教程第11篇:Mongodb数据库,介绍【附代码文档】
  • 力扣第114题:二叉树展开为链表
  • 使用MATLAB判断矩阵是否正定的方法与例程
  • Spring Boot注解总结大全【案例详解,一眼秒懂】
  • Linux网络——网络基础
  • 基于Spring Boot的图书管理系统
  • C语言基础——指针(4)
  • WebRTC服务质量(09)- Pacer机制(01) 流程概述
  • Nautilus源码编译傻瓜式教程一
  • 20241230 基础数学-线性代数-(1)求解特征值(numpy, scipy)
  • 如何调大unity软件的字体
  • 大恒相机开发(3)—大恒相机工业检测的实际案例