游乐游手机版
首页/数据库/文章详情

Linux系统下MySQL远程连接配置与用户授权

时间:2026-06-28 06:44
想要让MySQL接受远程连接,其实并不复杂,跟着下面的步骤走就行。整个过程大致分为四个环节:改配置、设密码、建用户、开端口。每一步都不难,但有些细节容易被忽略,下面逐一拆解。 1、修改MySQL配置文件 在Ubuntu系统上,MySQL的配置文件通常藏在 etc mysql mysql conf

想要让MySQL接受远程连接,其实并不复杂,跟着下面的步骤走就行。整个过程大致分为四个环节:改配置、设密码、建用户、开端口。每一步都不难,但有些细节容易被忽略,下面逐一拆解。

MySQL设置允许远程连接与用户方式(Linux系统)

1、修改MySQL配置文件

在Ubuntu系统上,MySQL的配置文件通常藏在 /etc/mysql/mysql.conf.d/mysqld.cnf/etc/mysql/my.cnf,具体路径取决于你安装的版本和发行版。如果不确定,可以用 find / -name "my.cnf" 快速定位。

找到文件后,用你习惯的编辑器打开它——比如 sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf。在文件里搜索 bind-address 这一行,默认值通常是 127.0.0.1,表示只允许本机连接。把它改成服务器的实际IP地址,或者直接改成 0.0.0.0,这样任何IP都可以访问。

bind-address = 0.0.0.0

当然,改成 0.0.0.0 意味着暴露了入口,安全风险也随之增加。所以生产环境一定要结合白名单和防火墙来限制来源IP,别图省事。

2、设置MySQL中的root用户密码

刚装完MySQL时,root用户很可能没有密码(或者密码为空)。先以管理员身份登录MySQL:

sudo mysql -u root

回车进入MySQL命令行。接着,修改本地登录密码:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';

如果打算允许root用户远程连接,还需要同时更新 root@'%' 的密码:

ALTER USER 'root'@'%' IDENTIFIED BY 'new_password';

需要注意的是,MySQL 8.0版本之后,默认的身份认证插件变成了 caching_sha2_password,一些旧的客户端可能无法直接连上。如果遇到连接报错,可以将root的认证方式改回 mysql_native_password

ALTER USER root@localhost IDENTIFIED WITH mysql_native_password BY 'new_password';

改完密码后,执行 exit; 退出,再用新密码重新登录测试一下:sudo mysql -u root -p,确保一切正常。

3、创建MySQL用户并授权

直接用root远程不是好习惯,更推荐为远程连接单独创建用户。比如创建一个叫 remoteuser 的用户,赋予它访问 mydatabase 库的所有权限:

CREATE USER 'remoteuser'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON mydatabase.* TO 'remoteuser'@'%';

这里的 % 表示允许任何主机连接。如果只想让某个固定IP(比如公司出口IP)能连,就把 % 换成具体的IP地址,比如 '192.168.1.100'。授权完成后,别忘了执行 FLUSH PRIVILEGES; 刷新权限表。

4、确保服务器端口开放

MySQL默认监听3306端口。如果服务器开启了防火墙(比如 ufwiptables),需要显式放行这个端口。以Ubuntu的ufw为例:

sudo ufw allow 3306/tcp

如果是云服务器,还要到云控制台的安全组/防火墙规则中添加入站规则,允许TCP 3306端口的访问。否则配置改得再完美,连都连不上。

总结

以上几步走完,MySQL远程连接基本就能跑通了。不过话说回来,远程直连MySQL始终存在风险,尤其是暴露在公网上的情况。生产环境建议通过SSH隧道、翻跟斗或袋里来间接访问,而不是直接把3306端口开给全世界。安全从来不是一次配置就能搞定的,需要持续关注和加固。

来源:https://www.jb51.net/database/366075zo7.htm
上一篇MySQL DISTINCT去重的几种方法 下一篇SQL存储过程如何调用另一个带返回值的存储过程
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
金仓数据库逻辑备份实战:全库导出与模式替换全流程
数据库 · 2026-07-03

金仓数据库逻辑备份实战:全库导出与模式替换全流程

在长期的运维实践中,我越来越体会到,备份就像一份保险——平时看似无用,但关键时刻却是唯一的救命稻草。逻辑备份看似简单,可真正执行恢复时,各种陷阱接连浮现:表名大小写不一致、Schema 未正确切换、Owner 属性未同步修改……任何一个环节处理不当,最终恢复出的数据库就会与预期相去甚远。 本文将深入

金仓数据库sys_rman物理备份全流程演练与误覆盖恢复
数据库 · 2026-07-03

金仓数据库sys_rman物理备份全流程演练与误覆盖恢复

干运维这行,逻辑备份和物理备份我都接触过,但说句实在话,真正能在生产环境里扛住事儿的,还得是物理备份。逻辑备份导出的是 SQL 语句,数据量一大,那速度慢得让人抓狂,而且最关键的是,它没法做时间点恢复。物理备份不一样,它直接拷贝数据文件,再配上 WAL 归档日志,想恢复到过去哪一秒都行,这是它最硬核

Windows下将MySQL注册为系统自启服务教程
数据库 · 2026-07-03

Windows下将MySQL注册为系统自启服务教程

先说一个关键前提:务必以管理员身份运行终端,否则 mysqld --install 这条命令几乎不可能成功。问题不在于命令写错,而是 Windows 系统的用户账户控制(UAC)机制会在中途拦截——在普通 CMD 或 PowerShell 窗口执行这条命令,要么直接提示 Access is deni

Mac版Navicat中快速对比两个数据库的表结构异同
数据库 · 2026-07-03

Mac版Navicat中快速对比两个数据库的表结构异同

直接说结论:Mac 版 Navicat 和 Windows 版在表结构比对逻辑上完全一致。但默认配置下,它确实无法承受“全库一键比对上万张表”的压力。要想避免卡死、内存溢出、进度条永远停在 0%,你必须手动将表分批处理,或者利用前缀过滤来控制扫描范围。 为什么 Mac 上点击「结构同步」后界面会卡住

MySQL中UNION操作推荐用UNION ALL的原因
数据库 · 2026-07-03

MySQL中UNION操作推荐用UNION ALL的原因

MySQL中UNION与UNION ALL性能对比:别再被“保险”迷惑,差距远超预期 先给出核心结论:UNION ALL 的性能通常比 UNION 高出不止一个数量级。原因在于,UNION 在合并结果集后会自动触发去重操作,这往往伴随着隐式排序,进而产生临时表和文件排序。而 UNION ALL 则直