Ubuntu Python数据库连接怎样配置
导读:Ubuntu 下 Python 数据库连接配置指南 一 准备与安装 更新软件源并安装数据库(按需其一或多项) MySQL:sudo apt update && sudo apt install mysql-server...
Ubuntu 下 Python 数据库连接配置指南
一 准备与安装
- 更新软件源并安装数据库(按需其一或多项)
- MySQL:sudo apt update & & sudo apt install mysql-server
- PostgreSQL:sudo apt update & & sudo apt install postgresql postgresql-contrib
- SQLite:通常系统自带,如需头文件可 sudo apt install sqlite3 libsqlite3-dev
- 安装 Python 驱动(与所用数据库匹配)
- MySQL:pip install mysql-connector-python 或 PyMySQL
- PostgreSQL:pip install psycopg2 或 psycopg2-binary
- SQLite:Python 内置 sqlite3 模块,无需额外安装
- 初始化与安全(如安装的是 MySQL)
- 执行 sudo mysql_secure_installation 完成基础加固(设置 root 密码、移除匿名用户等)
二 数据库与账户配置
- PostgreSQL
- 切换到 postgres 系统用户并进入 psql:sudo -u postgres psql
- 在 psql 中创建数据库与用户并授权:
- CREATE DATABASE yourdatabase;
- CREATE USER yourusername WITH ENCRYPTED PASSWORD ‘yourpassword’;
- GRANT ALL PRIVILEGES ON DATABASE yourdatabase TO yourusername;
- \q
- MySQL
- 登录 MySQL:mysql -u root -p
- 创建数据库:CREATE DATABASE yourdatabase CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- 创建用户并授权(示例仅允许本机):
- CREATE USER ‘yourusername’@‘localhost’ IDENTIFIED BY ‘yourpassword’;
- GRANT ALL PRIVILEGES ON yourdatabase.* TO ‘yourusername’@‘localhost’;
- FLUSH PRIVILEGES;
- 如需远程访问,创建 ‘yourusername’@‘%’ 并配置防火墙/云安全组放行 3306;MySQL 8 常见认证插件问题可用:ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘yourpassword’;
三 连接示例
- MySQL(mysql-connector-python)
- import mysql.connector from mysql.connector import Error try: conn = mysql.connector.connect( host=‘localhost’, port=3306, database=‘yourdatabase’, user=‘yourusername’, password=‘yourpassword’, charset=‘utf8mb4’ ) cur = conn.cursor() cur.execute(“SELECT DATABASE(); ”) print(cur.fetchone()) except Error as e: print(“MySQL error:”, e) finally: if conn.is_connected(): cur.close(); conn.close()
- PostgreSQL(psycopg2)
- import psycopg2 try: conn = psycopg2.connect( dbname=‘yourdatabase’, user=‘yourusername’, password=‘yourpassword’, host=‘localhost’, port=5432 ) cur = conn.cursor() cur.execute(“SELECT version(); ”) print(cur.fetchone()) except Exception as e: print(“PostgreSQL error:”, e) finally: if conn: cur.close(); conn.close()
- SQLite(内置模块)
- import sqlite3 conn = sqlite3.connect(‘yourdatabase.db’) cur = conn.cursor() cur.execute(‘’‘CREATE TABLE IF NOT EXISTS t(id INTEGER PRIMARY KEY, name TEXT)’‘’) conn.commit() cur.execute(“INSERT INTO t(name) VALUES (?)”, (“Alice”,)) for row in cur.execute(“SELECT * FROM t”): print(row) conn.close()
四 常见问题与排查
- Access denied / plugin auth_socket
- 现象:root 本地连不上或仅系统用户可连
- 处理:ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘newpass’; 或创建专用用户并授予目标库权限
- 1044 Access denied for user
- 现象:指定了数据库名就连不上
- 处理:GRANT ALL PRIVILEGES ON db_name.* TO ‘user’@‘host’; FLUSH PRIVILEGES;
- 2002 Can’t connect to MySQL server
- 现象:连接被拒绝或超时
- 处理:确认服务运行 sudo systemctl status mysql;检查端口 3306 监听与防火墙/云安全组;远程连接需使用正确主机与账户
- 字符集乱码
- 处理:库/表/连接统一使用 utf8mb4,连接参数 charset=‘utf8mb4’
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu Python数据库连接怎样配置
本文地址: https://pptw.com/jishu/773254.html
