ECS实例Linux系统的MySQL无法通过公网连接

本文介绍了ECS实例Linux系统中安装的MySQL无法通过公网连接的原因及解决方法。

问题现象

ECS实例Linux系统中安装了MySQL,无法通过公网连接MySQL。

问题原因

在ECS服务群里登录到MySQL数据库,执行SQL命令查看数据库用户配置。

登录MySQL数据库

登录MySQL数据库
mysql -uroot -p密码
use mysql;
select host,user from user;

如果看到userroothostlocalhost,说明MySQL只允许本机连接,外网就无法连接了数据库。

解决方案

执行如下命令,修改MySQL用户允许外网连接。

update user set host='%' where user ='root';
flush privileges;
说明

host='%' 表示允许所有IP连接,假如要限制只能通过1.1.1.1的IP地址登录,则需要把%改成1.1.1.1,如果填%则代表允许任何IP地址登录。

查看修改后的用户信息

新建数据库用户允许远程连接的方法:

CREATE USER 'newuser'@'%' IDENTIFIED BY '密码';
GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'%' WITH GRANT OPTION;
flush privileges;
说明

*.* 第一个星号(*)为数据库占位符,如果填*则代表所有数据库。第二个星号(*)为数据库表占位符,如果填*则代表数据库中所有表。

'newuser'@'%' ,newuser为授权登录的数据库账户,百分号(%)为IP地址占位符。假如要限制只能通过1.1.1.1的IP地址登录,则需要把%改成1.1.1.1,如果填%则代表允许任何IP地址登录。