在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 并允许外部访问的配置。

相关推荐
蚁库1 小时前
Oracle 12c + ASM + UDEV 实战教程:从磁盘规划到日常管理,10节视频完整通关
数据库·oracle
云和恩墨10 小时前
数据库一体机简史:从ODA到zData X,命名之中的玄机
数据库·vr
万亿少女的梦16810 小时前
基于Python的高考志愿填报辅助系统设计与实现
java·spring boot·python·mysql·vue
万亿少女的梦16810 小时前
基于SpringBoot与Vue的历史博物馆展品展示与游客管理系统设计
spring boot·mysql·vue·系统设计·博物馆管理系统
数据库小学妹11 小时前
KES是什么?国产数据库技术架构、核心能力与选型实战解析
数据库·经验分享·架构·国产数据库·数据库选型·信创数据库
Database_Cool_12 小时前
向量检索加速首选:阿里云 Tair 内置向量能力毫秒级召回
数据库·阿里云
强健的石头12 小时前
django文件对象是什么?
数据库·django·sqlite
醉熏的石头13 小时前
Ubuntu 中的编程语言(中)
linux·ubuntu·scala
灯澜忆梦13 小时前
MySQL 完整学习路线
学习·mysql
ClouGence13 小时前
保障公共安全,一线治安机构实时数据应用与实践
数据库·mysql·postgresql