在虚拟机中安装 MySQL 并允许外部访问,可以按照以下步骤操作:
1. 更新系统包
首先,确保你的系统是最新的,使用以下命令更新包列表:
bash
sudo apt update
sudo apt upgrade
2. 安装 MySQL Server
安装 MySQL 服务:
bash
sudo apt install mysql-server
安装完成后,MySQL 服务会自动启动。
3. 配置 MySQL 允许外部访问
MySQL 默认只允许本地访问。要允许外部访问,需要修改 MySQL 配置文件。
3.1 编辑配置文件
编辑 MySQL 配置文件 /etc/mysql/mysql.conf.d/mysqld.cnf
,找到 bind-address
配置项:
bash
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
在文件中找到以下行:
ini
bind-address = 127.0.0.1
将其修改为 0.0.0.0
,表示允许所有 IP 地址访问:
ini
bind-address = 0.0.0.0
保存文件并退出编辑器(在 nano 中按 Ctrl + X
,然后按 Y
保存,按 Enter
退出)。
3.2 重新启动 MySQL 服务
修改配置后,需要重新启动 MySQL 服务,使更改生效:
bash
sudo systemctl restart mysql
4. 配置防火墙
如果虚拟机使用的是 UFW(Uncomplicated Firewall)防火墙,需要允许 MySQL 端口(默认是 3306)通过防火墙:
bash
sudo ufw allow 3306
然后重新加载防火墙规则:
bash
sudo ufw reload
5. 创建用户并授权远程访问
MySQL 的 root 用户默认不能远程访问,因此需要创建一个新的 MySQL 用户并授权。
5.1 登录 MySQL
使用 root 用户登录 MySQL:
bash
sudo mysql -u root -p
输入密码(weijie81
)。
5.2 创建远程用户
假设你希望允许外部主机使用用户名 remote_user
和密码 remote_password
连接 MySQL,你可以运行以下命令:
sql
CREATE USER 'remote_user'@'%' IDENTIFIED BY 'remote_password';
这里的 @'%'
表示该用户可以从任何 IP 地址连接到 MySQL。
5.3 授权用户访问
授权 remote_user
对数据库的访问权限,假设是 ALL PRIVILEGES
权限:
sql
GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%';
然后刷新权限:
sql
FLUSH PRIVILEGES;
5.4 退出 MySQL
sql
EXIT;
6. 配置虚拟机的网络设置
确保你的虚拟机网络设置为桥接模式(bridge mode),这样虚拟机才可以从外部网络直接访问。你可以在虚拟机管理工具(如 VirtualBox 或 VMware)中配置此项。
7. 通过外部访问 MySQL
现在,你可以从外部机器通过 MySQL 客户端连接到虚拟机上的 MySQL:
bash
mysql -u remote_user -p -h <虚拟机IP地址> -P 3306
8. 测试连接
确保外部机器可以连接到虚拟机的 MySQL 服务。如果网络配置和防火墙设置正确,外部机器应该能够成功连接并执行查询。
这样,就完成了在虚拟机中安装 MySQL 并允许外部访问的配置。