腾讯云服务器 MySQL 远程连接设置

问题说明

使用 MySQL GUI 连接腾讯云的 MySQL 服务器连接失败,经查是由三个原因引起的:

  • 云服务器未配置安全组,开通 3306 端口。
  • 数据库默认只允许本地连接,拒绝远程连接。
  • 所使用 root 账号无远程连接权限,需要设置权限,或新建账号用于远程连接。

解决方法和步骤

创建远程连接账号,给 root 开通远程连接权限

  • 登录 MySQL
mysql -u root -p
  • 查看当前 MySQL 账户
SELECT `user`,`host` FROM mysql.user;

输出:


+------------------+-----------+

| user | host |

+------------------+-----------+

| debian-sys-maint | localhost |

| mysql.session | localhost |

| mysql.sys | localhost |

| root | localhost |

+------------------+-----------+
  • 创建新用户
CREATE USER 'username'@'%' IDENTIFIED BY 'password';

注意:@ 左边是用户名,右边是域名、IP 和 %,表示可以访问 mysql 的域名和 IP,% 表示外部任何地址都能访问。

  • 给新用户和 root 赋值所有权限
-- 给新用户权限
GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' IDENTIFIED BY 'password';
-- 给 root 用户权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password';
-- 或
UPDATE USER SET `host`='%' WHERE `user`='root';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password';

出于严格的安全考虑的话,生产环境请将 % 换成特定的 IP。

查看修改后账户信息:

SELECT `user`,`host` FROM mysql.user;

file

  • 立即刷新权限
FLUSH PRIVILEGES;

更改 MySQL 配置,允许远程连接

MySQL 无法连接的可能原因是服务器防火墙未放开 3306 端口,或 MySQL 服务器禁止远程连接了。

  • 查看 3306 端口是否开放
netstat -an | grep 3306
tcp6       0      0 127.0.0.1:3306                 0.0.0.0:*                    LISTEN

如上表示 3306 端口并未打开。进入 MySQL 配置目录:/etc/mysql/mysql.conf.d/,编辑配置文件:

cd /etc/mysql/mysql.conf.d
sudo vim mysqld.cnf

MySQL 默认只允许本地服务器访问,注释以下配置:

# bind-address = 127.0.0.1

保存并退出,然后重启 MySQL 服务:

sudo service mysql stop
sudo service mysql start

设置腾讯云安全组,开放 MySQL 3306 端口

file
file

添加如下规则:
file

添加完成后关联服务器实例即可。

使用 GUI 工具连接 MySQL

至此,就可以成功连接 MySQL 了~

这里服务器系统是 Ubuntu,MySQL 的配置路径也是默认的,根据实际情况处理。

本作品采用《CC 协议》,转载必须注明作者和本文链接
好看的脸蛋,一米六七
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
讨论数量: 7

如果是生产环境,最好内网连接,这样开放出来容易被攻击。本地开发还是用本地的库,没必要为了连接就开放所有权限。

6年前 评论

@Littlesqx 自己的站点,主要还是为了自己方便 :sweat_smile:

6年前 评论
萧晔离

用的阿里云的RDS,最近站点一直出数据库连接错误,刷新10次有4次左右连接数据库失败... 提了工单让我在服务器上抓3306端口的包和我说一切正常,让我改成长连接试试...

6年前 评论
ThinkQ

可以安装个phpmyAdmin 走的80端口。

6年前 评论

@萧晔离 连接后一段时间没操作会断开么?

6年前 评论

数据库大部分默认配置都是禁止远程连接的 :see_no_evil:

6年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!