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

相关推荐
建投数据26 分钟前
建投数据与腾讯云数据库TDSQL完成产品兼容性互认证
数据库·腾讯云
Hacker_LaoYi1 小时前
【渗透技术总结】SQL手工注入总结
数据库·sql
岁月变迁呀1 小时前
Redis梳理
数据库·redis·缓存
独行soc1 小时前
#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍06-基于子查询的SQL注入(Subquery-Based SQL Injection)
数据库·sql·安全·web安全·漏洞挖掘·hw
你的微笑,乱了夏天2 小时前
linux centos 7 安装 mongodb7
数据库·mongodb
工业甲酰苯胺2 小时前
分布式系统架构:服务容错
数据库·架构
独行soc3 小时前
#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍08-基于时间延迟的SQL注入(Time-Based SQL Injection)
数据库·sql·安全·渗透测试·漏洞挖掘
Code apprenticeship4 小时前
怎么利用Redis实现延时队列?
数据库·redis·缓存
百度智能云技术站4 小时前
广告投放系统成本降低 70%+,基于 Redis 容量型数据库 PegaDB 的方案设计和业务实践
数据库·redis·oracle