RDS for MySQL 入门:创建实例并用 Python 连接读写数据
RDS for MySQL 入门
本文介绍在华为云创建 RDS for MySQL 实例并用 Python 连接的流程。
1. 创建实例前的准备
RDS 实例要与 ECS 放在同一区域、同一 VPC,用内网地址访问,延迟最低且无需开放公网。学习阶段选择按需计费的最小通用规格,数据库版本选 MySQL 8.0,字符集使用 utf8mb4。
2. 创建实例
控制台进入“云数据库 RDS”,点击“购买数据库实例”,引擎选 MySQL 8.0,测试可选单机,生产请选主备。网络选择与 ECS 相同的 VPC 和子网。安全组入方向放通 TCP 3306,来源只填 ECS 所在内网网段,不要填 0.0.0.0/0。root 密码需包含大小写字母、数字和特殊字符。创建完成后在“基本信息”可看到内网地址,形如 192.168.x.x:3306。
3. 创建业务库和普通账号
业务代码不要直接使用 root。用 root 登录后执行:
CREATE DATABASE IF NOT EXISTS demo_db DEFAULT CHARACTER SET utf8mb4;
CREATE USER 'demo_user'@'%' IDENTIFIED BY '请替换为强密码';
GRANT SELECT, INSERT, UPDATE, DELETE ON demo_db.* TO 'demo_user'@'%';
4. 在 ECS 上用 Python 连接
先执行 pip install pymysql,再新建 rds_demo.py:
import os
import pymysql
conn = pymysql.connect(
host=os.environ["RDS_HOST"], port=3306,
user=os.environ["RDS_USER"], password=os.environ["RDS_PASSWORD"],
database="demo_db", charset="utf8mb4", connect_timeout=5)
with conn.cursor() as cur:
cur.execute("CREATE TABLE IF NOT EXISTS notes (id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(100) NOT NULL)")
cur.execute("INSERT INTO notes (title) VALUES (%s)", ("第一条数据",))
conn.commit()
cur.execute("SELECT id, title FROM notes ORDER BY id DESC LIMIT 5")
print(cur.fetchall())
conn.close()
连接信息通过环境变量传入,不要把密码写进代码或提交到仓库:先 export RDS_HOST=内网地址 RDS_USER=demo_user RDS_PASSWORD=你的密码,再运行 python3 rds_demo.py。
5. 常见问题
连接超时:检查安全组是否放通 3306、ECS 与 RDS 是否同一 VPC、实例状态是否正常。Access denied:检查账号主机范围、密码和库权限。中文乱码:确认库、表、连接都使用 utf8mb4。
6. 运维建议
开启自动备份并设置保留天数;通过参数模板调整 max_connections 等参数;在监控中关注 CPU、连接数和磁盘使用率;学习结束后及时删除实例,避免持续计费。
- 点赞
- 收藏
- 关注作者
评论(0)