Mysql

关注公众号 jb51net

关闭
首页 > 数据库 > Mysql > mysql开放远程连接

mysql如何开放远程连接

作者:大叔是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

重新远程连接就可以了

总结

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

您可能感兴趣的文章:
阅读全文