如何设置本地MySQL数据库,实现数据库远程访问(Linux和Windows)

2025-05-11 12:04:02

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

前言一、创建可以远程访问的mysql用户1、登录MySQL2、创建新用户( MySQL 5.7 版本之后可直接使用GRANT 语句)3、授予权限授予所有权限授予用户对指定表的部分权限刷新权限

二、MySQL配置文件设置1. 定位配置文件Windows系统配置文件位置Linux系统配置文件位置

2. 编辑配置Windows系统Linux系统

3. 重启服务Windows系统Linux系统

三、系统防火墙设置配置Windows系统防火墙(开放 3306 端口)手动添加端口规则

配置Linux系统防火墙

四、总结

前言

读完本文你将学会,如何远程连接到另一台电脑的数据库。提高开发效率。

一、创建可以远程访问的mysql用户

一般的,工作中会单独创建拥有不同功能的用户,来实现相应的功能。下面,我们将以实现任意IP远程访问本地mysql所有数据库为例创建用户。

1、登录MySQL

首先,win + R 打开cmd,以管理员身份连接到MySQL数据库,通常是root用户:

mysql -u root -p

系统会提示输入管理员用户的密码,输入密码后进入MySQL的命令行。

2、创建新用户( MySQL 5.7 版本之后可直接使用GRANT 语句)

在早期版本的 MySQL 中,创建用户和授予权限是分开的操作。需要先使用 CREATE USER 语句创建用户,再使用 GRANT 语句为用户授予权限。 但从 MySQL 5.7 版本开始,GRANT 语句在用户不存在时具备了创建用户的功能。

使用CREATE USER命令来创建一个新的MySQL用户。命令语法如下:

CREATE USER 'username'@'host' IDENTIFIED BY 'password';

‘username’:新用户的名称。 ‘host’:指定该用户允许从哪个主机连接。localhost表示只允许本地连接,%表示允许从任何IP地址连接。 ‘password’:设置新用户的密码。

按照我们的目标,创建用于远程连接的用户,设置权限为任意IP(设置任意IP是方便自己使用,如有特殊需求,特殊设置)

create user 'remote'@'%' identified by '123456';

3、授予权限

常见权限有SELECT、INSERT、UPDATE、DELETE等。通常,GRANT命令用于分配权限。命令语法如下:

GRANT ALL PRIVILEGES ON *.* TO 'username'@'host' IDENTIFIED BY 'password';

‘username’@‘host’:在 MySQL 里,用户是由 用户名 和 主机名 共同确定的,像 ‘username’@‘%’ 和 ‘username’@‘localhost’ 代表的是两个不同的用户。 ALL PRIVILEGES:授予用户对指定数据库的所有权限。 *. :表示对所有数据库或者表授予权限

授予所有权限

如果希望用户拥有对所有数据库和表的完全访问权限,可以使用以下命令:

GRANT ALL PRIVILEGES ON *.* TO 'remote'@'%' IDENTIFIED BY 'password';

授予用户对指定表的部分权限

GRANT SELECT, INSERT ON test_db.test_table TO 'remote'@'%' IDENTIFIED BY 'password';

刷新权限

在使用 GRANT 语句赋予权限之后,你需要刷新权限,这样新的权限设置才能生效:

FLUSH PRIVILEGES;

二、MySQL配置文件设置

1. 定位配置文件

Windows系统配置文件位置

MySQL 的配置文件 my.ini 通常位于以下路径: 默认安装路径:C:\ProgramData\MySQL\MySQL Server X.X\my.ini (ProgramData 是隐藏文件夹,需在资源管理器中启用「显示隐藏文件」) 自定义安装路径:C:\Program Files\MySQL\MySQL Server X.X\my.ini (若通过 ZIP 包安装,路径可能为 C:\mysql-8.0.34-winx64\my.ini)

Linux系统配置文件位置

通常是:/etc/mysql/mysql.conf.d/mysqld.cnf

2. 编辑配置

Windows系统

使用记事本或其他文本编辑器打开 my.ini,找到 [mysqld] 部分,修改或添加以下内容

# 允许所有 IP 连接(生产环境建议限制为特定 IP)

bind-address = 0.0.0.0

# 可选:设置字符集(避免乱码)

character-set-server = utf8mb4

collation-server = utf8mb4_unicode_ci

Linux系统

找到 bind-address 这一行,将其值修改为 0.0.0.0 ,这表示允许所有 IP 地址进行连接。

# 找到这一行

bind-address = 127.0.0.1

# 修改为

bind-address = 0.0.0.0

3. 重启服务

Windows系统

以管理员身份打开命令提示符,执行: mysql服务名称可能不同,根据实际情况选择

net stop mysql

net start mysql

Linux系统

在 Linux 系统中可以使用以下命令重启:

sudo systemctl restart mysql

三、系统防火墙设置

配置Windows系统防火墙(开放 3306 端口)

手动添加端口规则

步骤 1:搜索并打开「高级安全 Windows 防火墙」。 系统设置搜索防火墙,点击高级设置。

步骤 2:在左侧选择「入站规则」,点击「新建规则」。

步骤 3:选择「端口」,点击「下一步」。

步骤 4:输入端口号 3306,选择「TCP」,点击「下一步」。

步骤 5:选择「允许连接」,点击「下一步」。

步骤 6:勾选所有网络类型(域、专用、公共),点击「下一步」。

步骤 7:命名规则(如 MySQL 3306),点击「完成」。

配置Linux系统防火墙

要确保防火墙允许 MySQL 服务的端口(默认是 3306)通过。

sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT

如果你使用的是 iptables 防火墙,可以使用以下命令开放 3306 端口:

sudo ufw allow 3306

四、总结

完成上述三步之后,只要保证网络通畅就可以远程连接mysql数据库了。