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数据库数据类型的注意点和应用的相关资料,MySQL数据类型主要包括tinyint、bit、float、decimal、char和varchar等,每种类型都有其特定的存储范围和适用场景,需要的朋友可以参考下
    2024-12-12
  • MySQL数据库列的增删改实现方法

    MySQL数据库列的增删改实现方法

    这篇文章主要介绍了MySQL数据库列的增删改实现方法,结合实例形式分析了mysql数据库针对列的增加、修改、删除等相关操作sql命令及使用技巧,需要的朋友可以参考下
    2019-03-03
  • Mysql中NTILE()函数的具体使用

    Mysql中NTILE()函数的具体使用

    NTILE()函数用于将分区中的有序数据分为n个等级,本文主要介绍了Mysql中NTILE()函数的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-07-07
  • mysql 安全管理详情

    mysql 安全管理详情

    这篇文章主要介绍了mysql 安全管理,MySQL服务器的安全基础是用户应该对他们需要的数据具有适当的访问权,既不能多也不能少,换句话说,用户不能对过多的数据具有过多的访问权,下面俩看看文章详细内容吧
    2021-10-10
  • mysql中的不等于实例详解

    mysql中的不等于实例详解

    这篇文章主要介绍了mysql中的不等于实例详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-04-04
  • mysql如何利用binlog进行数据恢复详解

    mysql如何利用binlog进行数据恢复详解

    MySQL的binlog日志是MySQL日志中非常重要的一种日志,下面这篇文章主要给大家介绍了关于mysql如何利用binlog进行数据恢复的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2018-10-10
  • MySQL给查询记录增加序列号的实现方法

    MySQL给查询记录增加序列号的实现方法

    这篇文章主要介绍了MySQL给查询记录增加序列号的实现方法,文中通过代码示例讲解的非常详细,对大家的学习或工作有一定的参考价值,需要的朋友可以参考下
    2023-11-11
  • 一文带你了解MySQL字符集和比较规则

    一文带你了解MySQL字符集和比较规则

    前段时间往MySQL中存入emoji表情或生僻字、繁体字时,报错无法添加,研究后发现这是字符集编码的问题,下面这篇文章主要给大家介绍了关于MySQL字符集和比较规则的相关资料,需要的朋友可以参考下
    2022-12-12
  • mysql查询今天、昨天、近7天、近30天、本月、上一月的SQL语句

    mysql查询今天、昨天、近7天、近30天、本月、上一月的SQL语句

    这篇文章主要介绍了mysql查询今天、昨天、近7天、近30天、本月、上一月的SQL语句,一般在一些统计报表中比较常用这个时间段,需要的朋友可以参考下
    2014-06-06
  • MySQL服务器权限与对象权限详解

    MySQL服务器权限与对象权限详解

    这篇文章主要介绍了MySQL服务器权限与对象权限,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08

最新评论