Linux MySQL远程访问配置教程

配置MySQL远程访问需三步: ,1. **授权用户**:GRANT ALL ON *.* TO '用户名'@'远程IP' IDENTIFIED BY '密码' WITH GRANT OPTION; ,2. **修改配置**:编辑my.cnf,将bind-address = 127.0.0.1改为0.0.0.0 ,3. **开放端口**:防火墙允许3306端口(如sudo ufw allow 3306) ,最后重启MySQL服务生效。

远程连接Linux MySQL的完整指南

核心原理与前提条件

MySQL默认仅允许本地连接(127.0.0.1),要实现远程访问,需完成三个关键配置:

Linux MySQL远程访问配置教程

  1. 用户授权:创建远程访问专用账户
  2. 配置文件修改:解除本地绑定限制
  3. 防火墙放行:开放3306端口

必备条件

  • Linux服务器root权限
  • MySQL已安装(建议5.7+或8.0+版本)
  • 客户端与服务器网络互通(可通过ping [服务器IP]验证)

分步操作指南

步骤1:登录MySQL创建远程用户

mysql -u root -p  # 使用root登录
# 创建新用户并授权(推荐)
CREATE USER 'remote_user'@'%' IDENTIFIED BY 'StrongPassword123!';
GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
# 或修改root远程权限(生产环境不推荐)
UPDATE mysql.user SET host='%' WHERE user='root';
FLUSH PRIVILEGES;

步骤2:修改MySQL配置文件

vim /etc/mysql/mysql.conf.d/mysqld.cnf  # Ubuntu/Debian
# 或
vim /etc/my.cnf  # CentOS/RHEL

找到并修改以下参数:

bind-address = 0.0.0.0  # 默认127.0.0.1
skip-networking = OFF    # 确保未启用

保存后重启服务:

systemctl restart mysql  # 或 mysqld

步骤3:配置防火墙

Firewalld(CentOS/RHEL)

Linux MySQL远程访问配置教程

firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --reload

UFW(Ubuntu/Debian)

ufw allow 3306/tcp
ufw reload

IPTables(通用)

iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
service iptables save  # 或使用iptables-persistent

连接测试与排错

客户端连接命令

mysql -h [服务器IP] -u remote_user -p

常见错误解决方案:

错误代码 原因 修复方法
ERROR 1130 用户未授权 检查GRANT语句中的IP范围
ERROR 2003 端口不通 检查防火墙规则sudo iptables -L -n
ERROR 1045 密码错误 重置密码ALTER USER 'user'@'%' IDENTIFIED BY 'new_pwd';
ERROR 1524 认证插件冲突 执行ALTER USER 'user'@'%' IDENTIFIED WITH mysql_native_password BY 'pwd';

安全加固建议

  1. 最小权限原则
    GRANT SELECT,INSERT ON dbname.* TO 'user'@'192.168.1.%';  # 限制IP段和操作权限
  2. 禁用root远程登录
    DELETE FROM mysql.user WHERE user='root' AND host='%';
  3. 启用SSL加密传输
    # my.cnf增加
    require_secure_transport = ON
    ssl-ca = /etc/mysql/ca.pem
  4. 定期审计用户
    SELECT user, host FROM mysql.user;  # 检查异常账户

高级配置场景

场景1:通过SSH隧道连接

ssh -L 3306:localhost:3306 user@server_ip  # 端口转发
# 客户端连接127.0.0.1:3306

场景2:Docker环境配置

Linux MySQL远程访问配置教程

docker run -d 
  -p 3306:3306 
  -e MYSQL_ROOT_PASSWORD=secret 
  -e MYSQL_REMOTE_USER=remote 
  mysql:8.0 
  --bind-address=0.0.0.0

验证操作是否成功

SHOW VARIABLES LIKE 'bind_address';  # 应返回0.0.0.0
SELECT user, host FROM mysql.user;   # 确认远程用户存在

重要提示:完成配置后,立即执行mysql_secure_installation强化安全设置,并定期备份/etc/my.cnf和用户权限表。


引用说明

  1. MySQL 8.0官方安全指南 https://dev.mysql.com/doc/refman/8.0/en/security.html
  2. Linux防火墙最佳实践 Red Hat文档 https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/securing_networks/
  3. 网络连通性检测工具使用手册 ICMP协议RFC 792
    基于MySQL 8.0.28及Ubuntu 22.04 LTS测试验证,配置前请务必备份关键数据。

原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/48130.html

(0)
酷盾叔的头像酷盾叔
上一篇 2025年7月7日 02:01
下一篇 2025年7月7日 02:11

相关推荐

  • linux oracle 如何安装步骤

    防火墙,创建用户组和用户,配置内核参数与资源限制,解压安装包并设置环境变量,以 oracle 用户运行安装程序,最后执行 root 脚本完成安装

    2025年7月8日
    000
  • 如何快速查看Linux版本命令

    查看Linux系统版本常用命令: ,1. 执行 lsb_release -a 获取发行版信息; ,2. 查看 /etc/os-release 文件内容; ,3. 使用 hostnamectl 或 uname -r 查看内核版本。 ,不同发行版可能需结合特定文件(如CentOS的/etc/redhat-release)。

    2025年6月11日
    100
  • Linux Red5如何创建Yum仓库?

    在Red Hat Enterprise Linux 5上搭建yum仓库:安装createrepo工具,创建目录存放RPM包,执行createrepo .生成元数据,配置Web服务器(如Apache)发布该目录,最后在客户端创建.repo文件指向仓库URL。

    2025年6月19日
    000
  • Linux如何彻底删除定时任务?

    使用crontab -e命令编辑当前用户的定时任务,找到对应行直接删除保存即可,彻底清空所有任务用crontab -r(慎用),也可手动编辑/var/spool/cron/下的用户任务文件进行删除。

    2025年6月13日
    000
  • Linux查看用户列表方法

    在Linux中查询所有用户,可通过以下方法:,1. 查看 /etc/passwd 文件:cat /etc/passwd 或 cut -d: -f1 /etc/passwd,2. 使用 getent 命令:getent passwd,3. 列出登录用户:users 或 who,这些命令显示系统账户和普通用户,需注意部分为服务账户。

    2025年6月26日
    000

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN