腾讯云Ubuntu轻应用服务器:添加规则开放了3306 TCP,外部客户端仍不能访问mysql

四年ECS老用户,记一次很基础的问题解决流程。

问题描述

外部客户端访问mysql数据库,测试链接卡在connecting main不动。

初步排查

 - ping IP可通

 - telnet IP 3306不通

所以原因很简单:无法访问3306端口

配置排查

1. 已确认在腾讯云页面设置了3306端口向0.0.0.0/0开放TCP协议

2. 已确认端口正在被监听(mysqld)

root@node:~$ netstat -nltp | grep 3306
Proto Recv-Q Send-Q Local Address    Foreign Address    State      PID/Program name
tcp        0      0 127.0.0.1:33060  0.0.0.0:*          LISTEN     -
tcp6       0      0 127.0.0.1:3306   0.0.0.0:*          LISTEN     -

3. 已确认操作系统防火墙没有额外的拦截设置(甚至都没开)

root@node:$ ufw status
Status: inactive

测试仍然连接不上,正准备向售后寻求《技 术 支 持》时,从注意事项中看到了一条:

上面第2点执行netstat确认端口监听情况时漏了一个细节,local address显示127.0.0.1:3306,即只允许本机访问。所以当下问题明显是要设置3306向0.0.0.0开放。

解决过程

修改配置文件:/etc/mysql/mysql.conf.d/mysqld.cnf,把bind-address=127.0.0.1注释掉

# If MySQL is running as a replication slave, this should be
# changed. Ref https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_tmpdir
# tmpdir                = /tmp
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#bind-address           = 127.0.0.1
mysqlx-bind-address     = 127.0.0.1

重启mysqld

/etc/init.d/mysql restart

再次检查3306的netstat

root@node:~/# netstat -an | grep 3306
tcp        0      0 127.0.0.1:33060         0.0.0.0:*               LISTEN
tcp6       0      0 :::3306                 :::*                    LISTEN

显示三个冒号:::说明已对0.0.0.0公开。再次通过客户端访问mysql,这次换了个报错:

x.x.x.x(IP) is not allowed to connect to this MySQL server

这次的原因是mysql内部的问题,没有设置允许外部机器访问,通过修改系统表解决:

mysql> use mysql;
Database changed

mysql> select host from user where user='root';
+-----------+
| host      |
+-----------+
| localhost |
+-----------+
1 row in set (0.00 sec)

mysql> update user set host = '%' where user='root';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> select host from user where user='root';
+------+
| host |
+------+
| %    |
+------+

将user表中root的host改为“%”后,即可允许所有外部客户端访问。

测试后再次遇到新的报错:

Public Key Retrieval is not allowed

原因是当时设置驱动属性把useSSL给改为false了,重新设回useSSL=true即可。


再次测试链接,这次终于连上了。


参考&鸣谢

连接MySQL报错,is not allowed to connect to this MySQL server_Gzzz__的博客-CSDN博客

远程连接访问mysql_mysql 只监听 127.0.0.1 3306-CSDN博客

Linux下MySQL启动、停止、重启的几种方式_linux 重启mysql-CSDN博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
腾讯云应用服务器上安装Samba,用于文件共享服务,通常涉及到几个步骤。Samba是一个开源软件,它允许Linux服务器充当Windows网络中的文件和打印机服务器。以下是安装Samba的基本流程: 1. 登录到您的腾讯云应用服务器,使用SSH客户端(如 PuTTY 或者通过云控制台的安全组设置中使用终端)。 2. 安装必要的包: ``` sudo apt-get update sudo apt-get install samba samba-common-bin samba-client ``` 3. 创建一个Samba共享目录,例如 `/var/samba/share`,并给予适当的权限: ``` sudo mkdir /var/samba/share sudo chown nobody:nogroup /var/samba/share sudo chmod 775 /var/samba/share ``` 4. 编辑 Samba 的配置文件 `smb.conf`。这个文件通常位于 `/etc/samba/smb.conf`。使用文本编辑器打开,比如 `nano`: ``` sudo nano /etc/samba/smb.conf ``` 在文件中添加或修改共享的参数,例如: ```ini [share] path = /var/samba/share browseable = yes read only = no create mask = 0775 directory mask = 0775 comment = Shared Files guest ok = no require user = <your_username> ``` 5. 保存并关闭文件后,更新配置并重启Samba服务: ``` sudo smbd restart ``` 6. 如果需要让外部网络访问此共享,确保防火墙规则允许TCP端口139(SMB/CIFS的共享通信端口)和445(SMB2/NT LAN Manager)的出站流量,可以通过 `ufw` 或者云安全组设置来调整。 完成以上步骤后,您应该可以在同一局域网内或者特定的IP地址范围内访问Samba共享。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值