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+版本中将用户创建和权限授予分成了两个独立的操作)
- 首先创建用户(如果不存在)并设置密码:
CREATE USER 'root'@'%' IDENTIFIED BY 'root123';
- 然后授予权限:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
- 最后刷新权限:
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查询今天、昨天、近7天、近30天、本月、上一月的SQL语句
这篇文章主要介绍了mysql查询今天、昨天、近7天、近30天、本月、上一月的SQL语句,一般在一些统计报表中比较常用这个时间段,需要的朋友可以参考下2014-06-06


最新评论