mysql如何开放远程连接

 更新时间:2026年02月07日 14:59:11   作者:大叔是90后大叔  
文章讲述了如何解决MySQL数据库只能本地连接而无法远程连接的问题,主要方法包括修改MySQL用户表的host列,添加新的授权用户并设置权限,以及确保服务器端口开放

新安装的mysql只可以本机连接,但是远程连接就会报

not allowed to connect to this MySQL server

例如:

按如下步骤进行操作

方法一

更改mysql数据库user表的host列,把localhost改为%

[root@localhost ~]# mysql -u root -p123***
mysql> use mysql;
mysql> select Host,User from user;
mysql> update user set host = '%' where user = 'root';
mysql> flush privileges;

方法二(推荐)

Mysql5.7及以下版本

添加一个新的授权

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123***' WITH GRANT OPTION;

Mysql8.0及以上版本(MySQL 8.0+版本中将用户创建和权限授予分成了两个独立的操作)

  1. 首先创建用户(如果不存在)并设置密码:
CREATE USER 'root'@'%' IDENTIFIED BY 'root123';
  1. 然后授予权限:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
  1. 最后刷新权限:
FLUSH PRIVILEGES;
mysql> CREATE USER 'root'@'%' IDENTIFIED BY 'root123';
Query OK, 0 rows affected (0.03 sec)

mysql> select Host,User from user;
+-----------+------------------+
| Host      | User             |
+-----------+------------------+
| %         | root             |
| localhost | mysql.infoschema |
| localhost | mysql.session    |
| localhost | mysql.sys        |
| localhost | root             |
+-----------+------------------+
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
Query OK, 0 rows affected (0.02 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

服务器对外开放3306端口(注意:如果是阿里云服务器在服务器端命令行开放端口后还要到阿里云管理平台设置开放端口才有效)

# 开放3306端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
# 配置立即生效
firewall-cmd --reload
# 查看是3306端口否已开放(返回yes表示端口开放成功,no表示端口未开放)
firewall-cmd --query-port=3306/tcp
yes

重新远程连接就可以了

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • mysql查询字符串替换语句小结(数据库字符串替换)

    mysql查询字符串替换语句小结(数据库字符串替换)

    有时候我们需要对mysql的字符串进行替换,我们就可以通过sql语句直接实现了,不过对于大数据量的字段不建议使用此方法
    2012-07-07
  • MySQL一文搞懂行级锁经典版

    MySQL一文搞懂行级锁经典版

    文章详细介绍了MySQL中行级锁的原理,包括InnoDB和MyISAM引擎的区别、记录锁(RecordLock)、间隙锁(GapLock)和临键锁(Next-KeyLock)的定义与特性,以及如何通过`SELECT ... FOR UPDATE`语句来实现锁定读和避免幻读问题,感兴趣的朋友跟随小编一起看看吧
    2025-12-12
  • MySQL索引介绍及优化方式

    MySQL索引介绍及优化方式

    这篇文章主要介绍了MySQL索引介绍及优化方式,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09
  • MySQL中between and的基本用法、范围查询示例详解

    MySQL中between and的基本用法、范围查询示例详解

    BETWEEN AND 操作符在 MySQL 中用于选择在两个值之间的数据,包括边界值,它支持数值和日期类型,示例展示了如何使用 BETWEEN AND 和 NOT BETWEEN AND 进行查询,并特别注意日期类型查询时的时间精度问题,感兴趣的朋友跟随小编一起看看吧
    2025-12-12
  • MySQL字符集 GBK、GB2312、UTF8区别 解决MYSQL中文乱码问题

    MySQL字符集 GBK、GB2312、UTF8区别 解决MYSQL中文乱码问题

    MYSQL中文乱码问题原因有很多,脚本之家以前发布过很多相关文章,这篇文章介绍mysql相关的一些知识更详细
    2012-08-08
  • MYSQL如何查询成绩为前5名的学生

    MYSQL如何查询成绩为前5名的学生

    这篇文章主要介绍了MYSQL如何查询成绩为前5名的学生问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • MySQL删除binlog日志文件的三种实现方式

    MySQL删除binlog日志文件的三种实现方式

    本文介绍了三种删除MySQL binlog日志文件的方法,包含手动删除、使用SQL命令删除和设置自动清理,具有一定的参考价值,感兴趣的可以了解一下
    2025-02-02
  • MySQL完整性约束的定义与实例教程

    MySQL完整性约束的定义与实例教程

    数据完整性约束是对关系性模型完整性规则做某种约束条件,这篇文章主要给大家介绍了关于MySQL完整性约束的相关资料,需要的朋友可以参考下
    2021-05-05
  • MySQL使用select语句查询指定表中指定列(字段)的数据

    MySQL使用select语句查询指定表中指定列(字段)的数据

    本文介绍MySQL数据库中执行select查询语句,查询指定列的数据,即指定字段的数据,需要的朋友可以参考下
    2016-11-11
  • MySQL库的操作之创建、删除与管理数据库

    MySQL库的操作之创建、删除与管理数据库

    在数据库管理中MySQL是一个广泛应用的关系型数据库管理系统,它提供了丰富的命令行工具来执行各种操作,这篇文章主要介绍了MySQL库操作之创建、删除与管理数据库的相关资料,需要的朋友可以参考下
    2026-02-02

最新评论