阿里云配置MYSQL远程连接的步骤

本文记录了在阿里云上配置MySQL远程连接的完整步骤,包括修改配置文件、设置用户权限、检查服务器防火墙和阿里云安全组规则,以及解决遇到的常见问题。适合Ubuntu1804和MySQL5.1环境。

默认情况下,安装在阿里云上的MySQL是不支持远程连接的,如果遇到需要用到远程连接数据库的情况,则需要进行一些配置。我使用navicat进行远程连接。
在查了很多资料,踩了很多坑,终于大功告成,为了防止以后再遇到这样的问题我无法解决,决定将过程记录下来。

环境前提:Ubuntu1804、mysql5.1

一、阿里云MySQL基本使用

这里默认已经搭建好了MySQL的环境。

  1. 用root用户登录MySQL,输入如下命令后输入你的数据库密码即可连接上。
mysql -u root -p
  1. 查看MySQL中的数据库
mysql> show datatables;
  1. 打开mysql数据库(需要能操作mysql数据库的权限,一般的root用户)
mysql> use mysql
  1. 查看数据库中的所有表
mysql> show tables;
  1. 退出MySQL
mysql> exit;
  1. 重启MySQL
sudo systemctl restart mysql

二、配置部分

1. 修改配置文件

修改这个文件***/ETC/MYSQL/MYSQL.CONF.D***(可能路径会不同,需要自己找一下)。

找到 bind-address = 127.0.0.1
修改为 bind-addresss= 0.0.0.0

有教程说注释这一行,我做的是修改,如果修改不成功的话可以试下这种方法。

2.使用两种方法来修改
2.1 直接使用用户root
  1. 将host设置为%,表示任何ip都能连接mysql
mysql> GRANT ALL ON *.* to root@'%' IDENTIFIED BY 'put-your-password';
  1. 将host指定为某个ip
mysql> GRANT ALL ON *.* to root@'123.123.123.123' IDENTIFIED BY 'put-your-password';
  1. 执行完上述语句,刷新权限表,使配置生效
mysql> flush privileges;
  1. 退出数据库
  2. 重启数据库
2.2 新增一个用户来进行访问

新的用户我是提前创建好了,给定了我以为可以连接的权限,后来直接进行权限修改的。

  1. 新增一个用户newuser(这个新增用户名称也可以为root),设置密码为123456,并将host设置为%表示任何ip都能连接mysql
mysql> GRANT ALL ON *.* to newuser@'%' IDENTIFIED BY '123456';
  1. 新增用户,只有指定ip可以连接mysql
mysql> GRANT ALL ON *.* to newuser@'123.123.123.123' IDENTIFIED BY '123456';
  1. 执行完上述语句,刷新权限表,使配置生效
mysql> flush privileges;
  1. 退出数据库
  2. 重启数据库

三、检查阿里云环境

如何检查及配置参考文档

1. 检查服务器防火墙3306端口是否开放,要保证3306端口开放
  • 防火墙问题,检查防火墙通过规则
sudo iptables -L -n | grep 3306

检查没有的话,新增一条3306的端口允许通过规则,再重新检查iptables

 sudo iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
 sudo iptables -L -n | grep 3306

正常应该如下图所示:
在这里插入图片描述

2. 检查阿里云的安全组规则是否开放了3306端口

这个部分需要参照配置参考文档进行检查。
在这里插入图片描述

四、进行远程连接

在navicat中输入相应的参数进行连接。用户名根据自己的配置变动。以上,便可以成功远程连接。

在这里插入图片描述

五、我踩的坑及一些心得

1. 2003错误

此错误通过3306端口打开得到解决
2003 - can’t connect to mysql server on ‘阿里云服务器ip’ (10038)

2. ip不允许连接问题

这个问题通过前面的给定某用户某ip可以连接得到解决。
在这里插入图片描述

3.一些心得

曾经用过windows的图形界面服务器,远程MySQL连接非常方便,我几乎只需要配置好MySQL的参数就可以进行连接,在一开始使用阿里云服务器Ubuntu1804,按照之前的经验对用户授权,结果我遇到了第一个坑,完全没有办法连接上远程MySQL,这个坑花了很长时间,经过仔细的排查,发现主要是3306端口的问题,最初直接命令添加3306规则,没有实质性的进展,最终在服务器的配置页面(网页)上打开了3306端口才得以解决。
第二个坑是我的ip连不上远程MySQL,经过权限配置得以解决。
总的来说,问题出在环境配置,以及对服务器的了解不够深。

一些参考链接

  1. 阿里云配置MySQL远程连接的详细步骤
  2. 阿里云建立mysql远程访问,ubuntu18.04防火墙3306端口
  3. MySQL ERROR 1045 (28000): Access denied for user ‘bill’@‘localhost’ (using password: YES)这个链接让我意识到我的配置是用户权限出了问题
  4. Host ‘xxx.xx.xxx.xxx’ is not allowed to connect to this MySQL server
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值