在 CentOS 上让 Python 连上数据库,核心其实只有两件事:先把 MySQL 服务和账号权限准备好,再让 Python 通过正确驱动发起连接。下面按实际操作顺序整理一遍,并把每一步最容易出错的地方一并说明,方便你在本地开发或测试环境里快速判断问题出在哪。
安装并启动 MySQL 服务
第一步先在 CentOS 上安装 MySQL 服务器。原文示例直接使用 yum:
sudo yum install mysql-server
安装完成后,启动服务并设置为开机自启:
sudo systemctl start mysqld
sudo systemctl enable mysqld
这一步的目标很明确:先确认数据库服务已经能在系统里正常运行。后面 Python 无法连接时,最先要回头检查的往往也是这里。
创建数据库与专用用户
服务启动后,使用 root 用户进入 MySQL,创建一个独立的数据库和对应账号。相比直接混用高权限账户,这样的做法权限更清晰,也更适合后续维护。

mysql -u root -p
进入 MySQL 命令行后,执行以下语句:
CREATE DATABASE mydb;
CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypassword';
GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
其中,mydb、myuser 和 mypassword 都可以按实际需求调整,但后续 Python 连接代码里的配置必须与这里保持一致。
为什么建议单独创建用户
如果只是为了验证连接,很多人会直接用管理员账户测试。但在实际使用里,给应用分配专用数据库和专用用户更稳妥:一方面便于控制权限范围,另一方面排查连接问题时也更容易定位到底是认证失败、库名错误,还是 SQL 权限不足。
安装 Python MySQL 驱动
MySQL 服务准备好之后,Python 还需要一个驱动库才能与数据库通信。原文推荐的是 mysql-connector-python:
pip install mysql-connector-python
这一步完成后,Python 才能通过 import mysql.connector 发起连接。原文也提到,如果你更习惯其他驱动,比如 pymysql,思路是一样的,只是导入方式和连接代码会略有差异。
编写并验证 Python 连接代码
驱动安装完成后,可以直接写一个最小脚本测试数据库连接。下面保留原有示例代码:

import mysql.connector
# 连接数据库
cnx = mysql.connector.connect(
host="localhost",
user="myuser",
password="mypassword",
database="mydb"
)
# 创建游标
cursor = cnx.cursor()
# 执行SQL查询
query = "SELECT * FROM your_table_name"
cursor.execute(query)
# 获取查询结果
for row in cursor.fetchall():
print(row)
# 关闭游标和连接
cursor.close()
cnx.close()
这里有几个关键字段不能写错:
host="localhost":表示连接本机 MySQL。user="myuser"、password="mypassword":要与前面创建的账号完全一致。database="mydb":要指向刚刚创建的数据库。your_table_name:需要替换成实际存在的数据表名。
如果脚本能正常执行并返回结果,说明从数据库服务、账号权限到 Python 驱动这一整条链路都已经打通。
为什么用一次简单查询来验证
单纯“连接成功”并不代表配置完整可用。加上一条 SELECT * FROM your_table_name,可以顺手验证三件事:数据库能否登录、目标库是否存在、当前用户是否对目标表具备读取权限。这比只写连接代码更容易暴露真实问题。
运行脚本与常见报错排查
脚本写好后,直接在终端运行:

python your_script.py
如果一切正常,终端会打印出查询到的数据。若运行失败,原文给出的几个排查方向仍然最实用:
- 用户名、密码是否与创建时一致。
- 数据库名是否写对。
- 目标表名是否真实存在。
- MySQL 服务是否已经启动。
对于本地开发或测试环境,这套流程通常已经够用。至于防火墙配置、SSL 连接等内容,更多是面向远程访问或生产环境时再补充考虑的问题。













