MySQL在腾讯云中设置开启3306端口

在腾讯云启动python manage.py runserver 报错

django.db.utils.OperationalError: (2003, "Can't connect to MySQL server on '服务器ip' ([Errno 111] Connection refused)")

首先查看端口3306被什么程序占用

netstat -an | grep 3306

显示如下

说明默认被127.0.0.1占用

现在设置MySQL远程访问:

第一步:

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

第二步:

注释掉bind-address = 127.0.0.1


注意:进入vim里面先按 i 然后向下找,找到后#注释,最后按先按ESC,然后shift+:,在按wq!,最后按Enter保存退出。

进入MySQL进行授权:

第一步:

mysql -u root -p

第二步:

mysql > grant all privileges on *.* to 'root'@'%' identified by '你的密码' with grant option;

第三步:

mysql > flush privileges;

最后退出   exit;

重启MySQL:

service mysql restart

<think>我们参考上述引用内容,结合Spring Boot和MyBatis整合MySQL数据库的标准步骤,来配置连接腾讯云MySQL数据库。 主要步骤包括: 1. 添加必要的依赖(Spring Boot Web Starter, MyBatis Starter, MySQL驱动) 2. 在application.properties(或application.yml)中配置数据源,指向腾讯云MySQL实例 3. 配置MyBatis(如指定mapper接口扫描、实体类别名等) 4. 编写实体类、Mapper接口和XML映射文件(或使用注解方式) 具体实施如下: 第一步:添加依赖 在pom.xml中添加以下依赖(注意版本兼容性,这里使用引用中提到的版本,但实际请根据Spring Boot版本选择): - spring-boot-starter-web - mybatis-spring-boot-starter(版本3.0.3) - mysql-connector-j(版本8.0.33) 第二步:配置数据源 在application.properties中配置腾讯云MySQL数据库的连接信息。腾讯云MySQL的连接地址通常是公网IP或域名,端口默认3306(请确保腾讯云安全组放了3306端口,且数据库用户允许远程连接)。 示例配置如下(请替换实际值): ```properties # 服务器上下文路径(可选) server.servlet.context-path=/your-context-path # 数据源配置 spring.datasource.url=jdbc:mysql://[腾讯云MySQL实例的公网IP或域名]:3306/[数据库名]?useSSL=false&serverTimezone=Asia/Shanghai&characterEncoding=utf8 spring.datasource.username=你的数据库用户名 spring.datasource.password=你的数据库密码 # 注意:MySQL 8.x驱动类 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver # MyBatis配置 # 实体类别名包路径 mybatis.type-aliases-package=com.example.demo.entity # mapper.xml文件位置 mybatis.mapper-locations=classpath:mapper/*.xml # 开启SQL日志(可选) logging.level.com.example.demo.mapper=debug ``` 注意: - 如果使用MySQL 8.x,驱动类为`com.mysql.cj.jdbc.Driver`,且需要指定时区(如serverTimezone=Asia/Shanghai)。 - 如果腾讯云MySQL配置了SSL,可以设置useSSL=true,否则建议设置为false(发环境)。 - 确保数据库用户名和密码正确,且该用户有远程连接的权限(在腾讯云控制台可以设置)。 第三步:编写代码 1. 创建实体类(对应数据库表) 2. 创建Mapper接口(使用@Mapper注解或通过@MapperScan扫描) 3. 创建Mapper XML文件(如果使用XML方式)或直接在Mapper接口上使用注解(如@Select) 示例: 实体类(User.java): ```java package com.example.demo.entity; public class User { private Long id; private String name; // 省略getter/setter } ``` Mapper接口(UserMapper.java): ```java package com.example.demo.mapper; import com.example.demo.entity.User; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select; import java.util.List; @Mapper public interface UserMapper { @Select("SELECT * FROM user") List<User> findAll(); } ``` 或者使用XML方式(在resources/mapper/UserMapper.xml): ```xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.example.demo.mapper.UserMapper"> <select id="findAll" resultType="User"> SELECT * FROM user </select> </mapper> ``` 第四步:测试连接 启动Spring Boot应用,检查控制台日志,看是否成功连接数据库,是否有创建DataSource的日志,以及是否出现SQL语句(如果开启了debug日志)。 如果连接失败,请检查: 1. 数据库地址、端口、用户名、密码是否正确 2. 网络是否可达(从部署应用的服务器上测试是否能连接腾讯云MySQL) 3. 数据库用户是否允许远程连接(在腾讯云控制台,可能需要设置白名单,将应用服务器的IP加入白名单) 通过以上步骤,即可在Spring Boot和MyBatis项目中连接腾讯云MySQL数据库。 §§相关问题§§ 1. 如何解决Spring Boot连接MySQL时出现的时区问题? 2. 如何配置MyBatis使用注解方式还是XML方式? 3. 如何提高Spring Boot连接数据库的安全性(比如使用SSL连接)?</think>### 在 Spring Boot 和 MyBatis 中连接腾讯云 MySQL 数据库 以下是详细配置步骤(基于 Spring Boot 3.x 和 MyBatis 3.5+): #### 1️⃣ 添加依赖(`pom.xml`) ```xml <dependencies> <!-- Spring Boot Web --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- MyBatis 整合 --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>3.0.3</version> </dependency> <!-- MySQL 驱动(适配 MySQL 8.x) --> <dependency> <groupId>com.mysql</groupId> <artifactId>mysql-connector-j</artifactId> <version>8.0.33</version> </dependency> </dependencies> ``` #### 2️⃣ 配置数据源(`application.properties`) ```properties # 腾讯云 MySQL 连接配置 spring.datasource.url=jdbc:mysql://[公网IP]:3306/[数据库名]?useSSL=false&serverTimezone=Asia/Shanghai&characterEncoding=utf8 spring.datasource.username=your_username # 腾讯云控制台创建的用户名 spring.datasource.password=your_password # 对应用户密码 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver # MyBatis 配置 mybatis.type-aliases-package=com.example.entity # 实体类包路径 mybatis.mapper-locations=classpath:mapper/*.xml # XML映射文件位置 # 调试日志(可选) logging.level.com.example.mapper=debug # 替换为你的Mapper包路径 ``` > ⚠️ **关键参数说明**: > - **公网IP**:腾讯云 MySQL 实例的公网 IP(需在[云数据库控制台](https://console.cloud.tencent.com/cdb)开启) > - **useSSL=false**:腾讯云 MySQL 默认不强制 SSL > - **serverTimezone**:必须与腾讯云实例时区一致(推荐`Asia/Shanghai`) > - **白名单配置**:需在腾讯云控制台将应用服务器 IP 加入[安全组](https://console.cloud.tencent.com/cdb/security) #### 3️⃣ 实体类与 Mapper 示例 ```java // 实体类 User.java public class User { private Long id; private String name; // getters/setters } ``` ```java // Mapper 接口 UserMapper.java @Mapper public interface UserMapper { @Select("SELECT * FROM users WHERE id = #{id}") User getUserById(Long id); } ``` #### 4️⃣ 启动类添加扫描注解 ```java @SpringBootApplication @MapperScan("com.example.mapper") // 替换为你的Mapper包路径 public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` #### 5️⃣ 验证连接(测试类) ```java @SpringBootTest class DatabaseTest { @Autowired private UserMapper userMapper; @Test void testConnection() { User user = userMapper.getUserById(1L); assertNotNull(user); } } ``` ### 常见问题排查 1. **连接超时**: - 检查腾讯云安全组是否3306 端口 - 确认数据库实例的**公网访问**已启用 - 在服务器执行 `telnet [公网IP] 3306` 测试连通性 2. **认证失败**: - 在腾讯云控制台重置数据库账号密码 - 检查用户名格式是否为 `username@instance-id` 3. **时区错误**: 在 JDBC URL 后添加参数: ```properties &connectionTimeZone=Asia/Shanghai&forceConnectionTimeZoneToSession=true ``` 4. **驱动不匹配**: 确认 MySQL 版本: - MySQL 5.x 使用驱动 `com.mysql.jdbc.Driver` - MySQL 8.x 使用 `com.mysql.cj.jdbc.Driver` > 📌 **最佳实践**:生产环境建议通过**VPC内网连接**(替换公网IP为内网地址),可降低延迟并提升安全性[^1]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值