在Ubuntu中配置mysql,并允许外部访问数据库

在虚拟机中安装 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 并允许外部访问的配置。

相关推荐
陈天伟教授6 小时前
关系数据库-07. 关系操作
数据库·达梦数据库·国产数据库
zzhongcy6 小时前
复合索引 (item1, item2, item3 ) > (?, ?, ?) 不起作用,EXPLAIN 后type=ALL(全表扫描)
android·数据库
Elastic 中国社区官方博客6 小时前
Elastic:DevRel 通讯 — 2026 年 1 月
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
可观测性用观测云6 小时前
AWS RDS 可观测性最佳实践
数据库
程序员小白条6 小时前
面试 Java 基础八股文十问十答第八期
java·开发语言·数据库·spring·面试·职场和发展·毕设
汗流浃背了吧,老弟!6 小时前
向量数据库在RAG中的非必需场景及替代方案
数据库
brevity_souls6 小时前
SQL 中 BETWEEN 和 IN 的区别
数据库·sql
产幻少年7 小时前
redis位图
数据库·redis·缓存
oMcLin7 小时前
如何在 Ubuntu 22.04 LTS 上部署并优化 Magento 电商平台,提升高并发请求的响应速度与稳定性?
linux·运维·ubuntu
短剑重铸之日8 小时前
《7天学会Redis》Day 4 - 高可用架构设计与实践
数据库·redis·缓存