在开发基于MySQL的应用时,把主机、端口、用户名、密码等连接信息写死在代码里既不安全也不利于维护。通过独立的配置文件管理数据库连接参数,可以让程序在不同环境灵活切换,同时降低敏感信息泄露风险。下面以常用编程语言为例,说明如何通过配置文件链接MySQL数据库。
一、配置文件的基本结构
无论使用哪种语言,配置文件通常包含以下几项核心内容:
- host:数据库服务器地址,本地一般为127.0.0.1
- port:MySQL服务端口,默认3306
- user:登录用户名
- password:登录密码
- database:要操作的数据库名
二、Python通过配置文件连接示例
我们可以使用INI格式配置文件,配合Python标准库configparser读取,再使用PyMySQL驱动建立连接。
1. 配置文件 db.ini
[mysql] host = 127.0.0.1 port = 3306 user = root password = test_pass database = demo_db
2. Python读取配置并连接
import configparser
import pymysql
# 读取配置文件
cfg = configparser.ConfigParser()
cfg.read('db.ini', encoding='utf-8')
host = cfg.get('mysql', 'host')
port = cfg.getint('mysql', 'port')
user = cfg.get('mysql', 'user')
password = cfg.get('mysql', 'password')
database = cfg.get('mysql', 'database')
# 建立连接
conn = pymysql.connect(
host=host,
port=port,
user=user,
password=password,
database=database,
charset='utf8mb4'
)
try:
with conn.cursor() as cur:
cur.execute('SELECT VERSION()')
print(cur.fetchone())
finally:
conn.close()
三、Java通过properties文件连接示例
Java项目中常使用properties文件保存数据库配置,并利用DriverManager获取连接。
1. 配置文件 db.properties
mysql.host=127.0.0.1 mysql.port=3306 mysql.user=root mysql.password=test_pass mysql.database=demo_db
2. Java读取并连接
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Properties;
public class MysqlConfigDemo {
public static void main(String[] args) throws Exception {
// 加载配置文件
Properties props = new Properties();
InputStream in = MysqlConfigDemo.class.getClassLoader()
.getResourceAsStream("db.properties");
props.load(in);
String url = "jdbc:mysql://" + props.getProperty("mysql.host") + ":"
+ props.getProperty("mysql.port") + "/"
+ props.getProperty("mysql.database")
+ "?useSSL=false&serverTimezone=UTC";
// 获取连接
Connection conn = DriverManager.getConnection(
url,
props.getProperty("mysql.user"),
props.getProperty("mysql.password")
);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT VERSION()");
if (rs.next()) {
System.out.println(rs.getString(1));
}
rs.close();
stmt.close();
conn.close();
}
}
四、使用连接池提升稳定性
频繁创建和关闭连接会消耗资源,生产环境建议使用连接池。以Python的DBUtils为例,可将配置传入连接池:
from dbutils.pooled_db import PooledDB
import pymysql
import configparser
cfg = configparser.ConfigParser()
cfg.read('db.ini', encoding='utf-8')
pool = PooledDB(
creator=pymysql,
host=cfg.get('mysql', 'host'),
port=cfg.getint('mysql', 'port'),
user=cfg.get('mysql', 'user'),
password=cfg.get('mysql', 'password'),
database=cfg.get('mysql', 'database'),
charset='utf8mb4',
maxconnections=10
)
conn = pool.connection()
# 后续使用方式与普通连接一致
conn.close()
五、注意事项
配置文件往往包含敏感信息,应注意设置合理的文件权限,避免提交到公开代码仓库。若使用HTML表单相关配置页面,注意对<input>等标签做转义处理,防止注入问题。通过统一的配置文件链接数据库,能让项目结构更清晰,也更容易适配测试与生产环境。