场景重现
在阿里云ECS下, Ubuntu系统上通过以下命令安装的MySQL数据库, 本地连接正常, 但远程死活连接不上.
# 安装MySQL
apt-get install mysql-server
解决办法
主要有以下几点:
- 用户
root
默认受限为本地可访问(localhost), 远程拒绝(出于安全考虑吧)
但是这个我们可以修改的, 在本地用root
登录后, 修改对应的表字段值即可. 这里需要注意的是MySQL安装完成后, 自带了一个mysql
数据库, 里面有个user
表, 就是存放此类信息的.
我们用sql
命令即可完成修改:-- 用户root对应的主机改为任意主机. update user set host='%' where user='root' and host='localhost'; -- 然后重启MySQL服务, 使配置生效 /etc/init.d/mysql restart -- 当然如果嫌重启麻烦, 也可以直接刷新(~~这单词太难记, 不喜欢用~~) flush privileges;
修改好了用户本身的限制, 但是远程还是不能访问. - MySQL本身配置项的问题
在MySQL配置文件/etc/mysql/my.cnf
中,
找到地址绑定配置bind-address = 127.0.0.1
, 注释掉或改为bind-address = 0.0.0.0
即可.mysql-server-5.7 版本中配置文件结构有所变化,修改该配置需要在
/etc/mysql/mysql.conf.d/mysqld.cnf
文件中. - 阿里云服务器的的安全规则中开启
3306
的入站规则3306
是MySQL默认的服务端口.
然后大功告成, 试试能否远程访问吧.