如何设置本地MySQL数据库,实现数据库远程访问(Linux和Windows)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、创建可以远程访问的mysql用户
- 1、登录MySQL
- 2、创建新用户( 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:ProgramDataMySQLMySQL Server X.Xmy.ini
(ProgramData 是隐藏文件夹,需在资源管理器中启用「显示隐藏文件」)
自定义安装路径:C:Program FilesMySQLMySQL Server X.Xmy.ini
(若通过 ZIP 包安装,路径可能为 C:mysql-8.0.34-winx64my.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数据库了。